После того, как время записи истечет (примерно 2,5 мс для Vcc = = 5 В и 4 мс для Vcc = 2,7 В), бит EEWE очищается аппаратно. Программист может проверять этот бит и ожидать его установки в ноль перед тем, как записывать следующий байт. При установке EEWE микроконтроллер останавливается на два цикла перед исполнением следующей команды.
Бит 0 — EERE — разрешение чтения из EEPROM. Сигнал EERE является стробом чтения из EEPROM. После установки нужного адреса в регистре EEAR должен быть установлен бит EERE. После того как бит EERE будет аппаратно очищен, затребованные данные будут находиться в регистре EEDR. Чтение EEPROM занимает одну команду и не требует отслеживания бита EERE. После установки бита EERE микроконтроллер останавливается на 4 цикла перед тем, как будет выполнена следующая команда. Перед чтением пользователь должен проверить состояние бита EEWE. Если изменять содержимое регистров EEPROM во время операции записи в EEPROM, запись в ячейку памяти прерывается и результат операции записи становится неопределенным.
2.8. Универсальный асинхронный приемопередатчик
Микроконтроллер AT90S2313 имеет встроенный универсальный асинхронный приемопередатчик (UART).
Основные характеристики UART:
• генерация произвольных значений скорости;
• высокая скорость даже при низких тактовых частотах;
• 8 или 9 битов данных;
• фильтрация шума;
• определение переполнения;
• детектирование ошибки кадра;
• определение неверного стартового бита;
• три раздельных прерывания — завершение передачи, очистка регистра передачи и завершение приема.
Структурная схема узла передачи данных UART показана на рис. 2.39.
Рис. 2.39.
Передача данных инициируется записью передаваемых данных в регистр ввода/вывода данных UART — UDR. Данные пересылаются из UDR в сдвиговый регистр передатчика, когда:
• новый символ записывается в UDR после того, как был выдвинут стоповый бит для предыдущего символа. При этом сдвиговый регистр загружается сразу;
• новый символ записывается в UDR до того, как выдвинут стоповый бит для предыдущего символа. При этом сдвиговый регистр записывается сразу после того, как будет выдвинут стоповый бит предыдущего символа.
При этом в регистре состояния UART — USR устанавливается бит UDRE — признак очистки регистра данных. Когда этот бит установлен, UART готов к приему следующего символа. При перезаписи UDR в 10(11) — разрядный сдвиговый регистр бит 0 сдвигового регистра обнуляется (стартовый бит), а бит 9 или 10 устанавливается (столовый бит). Если выбрано 9-битовое слово данных (установлен бит CHR9 в регистре UCR), бит ТХВ8 из UCR переписывается в 9-й бит сдвигового регистра передатчика.
После тактового импульса, следующего с частотой передачи, стартовый бит выдвигается на вывод TXD. Затем выдвигаются данные, начиная с младшего бита. После того как выдвинут стоповый бит, в сдвиговый регистр загружаются новые данные, если они были записаны в UDR во время передачи. При загрузке устанавливается бит UDRE. Если до выдвижения стопового бита в регистр UDR не поступают новые данные, UDRE остается установленным до последующей записи UDR. Если новые данные не поступили и на выводе TXD появляется стоповый бит, в регистре USR устанавливается флаг окончания передачи — ТХС.
Установка бита TXEN в UCR разрешает работу передатчика. При очистке бита TXEN вывод PD1 можно использовать для ввода/вывода данных. Если бит TXEN установлен, передатчик UART подключен к выводу PD1 независимо от установки бита DDD1 в регистре DDRD.
Структурная схема узла приема данных UART показана на рис. 2.40.
Рис. 2.40.
Логическая схема приемника обрабатывает сигнал на выводе RxD с частотой в 16 раз больше скорости передачи (для обработки одного бита принимаемой последовательности производится 16 выборок входного сигнала). В состоянии ожидания одна выборка логического нуля интерпретируется как спадающий фронт стартового бита, после чего запускается последовательность обнаружения стартового бита. Если в первой выборке сигнала обнаружен нулевой отсчет, приемник обрабатывает 8, 9 и 10 выборки сигнала на выводе RXD. Если хотя бы две и? трех выборок равны логической единице, стартовый бит считается шумом и приемник ждет следующего перехода из 1 в 0.
Если обнаружен стартовый бит, начинается обработка битов данных. Решение об уровне данных также производится по 8, 9 и 10 выборкам входного сигнала, уровень входного сигнала определяется по равенству двух выборок. После того как уровень данных определен, данные вдвигаются в сдвиговый регистр приемника.