Главная страница Комбинированное использование портов Многие модели микроконтроллеров подсемейства PIC 16СХХ {щ пример, 16С62,16С63,16С64,16С65,16С73и 16С74) помимо РСпод! держивают еще одну стандартную и погг)лярную шину SPI, KOTopj позволяет ос}тцествлять быструю передачу данных. В этой книге да. ная шина рассматриваться не будет. Отметим только, что поддерживающая интерфейс PC программ крайне проста: она должна задать формат (конфигурацию) обмец и определить направление передачи (запись или чтение). Остальное реализуется аппаратно. Во всех других Р1С-микроконтроллерах под-семейства 16СХХ такой интерфейс может быть реализован только программно. Это будет показано на примере взаимодействия PIC 16СХХ с микросхемой энергонезависимой памяти, имеющей последовательный интерфейс (SERIAL EEPROM), и микросхемой аналого-цифрового преобразователя. Кроме того, вы можете обратиться к главе 5, где среди примеров применений PIC 16С54 есть схема, использующая шину PC. ЭНЕРГОНЕЗАВИСИМАЯ ПАМЯТЬ С ПОСЛЕДОВАТЕЛЬНЫМ ИНТЕРФЕЙСОМ Поскольку в книге рассказывается преимущественно о PIC-микро-контроллерах фирмы Microchip, то использование энергонезависимой памяти с последовательным интерфейсом мы рассмотрим на примере ИС SERIAL EEPROM типа 93С56, выпускаемой также фирмой Microchip. Речь идет об электрически программируемой и стираемой памяти. Вы сможете использовать данный пример для всех приложений, где потребуется, чтобы данные сохранялись при выключении питания. Память этого типа имеет четырехпроводный интерфейс, включающий следующие линии: ♦ CS - выбор микросхемы; ♦ CLK - тактирование обмена; ♦ DI - вход данных; ♦ DO - выход данных. Можно свести количество линий к трем (рис. 3.36), соединяя и DO через резистор, который не догг)скает короткого замыкаНИ линий DO и RAO во время считывания памяти. Считьшание памяти осуществляется со скоростью до 2 Мбит/с. 3 пись и стирание, напротив, требуют значительно больше времеНИ Ikfi 93LC56 MCLR 0SC2 Vss Vdd RBO RBI RB2 RB3 RB7 RB6 RB5 RB4
4=Zr -CZb -CZb -CZ> 8x470fi LEDs -CZ]- Рис. 3.36 Вэаимодейавие РЮмикроконтроллера с ИС SERIAL EEPROM поскольк) выполняются внутренним автоматом, реализующим достаточно сложный алгоритм и в том числе формирующим внутри микросхемы достаточно высокие напряжения. Для стирания или за-Ш1СИ одного байта требуется 2 мс. В течение этого времени микросхема не может выполнять никаких других операций. Процесс записи и стирания индицируется н)левым уровнем напряжения на линии Do. В листинге 3.11 представлены все базовые подпрограммы, необходимые для диалога с данным устройством (считывание, запись, стирание), и две подпрограммы, реализующие специальные операции: разрешение записи/стирания и запрет записи/стирания. Чтобы обеспечить безопасность данных, в момент подачи напряжения питания включен режим запрета записи/стирания. Если вы Хотите осуществить запись или стирание, то сначала систему нужно вывести из этого режима, что выполняет подпрограмма ЕЕпаЫе. Ког-fla операция записи будет завершена, систему необходимо вернуть Первоначальное состояние, для чего предназначена подпрограмма При реализации всех операции основной является noflnporpaNijj Shout, которая позволяет выводить в последовательном виде данны содержащиеся в регистре temp. Длина слов передаваемых Данны может составлять 8 или 16 бит и зависит от способа организацц памяти. Помимо данных передаются коды команд (3 бита) и адре (8 бит). Длина текущей посылки определяется переменной clocks которая указывает необходимое количество тактов передачи. Эта профамма априори подходит для большинства микросхем пдщ. ти с аналогичным последовательным интерфейсом, но разные типы микросхем могут иметь различную продолжительность циклов записи и стирания, различную разрядность адресов, различные форматы дан-ных. Поэтому некоторые программные константы придется изменить. Листинг 3.11 ; Управление EEPROM с последовательным интерфейсом. ; Соответствует инструкции по применению фирмы Parallax. ; Эта программа содержит подпрограммы, необходимые для управления ; SERIAL EEPROM типа 93С56 или аналогичными. ; Она заполняет все ячейки памяти одинаковыми данными, : которые индицируются светодиодами, подключенными к порту В. D = ra.O ; Линии DI и DO EEPROM. CLK = ra.1 ; Линия CLK EEPROM. CS = ra.2 ; Линия выбора микросхемы CS ; (активный логический уровень - высокий). ; Определение кодов команд памяти. При необходимости ; эту часть надо изменить в соответствии с типом используемой памяти. ROP = 192 ; Считывание. WROP= 160 ; Запись. EWEN = 152 ; Разрешение записи и стирания. EWDS = 128 ; Запрет записи и стирания. ERAS = 224 ; Стирание одного байта. ERAL = 144 ; Стирание всей памяти. WRAL = 136 ; Заполнение всех ячеек памяти одним и тем же байтом. ; Определение переменных величин. Определение используемого PIC. devicepicl6c54,xt osc,wdt off,p rotect off reset start
Эта подпрограмма используется всеми остальными. Она осуществляет выдачу сообщений в последовательной форме на вход D EEPROM. Перед выводом информация должна быть помещена в temp, число сдвигов - в clocks, CS = 1, CS = О в конце операции.
:read
clrb CS ret Запрет доступа. Возврат. . стирание ЕЕгазе ячейки по адресу EEaddr. После стирания в ячейке окажется байт FFh.
. Стирание 256 байт EEPROM (всей памяти). EEwipe setb CS ; Разрешаем доступ к EEPROM. mov temp,#ERAL ; Код операции записи в temp, mov clocks,#12 ; Формат посылки - 12 бит. call Shout ; Пересылка, clrb CS ; Запрет доступа, ret ; Возврат. ; Запись байта, содержащегося в EEdata, во все ячейки памяти. Подпрограмма запрета записи в памяти. Edisbl setb CS mov clocks, #12 mov temp, #EWDS call Shout clrb CS ret Разрешаем доступ к EEPROM. Формат посылки - 12 бит. Код операции EWDS помещаем в temp. Пересылка. Запрет доступа. Возврат. Запись байта из EEdata по адресу, содержащемуся в EEaddr.
; Ожидание завершения выполнения текущей команды.
|
© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования. |