Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





По этой процедуре устройство должно выдать через UART сначала подряд числа от 256 до нуля (вторая половина записанного блока), затем числа от нуля до 256 (первая половина блока, которую мы при чтении сохранили на время в SRAM). Отметим, что отформатированная (обычно в файловой системе FAT 16) для потребительских целей карта после такого издевательства будет, конечно, испорчена. Однако восстановить ее не составляет труда: можно либо просто отформатировать ее заново средствами Windows, либо применить одну из утилит форматирования, которые доступны на сайтах производителей.

ГЛАВА 12
Интерфейс TWI (l2C) и его практическое использование

В случае TW1 (иное наименование стандартизированного фирмой Philips интерфейса 12С), к рассмотрению которого мы сейчас перейдем, использовать программную имитацию в большинстве случаев удобнее, чем штатные средства. В принципе TWI устроен так же, как UART, но в нем есть несколько различающихся состояний ("старт", "стоп", передача от мастера или к мастеру и т. д.), так что протокол обмена все равно приходится организовывать, что называется, "ручками", подобно SPI. Кроме того, в TWI из-за наличия всего одной линии "туда и обратно" (да еще и с поддержкой многих устройств, подключенных к ней), приходится организовывать протокол так, чтобы исключить электрические конфликты, и процедура в целом оказывается довольно сложной, так что "аппаратность" тут отходит на второй план — мы будем применять программную имитацию, которая, кроме всего прочего, не привязана к модели МК и позволяет задействовать любые удобные выводы.

Характерно, что в книге [2], например, на описание модуля TWI отведено 33 страницы, в то время как на SPI — всего 7. Если бы разработчикам удалось осуществить аппаратный протокол на уровне "послать байт" — "принять байт", как в UART, где не приходится думать про все эти стартовые-стоповые биты (см. главу 13), то модуль TWI сильно облегчал бы жизнь программистам, но поскольку все равно необходимо возиться со своевременной подачей стартовых и стоповых уровней, квитированием и задержками (12С, кроме всего прочего, работает достаточно медленно), то аппаратный способ имеет лишь одно однозначное преимущество перед программным: модуль TWI может "будить" контроллер при нахождении в любом из режимов энергосбережения.

Базовый протокол 12С
Предположим, у нас есть несколько устройств, подключенных параллельно к двум линиям (не считая, естественно, "земли"). По одной из них (SCL) всегда передаются синхронизирующие импульсы, а по второй — собственно данные (SDA). Информация в каждый данный момент времени передается только одним устройством и только в одну сторону. С помощью ГС можно (теоретически) соединить до 128 устройств, так, как показано на рис. 12.1. "Подтягивающие" резисторы должны иметь номинал порядка единиц или десятков килоом (чем выше скорость передачи, тем меньше). В качестве их, естественно, можно использовать встроенные резисторы выходных линий портов AVR.



     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru