x51-совместимые микроконтроллеры фирмы ATMEL

Журнал "Радио", номер 1, 1999г.
Автор: А.Фрунзе, г. Москва

Продолжение. Начало см. в "Радио", 1998, #11,12.

    AT89C55 И AT89LV55

    AT89C55 И AT89LV55 - стандартные микроконтроллеры, практически полностью аналогичные 8xC54 и 8xL54 (если не считать использования Flash-памяти вместо cтираемого УФ облучением ПЗУ, их единственное отличие - несколько необычный его объем - 20 Кбайт). Назначение выводов этих контроллеров такое же, как AT89C51. В состав подсемейства входят 34 контроллера: AT89C55-12AC, AT89C55-12JC, AT89C55-12PC, AT89C55-12QC, AT89C55-12AI, AT89C55-12JI, AT89C55-12PI, AT89C55-12QI, AT89C55-12AA, AT89C55-12JA, AT89C55-12PA, AT89C55-12QA; AT89C55-16AA, AT89C55-16JA, AT89C55-16PA, AT89C55-16QA; AT89C55-20AC, AT89C55-20JC, AT89C55-20PC, AT89C55-20QC, AT89C55-20AI, AT89C55-20JI, AT89C55-20PI, AT89C55-20QI; AT89C55-24AC, AT89C55-24JC, AT89C55-24PC, AT89C55-24QC; AT89LV55-12AC, AT89LV55-12JC, AT89LV55-12PC, AT89LV55-12AI, AT89LV55-12JI, AT89LV55-12PI.

    Все микроконтроллеры содержат ОЗУ объемом 256 байт, три таймерасчетчика (16 бит), восемь векторов прерываний, один последовательный и четыре параллельных порта вводавывода. Тактовая частота - 12, 16, 20 или 24 МГц. Выпускаются контроллеры в 44-выводных корпусах TQFP (буквакод в обозначении - A), PQFP (Q), PLCC (J) и 40-выводном PDIP (P). Рабочий интервал температур - от 0 до +70 о C (буква-код в обозначении - C), от -40 до +85 о C (I), от -40 до +125 о C (A). Допустимые пределы изменения напряжения питания - 2,7...6 В (для AT89LV55-12AC, AT89LV55-12JC, AT89LV55-12PC) и 4...6 В (для всех остальных).

    Необходимо отметить более высокую, чем у MCS51, нагрузочную способность выводов AT89C55 и AT89LV55, позволяющую соединять с каждым из них до шести стандартных TTL-входов. Максимальный выходной ток может достигать 10 мА, при этом суммарный ток через выводы порта 0 не должен превышать 26, а через выводы остальных - 15 мА. Максимальный суммарный ток через все выводы - 71 мА. Все сказанное выше о предельных значениях напряжений на входах (относительно общего провода) и рабочего напряжения для AT89C51, AT89C52, AT89LV51, AT89LV52, а также потребляемого в различных режимах тока для AT89C51, AT89C52 распространяется и на AT89C55, AT89LV55. Зависимость потребляемого AT89LV55 тока от напряжения питания и частоты аналогична приведенной на рис.2 для AT89LV51, AT89LV52.

    Распространяется на AT89C55 и все сказанное о сигнале ALE при рассмотрении AT89C51, AT89C52. Возможность подавления вывода сигнала ALE предусмотрена и в AT89LV55.

    ПРОГРАММИРОВАНИЕ AT89C55 И AT89LV55

    Как и AT89C51, AT89C52, контроллеры AT89C55 выпускаются рассчитанными на программирование 5- или 12-вольтными импульсами (необходимость использования импульсов пониженной амплитуды отображается во второй строке маркировки на корпусе добавлением - через дефис - цифры 5). Сигнатурные байты для первых следующие: (030H) - 1EH, (031H) - 55H, (032H) - 05H. Вторые отличаются содержимым байта (032H) - в нем записано не 05H, а 0FFH. AT89LV55 пока выпускаются только в расчете на программирование 12-вольтными импульсами. Их сигнатуры - (030H) - 1EH, (031H) - 65H, (032H) - 0FFH.

    Контроллеры поставляются потребителю с очищенным ПЗУ. Цикл стирания аналогичен описанному для AT89C51, AT89C52 и AT89LV51, AT89LV52.

    Занесение в ПЗУ программного кода в целом осуществляется также аналогично AT89C51, AT89C52 и AT89LV51, AT89LV52. Но есть и одно существенное отличие. Поскольку рассматриваемые контроллеры имеют ПЗУ объемом больше 16 Кбайт, их адресная шина насчитывает 15 линий - от A0 до A14. При обращении к внешней памяти программ младший байт адреса выводится через порт P0 и должен фиксироваться регистром-защелкой в момент спада из 1 в 0 сигнала ALE. Старшие семь адресных линий выводятся через P2.0-P2.6. Логично предположить, что при программировании адресная информация должна поступать в микроконтроллер через те же линии портов P0 и P2. Но поскольку при программировании вывод P2.6 задействован, через него нельзя ввести в контроллер адресную линию A14 (подобно тому, как это осуществлено у Intel 87C58). Поэтому разработчики Atmel предусмотрели подачу A14 при программировании через младший разряд порта P3 (P3.0).

    Временные диаграммы сигналов циклов программирования и верификации для 5- и 12-вольтных версий контроллеров идентичны рассмотренным выше для AT89C51, AT89C52 и AT89LV51, AT89LV52. Напомним, что для корректной верификации выводы порта P0 должны быть соединены с проводом питания через резисторы сопротивлением 10 кОм. Естественно, при установленных битах защиты верификация и чтение содержимого ПЗУ невозможны. Допустимые длительности импульсов и задержек такие же, как и для AT89C51, AT89C52, AT89LV51, AT89LV52.

    При программировании 12-вольтных версий напряжение Upp должно находиться в пределах 11,5...12,5 В, при этом потребляемый контроллером ток не превышает 0,9 мА.

    AT89C55 и AT89LV55 имеют режимы DATA Polling и Ready/Busy, подробно рассмотренные при описании AT89C51, AT89C52 и AT89LV51, AT89LV52, и двухуровневую систему приоритетов прерываний. Иных отличий от Intel-прототипов у них нет.

    AT89S53

    Микроконтроллеры этого подсемейства существенно отличаются от предшественников, о чем свидетельствует буква S в условном обозначении. Она говорит о том, что в их состав включено новое устройство - SPI (Serial Peripheral Interface - последовательный периферийный интерфейс, который может использоваться для программной загрузки). Всего в этом подсемействе 12 модификаций: AT89S53-16AA, AT89S53-16JA, AT89S53-16PA, AT89S53-24AC, AT89S53-24JC, AT89S53-24PC, AT89S53-24AI, AT89S53-24JI, AT89S53-24PI, AT89S53-33AC, AT89S53-33JC, AT89S53-33PC.

    Назначение выводов аналогично AT89C51, AT89C52.

    Все микроконтроллеры содержат ПЗУ объемом 12 Кбайт, ОЗУ объемом 256 байт, три обычных (16 бит) таймера-счетчика и один аппаратный сторожевой таймер (WDT), девять векторов прерываний, один последовательный и четыре параллельных порта ввода/вывода, SPI. Тактовая частота контроллеров - 16, 20 или 24 МГц, напряжение питания AT89S55-AC, AT89S55-JC, AT89S55-PC - 4,5...5,5, остальных - 4...6 В. Контроллеры выпускаются в 44-выводных корпусах TQFP (первая буква-код во второй части обозначения - A), PLCC (J) и 40-выводном PDIP (P). Рабочий интервал температур - от 0 до +70 о С (вторая буква-код - С), от -40 до +85 #176 С (I) или от -40 до +105 #176 C (A).

    Нагрузочная способность выводов аналогична AT89C55, AT89LV55. Предельные значения напряжений питания и на входах (относительно общего провода) такие же, как и у AT89C51, AT89C52. Потребляемый ток на частоте 16 МГц при напряжении питания 6 В не превышает 25, в режиме Idle - 6,5 мА, в режиме Power Down - 100 мкА при напряжении 6 и 40 мкА при 3 В. Зависимость потребляемого тока от напряжения питания и частоты для AT89S55 аналогична приведенной на рис. 2.

    Как и в AT89C51, сигнал ALE возможно программно запретить, установив в 1 бит 0 SFR-регистра, находящегося по адресу 8E. При этом сигнал ALE будет появляться лишь при выполнении команд MOVX, MOVC (либо при работе с внешней памятью программ, если она имеется в системе). В остальных случаях на выводе будет присутствовать напряжение высокого уровня.

    Выводы порта P3 выполняют те же альтернативные функции, что и у MCS51. Под выполнение таких функций задействованы и шесть из восьми выводов порта P1, остальные (P1.0 и P1.1), как и у 87C52, обслуживают третий таймерсчетчик. Выводы P1.4-P1.7 обеспечивают работу SPI, при этом первый из них используется для сигнала выбора подчиненного устройства, с которым задающий контроллер будет вести обмен. Как будет показано ниже, обмен по SPI-интерфейсу осуществляется в соответствии с логикой "ведущий-ведомый" ("master-slave", как принято в англоязычной литературе). Если AT89S53 работает в режиме ведомого (slave), то установка ведущим (master) на его входе P1.4 низкого уровня сообщает ему о том, что обмен будет осуществлен именно с ним. Единичный уровень выключает его из процесса обмена. Естественно, ведущий контроллер должен располагать соответствующими аппаратными средствами, управляющими выбором ведомого (например, дешифратором на адресных линиях).

    При работе AT89S53 в режиме ведущего данные выводятся через линию P1.5. По ней же ведомый принимает информацию. Поэтому альтернативная функция P1.5 носит название MOSI (по первым буквам слов Master data Out, Slave data In). Линия P1.6 выполняет обратные функции - работает на прием у ведущего и на передачу у ведомого. Ее наименование - MISO (Master data In, Slave data Out). И наконец, P1.7 используется для тактирования обмена. Тактовые сигналы вырабатываются ведущим устройством и от него передаются всем ведомым. У ведущего P1.7 является выходом тактирования, а у ведомых - входом. Подробнее алгоритм работы SPI описывается ниже.

    AT89S53 имеет аппаратный сторожевой таймер. Будучи разрешенным, он через заданный установками в соответствующем регистре WCON временной промежуток (от 16 до 2048 мс) генерирует сигнал пересброса микроконтроллера. Избежать пересброса можно, если до этого момента установить соответствующим сигналом в 0 содержимое счетчика сторожевого таймера. Обычно для этого разработчики включают в основной цикл программы последовательность команд, обнуляющую счетчик таймера. "Зависание" программы останавливает выдачу этих команд, и через заданный промежуток времени после этой неприятности контроллер пересбрасывается и вновь начинает нормально функционировать.

    Регистровое пространство AT89S53 (рис. 10) расширено в сравнении с предшественниками. Появились три регистра, обслуживающие SPI: SPCR (0D5H), SPSR (0AAH) и SPDR (086H). Сторожевой таймер обслуживается регистром WCON (096H). И наконец, добавлен еще один указатель DPTR (DP1L и DP1H, находящиеся по адресам 084H и 085H соответственно). Переключение с основной регистровой пары на дополнительную и обратно осуществляется битом DPS в регистре WCON.

    Регистры управления SPCR (SPI Control Register) и статуса SPSR (SPI Status Register) описаны соответственно в табл. 3 и 4.

    Последовательный периферийный интерфейс предназначен для быстрого синхронного обмена информацией между контроллером и периферией или между двумя контроллерами. Обмен может быть полностью дуплексным и осуществляться, как описано ранее, с использованием трех линий. Максимальная частота, на которой происходит передача, равна четверти значения частоты генератора (для 24-мегагерцевой версии контроллера - 6 МГц). Возможна установка четырех различных скоростей обмена. Передача может осуществляться как младшим битом вперед, так и старшим. Завершение передачи сопровождается установкой в 1 соответствующего флага.

    Структурная схема SPI-интерфейса микроконтроллера изображена на рис. 11, а схема соединений узлов SPI двух различных устройств - на рис. 12. Запись в регистр данных SPI (SPDR) ведущего узла запускает его тактовый генератор, разрешая прохождение сигналов через делитель частоты. Данные из регистра бит за битом поступают на вывод MOSI ведущего, соединенный с одноименным входом ведомого. Каждый импульс тактовой частоты SCK, вырабатываемый ведущим узлом, сопровождается передачей бита. Ведомый принимает бит со своего входа MOSI и заносит его в свой сдвиговый регистр. Одновременно с этим через выход MISO он бит за битом передает ведущему узлу содержимое своего регистра сдвига, который принимает его по одноименному входу. Таким образом, после прохождения восьми импульсов тактового генератора содержимое сдвиговых регистров ведущего и ведомого обменивается местами. Завершение передачи устанавливает флаг SPIF у ведущего и при взведенных SPIE и ES вызывает соответствующее прерывание.

    Если к одному ведущему узлу подключено несколько ведомых, то перед началом обмена первый должен установить в 0 вход SS (P1.4) того ведомого, который должен принимать информацию. При этом у невыбранных ведомых выводы MOSI и MISO оказываются подключенными к линии как входы, чтобы на линиях не было конфликтов данных.

    Формат передаваемых данных при различных комбинациях битов CPHA и CPOL приведен на рис. 13 и 14.

    Регистр управления сторожевым таймером описан в табл. 5. Таймер выключается после сброса и в режиме Power Down. Запускается он установкой в 1 бита WDTEN, после чего программа должна его периодически сбрасывать, записывая 1 в WDTRST. Отметим, что приведенные в табл. 5 расчетные периоды пересброса могут отличаться от реальных на 25...30 % как в ту, так и в другую стороны.

    Окончание следует






Рекомендуемый контент




Copyright © 2010-2017 housea.ru. Контакты: info@housea.ru При использовании материалов веб-сайта Домашнее Радио, гиперссылка на источник обязательна.