5. После передачи последнего байта данных процесс повторяется с шага 2.
Управление UART
РЕГИСТР ВВОДА/ВЫВОДА UART
0Ch(2Ch) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MSB |
|
|
|
|
|
| LSB | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Физически регистр UDR является двумя отдельными регистрами, доступ к которым происходит по одному адресу. При записи происходит запись в регистр передатчика, при чтении - читается регистр приемника.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRA)
0Bh(2Bh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RXC | TXC | UDRE | FE | OR | - | - | MPCM | |
R | R\W | R | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
Бит 7 - RXC - прием завершен. Этот бит устанавливается в 1 когда принятый символ переписывается из сдвигового регистра приемника в регистр UDR. Бит устанавливается независимо от обнаружения ошибки кадра. Если установлен бит RXCIE в регистре UCR, при установке бита выполняется прерывание по завершению приема символа. RXC сбрасывается при чтении UDR. При использовании приема данных по прерыванию, обработчик прерывания должен читать регистр UDR для сброса RXC, иначе при выходе из прерывания оно будет вызвано снова.
Бит 6 - TXC - передача завершена. Этот бит устанавливается в 1 если символ из сдвигового регистра передатчика (включая стоповый бит) передан, а в регистр UDR не были записаны новые данные. Этот флаг особенно полезен при полудуплексной связи, когда предающее устройство должно перейти в режим приема и освободить линию связи сразу по окончанию передачи. Если установлен бит TXIE в регистре UCR, при установке TXC выполняется прерывания по окончанию передачи. TXC сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того, бит можно сбросить записав в него 1.
Бит 5 - UDRE - регистр данных UART пуст. Этот бит устанавливается в 1 когда данные, записанные в UDR переписываются в регистр сдвига передатчика. Установка этого бита означает, что передатчик готов принять следующий символ для передачи. Если установлен бит UDRIE в регистре UCR, при установке этого бита выполняется прерывание окончания передачи. Бит UDRE сбрасывается при записи регистра UDR. При использовании передачи управляемой прерыванием, подпрограмма обслуживания прерывания должна записывать UDR, чтобы сбросить бит UDRE, иначе при выходе из прерывания оно будет вызвано снова. При сбросе этот бит устанавливается в 1, чтобы проиндицировать готовность передатчика.
Бит 4 - FE - ошибка кадра. Этот бит устанавливается при обнаружении условия ошибки кадра, т.е. если стоповый бит принятого байта равен 0. Бит FE сбрасывается при приеме единичного стопового бита.
Бит 3 - OR - переполнение. Этот бит устанавливается при обнаружении условия переполнения, т.е. когда символ из регистра UDR не был прочитан до того, как заполнился сдвиговый регистр приемника. Этот бит буферирован, т.е. остается установленным до тех пор, пока из регистра UDR не будут прочитаны правильные данные. Бит OR сбрасывается когда принятые данные переписываются в UDR.
Биты 2..1 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаются как 0.
Бит 0 - MPCM - режим мультипроцессорного обмена. Этот бит используется для перехода в режим мультипроцессорного обмена. Этот бит устанавливается когда ведомый процессор ожидает приема адресного байта. Когда ведомый процессор распознает свой адрес он должен сбросить бит MPCM и начать прием данных.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ UART (UСSRB)
0Ah(2Ah) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RXCIE | TXCIE | UDRIE | RXEN | TXEN | CHR9 | RXB8 | TXB8 | |
R\W | R\W | R\W | R\W | R\W | R\W | R | W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Бит 7 - RXCIE - Разрешение прерывания по окончанию приема. Если этот бит установлен (1), установка бита RXC в регистре UCSRA приводит к выполнению прерывания по окончанию приема (при условии что разрешены прерывания).
Бит 6 - TXCIE - Разрешение прерывания по окончанию передачи. Если этот бит установлен, установка бита TXC в UCSRA приводит к выполнению прерывания по окончанию передачи (при условии, что прерывания разрешены).
Бит 5 - UDRIE - Прерывание по очистке регистра данных последовательного порта. Если этот бит установлен, установка бита UDRE в UCSRA приводит к выполнению прерывания по очистке регистра данных UART (при условии, что прерывания разрешены).
Бит 4 - RXEN - Разрешение приемника. При установке этого бита разрешается работа приемника UART. Если приемник выключен, флаги TXC, OR и FE не устанавливаются. Если эти флаги установлены, сброс RXEN не очищает их.
Бит 3 - TXEN - Разрешение передатчика. При установке этого бита разрешается работа передатчика UART. При запрещении работы передатчика во время передачи символа, он продолжает работать пока не будет очищен сдвиговый регистр и не будет передан символ, помещенный в UDR.
Бит 2 - CHR9 - 9-битовые посылки. Если этот бит установлен, принимаемые и передаваемые символы имеют длину 9 бит. Для передачи и приема 9-го символа используются биты RXB8 и TXB8 соответственно. 9-й бит можно использовать как дополнительный стоповый бит или как признак четности.
Бит 1 - RXB8 - Бит 8 принимаемых данных. Если установлен бит CHR9, сюда записывается 9-й бит принятых данных.
Бит 0 - TXB8 - Бит 8 передаваемых данных. Если установлен бит CHR9, отсюда берется 9-й бит передаваемых данных.
ГЕНЕРАТОР СКОРОСТИ ПЕРЕДАЧИ
Генератор скорости передачи это делитель частоты, который генерирует скорости в соответствии с нижеприведенным выражением:
BAUD = Fck / (16*(UBRR+1))
здесь BAUD - скорость передачи (бод)
Fck - частота тактового генератора процессора
UBRR - содержимое регистров UBRRH и UBRR (0...4095)
В следующей таблице приведены значения регистра UBRR и процентное отклонение от стандартной скорости передачи для стандартных частот кварцевых генераторов.
Таблица.18
Скор., бод | 1.0000 MHz | Ош. % | Скор., бод | 1.8432 MHz | Ош. % | Скор., бод | 2.0000 MHz | Ош. % |
2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 25 12 6 3 2 1 1 0 0 0 | 0.2 0.2 7.5 7.8 7.8 7.8 22.9 7.8 22.9 84.3 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 47 23 11 7 5 3 2 1 1 0 | 0 0 0 0 0 0 0 0 33.0 0 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 51 25 12 8 6 3 2 1 1 0 | 0.2 0.2 0.2 3.7 7.5 7.8 7.8 7.8 22.9 7.8 |
Скор., бод | 3.2768 MHz | Ош. % | Скор., бод | 3.6864 MHz | Ош. % | Скор., бод | 4.0000 MHz | Ош. % |
2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 84 42 20 13 10 6 4 3 2 1 | 0.4 0.8 1.6 1.6 3.1 1.6 6.3 12.5 12.5 12.5 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 95 47 23 15 11 7 5 3 2 1 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 103 51 25 16 12 8 6 3 2 1 | 0.2 0.2 0.2 2.1 0.2 3.7 7.5 7.8 7.8 7.8 |
Скор., бод | 7.3728 MHz | Ош. % | Скор., бод | 8.0000 MHz | Ош. % | Скор., бод | 9.2160 MHz | Ош. % |
2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 191 95 47 31 23 15 11 7 5 3 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 207 103 51 34 25 16 12 8 6 3 | 0.2 0.2 0.2 0.8 0.2 2.1 0.2 3.7 7.5 7.8 | 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 | 239 119 59 39 29 19 14 9 7 4 | 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 6.7 0.0 |
РЕГИСТР СКОРОСТИ ПЕРЕДАЧИ (UBRR)
UBRRHI
03h(23h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
|
|
| MSB | - | - | - | |
R | R | R | R | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
UBRR
09h(29h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
|
|
|
|
|
| LSB | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Это 12-разрядный регистр, который задает скорость передачи последовательного порта в соответствии с выражением приведенным выше. В регистре UBRRHI хранятся 4 старших бита, в UBRR - 8 младших бит.
АНАЛОГОВЫЙ КОМПАРАТОР
Аналоговый компаратор сравнивает входные напряжение на положительном входе PD6 (AIN0) и отрицательном входе PD7(AIN1). Когда напряжение на положительном входе больше напряжения на отрицательном, устанавливается бит ACO (Analog Comparator Output). Выход аналогового компаратора можно установить на работу с функцией захвата Таймера/Счетчика1. Кроме того, компаратор может вызывать свое прерывание. Пользова-
тель может установить установить срабатывание прерывания по нарастающему или спадающему фронту, или по переключению.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АНАЛОГОВОГО КОМПАРАТОРА (ACSR).
ACSR
08h(28h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ACD | AINBG | ACO | ACI | ACIE | ACIC | ACIS1 | ACIS0 | |
R\W | R | R | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Бит 7 - ACD - Запрещение аналогового компаратора. Когда этот бит установлен, питание от аналогового компаратора отключается. Для отключения компаратора этот бит можно установить в любое время. Обычно это свойство используется если критично потребление процессора в холостом режиме и восстановление работы процессора от аналогового компаратора не требуется. При изменении бита ACD прерывания от аналогового компаратора должны быть запрещены сбросом ACIE в регистре ACSR. В противном случае прерывание может произойти во время изменения бита.
Бит 6 - AINBG - Выбор напряжения сравнения аналогового компаратора. Когда этот бит установлен, вывод AIN0 подключается к напряжению 1.22 + 0.05В. Когда бит сброшен возобновляется нормальная работа вывода AIN0.
Бит 5 - ACO - Выход аналогового компаратора. Бит ACO непосредственно подключен к выходу аналогового компаратора.
Бит 4 - ACI - Флаг прерывания от аналогового компаратора. Этот бит устанавливается когда переключение выхода компаратора совпадает с режимом прерывания установленным битами ACIS1 и ACIS0. Программа обработки прерывания от аналогового компаратора выполняется если установлен бит ACIE (1) и установлен бит I в регистре состояния. ACI сбрасывается аппаратно при выполнении соответствующего вектора прерывания. Другой способ очистить ACI - записать во флаг логическую единицу.
Бит 3 - ACIE - Разрешение прерывания от аналогового компаратора. Когда установлен этот бит и бит I регистра состояния, прерывания от аналогового компаратора отрабатываются. Если бит очищен (0), прерывания запрещены.
Бит 2 - ACIC - Захват по выходу аналогового компаратора. Если этот бит установлен, функция захвата таймера/счетчика1 управляется выходом аналогового компаратора. При этом выход компаратора подключается непосредственно к схеме обработки захвата, предоставляя удобные средства подавления шума и выбора фронта предусмотренные прерыванием захвата по входу. Когда бит очищен, схема захвата и компаратор разъединены. Чтобы компаратор мог управлять функцией захвата таймера/счетчика1, должен быть установлен бит TICIE1 в регистре TIMSK.
Биты 1,0 - ACIS1, ACIS0 - Выбор режима прерывания аналогового компаратора. Различные установки приведены ниже.
Таблица 19. Установки ACIS1/ACIS0
ACIS1 | ACIS0 | Описание |
0 | 0 | Прерывание от компаратора по переключению выхода |
0 | 1 | Зарезервировано |
1 | 0 | Прерывание от компаратора по спадающему фронту выхода |
1 | 1 | Прерывание от компаратора по нарастающему фронту выхода |
Примечание: При изменении битов ACIS1/ACIS0 прерывания от аналогового компаратора должны быть запрещены сбросом бита разрешения прерывания в регистре ACSR. Иначе прерывание может произойти при изменении битов.
АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ
Основные характеристики:
- разрешение 10 бит
- точность +- 1/2 младшего разряда
- время преобразования 65-260 uS
- 6 мультиплексирумых входов
- работа с полным размахом напряжения
- непрерывный режим или одиночные преобразования
- прерывание по завершению преобразования
- подавление шума в режиме Sleep
AT90S2333/4433 имеют 10-разрядный АЦП последовательного приближения. АЦП подключен к выходу шестивходового мультиплексора. Мультиплексор позволяет подключать на вход АЦП любой из входов порта C. В состав АЦП входит усилитель выборки-хранения, который позволяет сохранять на входе АЦП уровень напряжения постоянный за время преобразования.
АЦП имеет два отдельных вывода питания AVCC и AGND. ФПТВ должен подключаться к GND, напряжение на AVCC не должно отличаться от VCC более чем на +-0.3В. Внешнее опорное напряжение должно подаваться на вывод AREF. Это напряжение должно лежать в пределах AGND-AVCC.
РАБОТА АЦП
АЦП может работать в двух режимах - одиночного преобразования и непрерывном. В режиме одиночного преобразование каждое преобразование инициируется пользователем. В непрерывном режиме АЦП производит непрерывную обработку входного сигнала и обновляет регистр данных АЦП. Переключение режимов осуществляется битом ADFR в регистре ADCSR. Регистр ADMUX выбирает один из шести входов подключаемый ко входу АЦП. Кроме того в качестве входа можно использовать фиксированное опорное напряжение. Работа АЦП разрешается записью логической "1" в бит разрешения АЦП (ADEN в ADCSR). Перед первым преобразованием после разрешения АЦП выполняется одно "пустое" преобразование инициализирующее АЦП. Для пользователя единственное отличие первого преобразования от последующих заключается в том, что оно занимает 25 тактовых импульсов вместо обычных 13.
Преобразование запускается записью логической 1 в бит запуска АЦП - ADCS. Этот бит остается установленным пока идет преобразование и аппаратно сбрасывается, когда преобразование завершается. Если во время преобразования происходит переключение канала, пред переключением АЦП завершает текущее преобразование.
Операция выборки-хранения занимает один цикл после запуска преобразования. Это позволяет пользователю устанавливать номер входного канала одновременно с запуском преобразования Поскольку результат преобразования занимает 10 разрядов, для хранения результата используется два регистра ADCH и ADCL, которые должны быть прочитаны для получения результата. Для защиты данных, чтобы обеспечить чтение результата одного преобразования из обоих регистров используется специальная логика защиты данных.
Этот механизм работает так:
При чтении данных первым должен читаться регистр ADCL. Доступ АЦП к регистру данных блокируется. Это приводит к тому, что если прочитан байт ADCL и преобразование завершилось до того как прочитан регистр ADCH, регистр данных не изменяется и результат преобразования будет потерян. Доступ АЦП к регистру данных разрешается после чтения ADCH. АЦП имеет собственное прерывание, которое выполняется по завершению преобразования. Если доступ АЦП к регистру данных запрещен (между чтением ADCL и ADCH), прерывание вызывается даже если данные потеряны. Предварительный делитель АЦП работает с тактовыми частотами в диапазоне 50-200 kHz. Для полного преобразования АЦП необходимо 13 тактов, т.е. преобразование занимает от 65 до 260 uS. Корректное значение выхода АЦП гарантируется только для тактовых частот не выходящих из приведенного диапазона. Для генерации тактовой частоты АЦП из тактовой частоты процессора выше 100 кГц используются биты ADPS0-ADPS2. Предварительный делитель начинает счет в момент разрешения АЦП установкой бита ADEN в ADCSR. Предварительный делитель продолжает работать до тех пор, пока установлен бит ADEN и непрерывно сбрасывается если бит ADEN сброшен. Функция подавления шумов АЦП Одна из особенностей АЦП - функция подавления шумов, АЦП может осуществлять преобразования в режиме холостого хода, это позволят уменьшить шумы, наводимые ядром процессора. Чтобы воспользоваться этой возможностью, необходимо произвести следующую процедуру:
1. Удостоверьтесь, что АЦП разрешен и не занят преобразованием. Необходимо выбрать режим одиночного преобразования и разрешить прерывания по окончанию преобразования .
ADEN=1
ADSC=0
ADFR=0
ADIE=1
2. Перейти в режим холостого хода. АЦП начнет преобразование после того как остановится процессор.
3. Если за время преобразования не произойдут другие прерывания, по окончанию преобразования процессор выйдет из режима холостого хода и выполнит прерывание по окончанию преобразования.
РЕГИСТР УПРАВЛЕНИЯ МУЛЬТИПЛЕКСОРОМ АЦП – AMUX
07h(27h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | ADCBG | - | - | - | MUX2 | MUX1 | MUX0 | |
R\W | R | R | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Бит 7 - зарезервирован; в AT90S2333/4433 этот бит зарезервирован и при записи должен устанавливаться в 0.
Бит 6 - ADCBG - выбор опорного напряжения АЦП - при установке этого бита на вход АЦП подается фиксированное напряжение 1.22+-0.05В, когда бит сброшен, вход АЦП подключается к одному из внешних входов согласно установке битов MUX2..MUX0.
Биты 5..3 - зарезервированы. В AT90S2333/4433 эти биты зарезервированы и при записи должны устанавливаться в 0.
Биты 2..0 - MUX2..MUX0 - выбор аналогового входа. Содержимое этих бит определяет какой из аналоговых входов подключен на вход АЦП.
РЕГИСТР УПРАВЛЕНИЯ И СОСТОЯНИЯ АЦП – ADCSR
ADCSR
06h(26h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Бит 7 - ADEN - Разрешение АЦП. - При записи логической "1" в этот бит разрешается работа АЦП. При установке бита в "0" АЦП выключается. При выключении АЦП до окончания преобразования, преобразование не завершается.
Бит 6 - ADSC - Запуск преобразования АЦП. - В режиме одиночного преобразования для запуска преобразования в этот бит должна быть записана "1". При запуске преобразования битом ADSC время преобразования отчитывается ль начала следующего периода частоты на выходе делителя. При установке ADSC после разрешения АЦП или при одновременном разрешении АЦП и установке ADSC, первому преобразованию предшествует "пустой" цикл преобразования. Во время этого цикла происходит инициализация АЦП. Во время преобразования бит ADSC остается установленным и сбрасывается при завершении преобразования, но до того, как результат переписывается в регистр данных АЦП. Это позволяет запустить новое преобразование до того как завершится текущее. Новое преобразование будет запущено сразу по окончанию текущего. Если преобразованию предшествует "пустой" цикл, бит ADSC остается установленным пока не будет завершено реальное преобразование. Запись 0 в этот бит не дает результата.
Бит 5 - ADFR - Выбор непрерывного преобразования АЦП. - Когда этот бит установлен, включается режим непрерывного преобразования АЦП. В этом режиме АЦП непрерывно производит выборки сигнала и обновляет регистр данных. При сбросе этого бита режим непрерывного преобразования отключается.
Бит 4 - ADIF - Флаг прерывания АЦП. - Этот флаг устанавливается когда завершается цикл преобразования АЦП и обновляется регистр данных АЦП. Если установлены флаг глобального разрешения прерываний (I в
SREG) и бит ADIE, по завершению преобразования выполняется прерывание.
Флаг ADIF сбрасывается аппаратно при выполнении соответствующего прерывания. Другой способ сбросить флаг - записать в него "1". Необходимо предостеречь, что при чтении-модификации-записи ADCSR может быть запрещено отложенное прерывание. Это же касается и команд SBI и CBI.
Бит 3 - ADIE - Разрешение прерывания от АЦП. - При установке этого бита и бита I в регистре SREG разрешены прерывания по окончанию преобразования АЦП.
Биты 2..0 - ADPS2..ADPS0 - биты установки предварительного делителя. - Эти биты задают коэффициент деления тактовой частоты процессора и задают тактовую частоту работы АЦП.
Таблица 20. Выбор коэффициента деления АЦП
ADPS2 | ADPS1 | ADPS0 | Коэф.деления | ADPS2 | ADPS1 | ADPS0 | Коэф.деления |
0 | 0 | 0 | 2 | 1 | 0 | 0 | 16 |
0 | 0 | 1 | 2 | 1 | 0 | 1 | 32 |
0 | 1 | 0 | 4 | 1 | 1 | 0 | 64 |
0 | 1 | 1 | 8 | 1 | 1 | 1 | 128 |
РЕГИСТР ДАННЫХ АЦП - ADCL И ADCH
ADCH
05h(25h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | - | - | - | MSB |
|
| |
R | R | R | R | R | R | R | R | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ADCL
04h(24h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|
|
|
|
|
|
| LSB | |
R | R | R | R | R | R | R | R | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
Сканирование аналоговых каналов
Поскольку смена аналоговых каналов всегда происходит после завершения преобразования, для переключения каналов преобразователя можно использовать режим непрерывного преобразования. Обычно для переключения каналов используется прерывание по завершению преобразования. Однако пользователь должен принимать во внимание следующие факторы:
- в режиме непрерывного преобразования, цикл выборки-хранения следующего преобразования начинается через полтора тактовых цикла после того как результат текущего преобразования записывается в регистр данных АЦП и устанавливается флаг ADIF. Если канал АЦП переключится до того как произойдет операция выборки-хранения, результат преобразования будет отражать новое состояние мультиплексора, если ADMUX изменится после выборки-хранения, следующий результат будет использовать прежнее значение входного канала. Новый подключенный канал будет обслужен в следующем цикле преобразования. При чтении регистра ADMUX всегда возвращается последнее записанное в него число, независимо от того, какой канал используется для текущего преобразования.
Техника подавления шума АЦП
Цифровые схемы внутри и снаружи AT90S2333/4433 генерируют электромагнитные излучения, которые могут повлиять на точность аналоговых измерений. Если точность преобразования важна, уровень ума может быть понижен при помощи следующей техники:
1. Аналоговая часть процессора и все аналоговые компоненты устройства должны иметь отдельно разведенную на печатной плате землю. Аналоговая земля должна соединяться с цифровой только в одной точке печатной платы.
2. Путь прохождения аналогового сигнала должен быть коротким насколько можно. Старайтесь отделять аналоговые дорожки от цифровых аналоговой землей и проводить их как можно дальше от высокоскоростных цифровых сигналов.
3. Вывод AVcc должен подключаться к источнику Vcc через RC цепочку, как показано на рисунке:
4. Для уменьшения шума наводимого процессором используйте функцию подавления шума.
5. Если какие-то выводы порта С используются для вывода цифровых сигналов, они не должны переключаться во время преобразования.
ХАРАКТЕРИСТИКИ АЦП (T=-40...+85 град.)
Разрешение 10 бит
Интегральная нелинейность (Vref>2V), 0.2(тип),0.5(макс) ед.мл.разр.
Дифференц. нелинейность (Vref>2V), 0.2(тип),0.5(макс) ед.мл.разр.
Ошибка нуля (смещение) 1(тип) ед.мл.разр.
Время преобразования 65...260 мкС
Тактовая частота 50...200 кГц
Напряжение AVcc Vcc+-0.3В (не больше 6В)
Опорное напряжение Agnd...AVcc
Вх.сопр. по вх. опорн. напр. 6..10(тип)..13 кОм
Вх сопр. аналог. входа 100 (тип) МОм
ПОРТЫ ВВОДА/ВЫВОДА
Порт B
Порт B 6-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистр данных PORTB (18h, 38h), регистр направления данных - DDRB (17h, 37h) и ножки порта B - PINB (16h, 36h). Адрес ножек порта B предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи.
Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта B могут поглощать ток до 20 mA и непосредственно управлять светодиодными индикаторами. Если выводы PB0..PB5 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (Iil). Дополнительные функции выводов порта B приведены в таблице 20.
Таблица 21. Альтернативные функции выводов порта B
Вывод | Альтернативная функция |
PB0 | ICP (Вход захвата таймера/счетчика 1) |
PB1 | OC1 (Выход совпадения таймера,счетчика 1) |
PB2 | SS (Выбор ведомого шины SPI) |
PB3 | MOSI (Выход ведущего/ вход ведомого шины SPI) |
PB4 | MISO (Вход ведущего/ выход ведомого шины SPI) |
PB5 | SCK (Тактовые импульсы шины SPI) |
При использовании альтернативных функций выводов. регистры DDRB и PORTB должны быть установлены в соответствии с описанием альтернативных функций.
РЕГИСТР ДАННЫХ ПОРТА B
PORTB
18h(38h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PORTB5 |
|
|
|
| PORTB0 | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B
DDRB
17h(37h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | DDB5 |
|
|
|
| DDB0 | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ВЫВОДЫ ПОРТА B
PINB
16h(36h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PINB5 |
|
|
|
| PINBO | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | Z | Z | Z | Z | Z | Z |
PINB не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта B. При чтении PORTB, читаются данные из регистра-защелки, при чтении PINB читаются логические значения присутствующие на выводах порта.
ПОРТ B, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ
Все 6 бит порта B при использовании для ввода/вывода одинаковы.
Бит DDBn регистра DDRB выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTBn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTBn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
Таблица 22. Влияние DDBn на выводы порта B
DDBn | PORTBn | Вх/Вых | Подт.резист | Комментарий |
0 | 0 | Вход | Нет | |
0 | 1 | Вход | Да | PBn источник тока Iil, если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
n = 5...0 - номер вывода
АЛЬТЕРНАТИВНЫЕ ФУНКЦИИ PORTB
SCK - PORTB, Bit 5 - Выход тактовой частоты ведущего и тактовый вход ведомого процессора канала SPI. Если работа SPI разрешена и шина сконфигурирована как ведомая, этот вывод устанавливается на ввод независимо от установки DDB5. Если процессор работает как ведущий, направление передачи данных по этому выводу определяется DDB5. Когда вывод устанавливается на ввод, подключение подтягивающего резистора состоянием бита PORTB5. Подробнее см. описание порта SPI.
MISO - PORTB, Bit 4 - Вход данных ведущего, выход ведомого в канале SPI. Если разрешена работа SPI в качестве ведущего, вывод PB4 сконфигурирован как вход независимо от установки DDB4. Если SPI разрешен и работает как ведомый, направление передачи данных управляется состоянием DDB4. Когда вывод принудительно сконфигурирован как вход, подключение подтягивающего резистора по-прежнему управляется состоянием бита PORTB4. Подробнее см. описание порта SPI.
MOSI - PORTB, Bit 3 - Выход данных ведущего, вход ведомого в канале SPI. Когда SPI работает как ведомый, этот вывод работает как вход независимо от установки бита DDB3. При работе SPI ведомым направление передачи этого вывода управляется битом DDB3. Когда вывод принудительно сконфигурирован как вход, подключение подтягивающего резистора по
прежнему управляется состоянием бита PORTB3. Подробнее см. описание
порта SPI.
SS - PORTB, Bit 2. - Вход выбора ведомого. Если канал работает как ведомый, этот вывод работает как вход независимо то установки DDB2.
SPI активируется как ведомый при переводе этого вывода в низкое состояние. При работе SPI как ведущего, направление передачи данных через этот вывод управляется битом DDB2. Когда вывод переводится в состояние ввода, подключение подтягивающего резистора управляется битом PORTB2. Подробнее см. описание порта SPI.
OC1 - PORTB, Bit 1. Выход совпадения. Вывод PB1 может работать как внешний выход совпадения таймера/счетчика 1. Для обслуживания этой функции вывод должен быть сконфигурирован как выход (DDB1=1). Разрешение работы этой функции рассмотрено при описании таймера. Вывод OC1
также работает как выход при работе таймера в режиме ШИМ.
ICP - PORTB, Bit 0. Вход захвата. Вывод PB0 может работать как внешний вход захвата Таймера/счетчика 1. Для обслуживания этой функции вывод должен быть сконфигурирован как вход. Подробнее см. описание работы таймера.
Порт C
Порт C 6-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистр данных PORTC (15h, 35h), регистр направления данных - DDRC (14h, 34h) и ножки порта C - PINC (13h, 33h). Адрес ножек порта C предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи. Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта C могут поглощать ток до 20 mA и непосредственно управлять светодиодными индикаторами. Если выводы PC0..PC5 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (Iil). Дополнительные функции порта C - аналоговые входы АЦП. Если некоторые из выводов порта сконфигурированы как выходы, во время преобразования не рекомендуется производить их переключение. В экономичном режиме триггеры Шмитта отключаются от цифровых входов. Это позволяет удерживать на входах аналоговое напряжение Vcc/2 без заметного увеличения потребления.
РЕГИСТР ДАННЫХ ПОРТА C – PORTC
15h(35h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PORTC5 |
|
|
|
| PORTC0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
РЕГИСТР НАПРАВЛЕНИЯ ДАННЫХ ПОРТА B
DDRC
14h(34h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | DDC5 |
|
|
|
| DDC0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ВЫВОДЫ ПОРТА B
PINC
13h(33h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PINC5 |
|
|
|
| PINC0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | Z | Z | Z | Z | Z | Z |
PINC не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта C. При чтении PORTC, читаются данные из регистра-защелки, при чтении PINC читаются логические значения присутствующие на выводах порта.
ПОРТ C, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ
Все 6 бит порта C при использовании для ввода/вывода одинаковы.
Бит DDCn регистра DDRC выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTCn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTCn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
Таблица 23. Влияние DDCn на выводы порта C
DDC | PORTC | In\Out | Подтягивающие резисторы | описание |
0 | 0 | 0 | Нет | Третье состояние |
0 | 1 | 1 | Да | PBn источник тока Iil, если извне соединен с землей |
1 | 0 | 0 | Нет | Выход установлен в 0 |
1 | 1 | 1 | Нет | Выход установлен в 1 |
Порт D
Порт D 8-разрядный двунаправленный порт ввода/вывода.
Для обслуживания порта отведено три регистра: регистр данных PORTD (12h, 32h), регистр направления данных - DDRD (11h, 31h) и ножки порта D - PIND (10h, 30h). Адрес ножек порта D предназначен только для чтения, в то время как регистр данных и регистр направления данных - для чтения/записи. Все выводы порта имеют отдельно подключаемые подтягивающие резисторы. Выходы порта D могут поглощать ток до 20 mA и непосредственно управлять светодиодными индикаторами. Если выводы PD0..PD7 используются как входы и замыкаются на землю, если включены внутренние подтягивающие резисторы, выводы являются источниками тока (Iil). Альтернативные функции порта приведены в таблице.
Таблица 24. Альтернативные функции порта D
Вывод порта | Альтернативная функция |
PD0 | RXD (вход данных UART) |
PD1 | TXD (выход данных UART) |
PD2 | INT0 (вход внешнего прерывания 0) |
PD3 | INT1 (вход внешнего прерывания 1) |
PD4 | T0 (внешний вход таймера счетчика 0) |
PD5 | T1 (внешний вход таймера счетчика 1) |
PD6 | AIN0 (неинвертирующ.вход компаратора) |
PD7 | AIN1 (инвертирующий вход компаратора) |
РЕГИСТР ДАННЫХ ПОРТА D – PORTD
15h(35h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PORTD5 |
|
|
|
| PORTD0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
14h(34h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | DDD5 |
|
|
|
| DDD0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
13h(33h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
- | - | PIND5 |
|
|
|
| PIND0 | |
R | R | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | Z | Z | Z | Z | Z | Z |
PIND не является регистром, по этому адресу осуществляется доступ к физическим значениям каждого из выводов порта D. При чтении PORTD, читаются данные из регистра-защелки, при чтении PIND читаются логические значения присутствующие на выводах порта.
ПОРТ D, КАК ПОРТ ВВОДА/ВЫВОДА ОБЩЕГО НАЗНАЧЕНИЯ
Бит DDDn регистра DDRD выбирает направление передачи данных. Если бит установлен (1), вывод сконфигурирован как выход. Если бит сброшен (0) - вывод сконфигурирован как вход. Если PORTDn установлен и вывод сконфигурирован как вход, включается КМОП подтягивающий резистор. Для отключения резистора, PORTDn должен быть сброшен (0) или вывод должен быть сконфигурирован как выход.
Таблица 25. Влияние DDDn на выводы порта D
DDDn | PORTDn | In\Out | Подтягивающие резисторы | Описание |
0 | 0 | Вход | Нет | Третье состояние |
0 | 1 | Вход | Да | PDn источник тока Iil, если извне соединен с землей |
1 | 0 | Выход | Нет | Выход установлен в 0 |
1 | 1 | Выход | Нет | Выход установлен в 1 |
Альтернативные функции порта D
AIN1 - Порт D, бит7 - инвертирующий вход аналогового компаратора. Если вывод сконфигурирован как вход (DDD7=0) и отключен внутренний подтягивающий резистор, этот вывод может работать как инвертирующий вход аналогового компаратора. В экономичном режиме триггер Шмитта отключен от цифрового входа. Это позволяет удерживать на входе напряжение близкое к Vcc/2 без заметного увеличения потребления.
AIN0 - Порт D, бит6 - неинвертирующий вход аналогового компаратора. Если вывод сконфигурирован как вход (DDD6=0) и отключен внутренний подтягивающий резистор, этот вывод может работать как инвертирующий вход аналогового компаратора. В экономичном режиме триггер Шмитта отключен от цифрового входа. Это позволяет удерживать на входе напряжение близкое к Vcc/2 без заметного увеличения потребления.
T1 - Порт D, бит 5 - тактовый вход таймера/счетчика 1. Подробнее см. описание таймера.
T0 - Порт D, бит 4 - тактовый вход таймера/счетчика 0. Подробнее см. описание таймера.
INT1 - Порт D, бит 3 - вход внешних прерываний 1. Подробнее см. описание прерываний.
INT0 - Порт D, бит 2 - вход внешних прерываний 0. Подробнее см. описание прерываний.
TXD - Порт D, бит 1 - выход передатчика UART. Если разрешена работа передатчика UART, независимо от состояния DDRD1 этот вывод сконфигурирован как выход.
RXD - Порт D, бит 0 - выход приемника UART. Если разрешена работа приемника UART, независимо от состояния DDRD0 этот вывод сконфигурирован как выход. Когда UART использует вывод для приема данных, единица в PORTD0 подключает встроенный подтягивающий резистор.
ПРОГРАММИРОВАНИЕ ПАМЯТИ
Программирование битов блокировки памяти
Микроконтроллер имеет два бита блокировки, которые могут быть оставлены незапрограммированными (1) или программироваться (0), при этом достигаются свойства приведенные в таблице 20.
Таблица 26. Режимы защиты и биты блокировки
Биты блокировки | Тип защиты | ||
Режим | LB1 | LB2 | описание |
1 | 1 | 1 | защита не установлена |
2 | 0 | 1 | дальнейшее программирование флэш памяти и EEPROM запрещено |
3 | 0 | 0 | как режим 2, но запрещено и чтение |
Примечание: биты блокировки стираются только при полном стирании памяти
Биты конфигурации (Fuse bits)
В AT90S2333/4433 предусмотрены шесть бит конфигурации - SPIEN, BODLEVEL, BODEN, и CKSEL[2:0].
Когда запрограммирован бит SPIEN (0) разрешен режим
последовательного программирования. По умолчанию бит запрограммирован
(0). В режиме последовательного программирования этот бит недоступен.
BODLEVEL. Задает уровень срабатывания схемы сброса по пропаданию питания. Если бит незапрограммирован (1), этот уровень - 2.7В, для
запрограммированного бита - 4В. По умолчанию бит незапрограммирован.
BODEN. Когда этот бит запрограммирован (0), разрешен сброс по пропаданию питания. По умолчанию бит незапрограммирован.
CKSEL[2:0]. В таблице 4 приведены значения задержки при сбросе на которые влияют эти биты. По умолчанию биты установлены в 010 - 64mS+16K CK.
Код устройства
Все микроконтроллеры фирмы Atmel имеют 3-байтовый сигнатурный код, по которому идентифицируется устройство. Этот код может быть прочитан в параллельном и последовательном режимах. Эти три байта размещены в отдельном адресном пространстве и для AT90S4433 имеют следующие значения:
1. $000: $1E - код производителя - Atmel
2. $001: $92 - 4 кБ флэш памяти
3. $002: $01 - при $01=$92 - м/сх AT90S4433 для AT90S2333:
1. $000: $1E - код производителя - Atmel
2. $001: $91 - 2 кБ флэш памяти
3. $002: $05 - при $01=$92 - м/сх AT90S2333
Программирование флэш памяти и EEPROM
AT90S2333/4433 имеют 2кБ или 4кБ перепрограммируемой флэш памяти программ и 256 байт энергонезависимой памяти данных.
При поставке флэш память и память данных стерты (содержат FFh) и готовы к программированию. Микросхемы поддерживают высоковольтный (12В) параллельный режим программирования и низковольтный режим последовательного программирования. Напряжение +12В используется только для разрешения программирования, этот вывод почти не потребляет тока. Последовательный режим программирования предусмотрен для загрузки программы и данных в системе пользователя (внутрисистемное программирование). В обоих режимах программирования память программ и данных программируется байт за байтом. Для программирования EEPROM предусмотрен цикл автоматического стирания при программировании в последовательном режиме.
Параллельное программирование.
Ниже рассмотрено параллельное программирование флэш памяти программ, энергонезависимой памяти данных, битов блокировки и конфигурации. Некоторые выводы процессоров ниже называются именами, отражающими функциональное назначение сигналов при параллельном программировании. Выводы не приведенные в следующей таблице называются своими обычными именами.
Таблица 27. Имена выводов
Имя сигнала при программирован. | Имя вывода | Вх/Вых | Функция |
RDY/BSY | PD1 | Вых | 0: мкросхема занята программированием 1: мкросхема готова к приему команды |
OE | PD2 | Вх | Разрешение выходов (активный 0) |
WR | PD3 | Вх | Импульс записи (активный 0) |
BS | PD4 | Вх | Выбор байта |
XA0 | PD5 | Вх | Действие XTAL бит 0 |
XA1 | PD6 | Вх | Действие XTAL бит 1 |
Биты XA0 и XA1 определяют действие происходящее по положительному импульсу XTAL1. Установки битов приведены в следующей таблице:
Таблица 28. Установка XA1 и XA0
XA1 | XA0 | Действие при подаче импульса XTAL1 |
0 | 0 | Загрузка адреса памяти программ или данных (старший/младший байт задается выводом BS |
0 | 1 | Загрузка данных (старший/младший байт для флэш памяти задается выводом BS) |
1 | 0 | Загрузка команды |
1 | 1 | Не работает, холостой ход |
По импульсу WR или OE загружается команда определяющая действие по вводу или выводу. В байте команды каждому биту присвоена функция, как показано в таблице 29.
Таблица 29. Биты конфигурации командного байта
Бит | Значение при установке |
7 | Стирание кристалла |
6 | Запись битов конфигурации, расположенных в следующих позициях байта данных: D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0-CKSEL (0 для программирования, 1 для стирания) |
5 | Запись битов блокировки, расположенных в следующих позициях байта данных: D2 - LB2, D1 - LB1 (для программирования устанавливать 0) |
4 | Запись памяти программ или данных (определяется битом 0) |
3 | Чтение сигнатуры |
2 | Чтение битов блокировки и конфигурации, расположенных в следующих позициях байта данных: D5-SPIEN, D4-BODLEVEL, D3-BODEN, D2-D0 -CKSEL (для BS=1) или D2-LB2, D1-LB1 (для BS=0) |
1 | Чтение памяти программ или данных (определяется битом 0) |
0 | доступ к памяти программ, 1 к памяти данных |
ВХОД В РЕЖИМ ПРОГРАММИРОВАНИЯ
Следующий алгоритм переводит устройство в режим параллельного программирования:
1. Подать напряжение 4.5...5.5В на выводы питания.
2. Установить RESET и BS в 0 и выдержать не меньше 100 нС.
3. Подать 12В на RESET и выждать не менее 100 нС перед изменением
BS. Любая активность на выводе BS в течение этого времени приведет к тому, что микросхема не включится в режим программирования.
СТИРАНИЕ КРИСТАЛЛА
При стирании кристалла стираются память программ и данных, а также биты блокировки. Биты блокировки не сбрасываются до полного стирания памяти программ и данных. Биты конфигурации не изменяются. (Стирание кристалла производится перед его программированием).
Загрузка команды "стереть кристалл"
1. Установить XA1,XA0 в '10'. Это разрешает загрузку команды.
2. Установить BS в 0
3. Установить PC(1..0) PB(5..0) в '1000 0000'. Это команда стирания кристалла.
4. Подать положительный импульс на XTAL1. При этом загружается команда и начинается стирание памяти программ и данных. После импульса XTAL1, подать отрицательный импульс на WR, чтобы разрешить стирание битов блокировки по окончанию цикла стирания. Подождать около 10 мС до окончания цикла стирания. Стирание кристалла не генерирует сигнала RDY/BSY.
ПРОГРАММИРОВАНИЕ ФЛЭШ ПАМЯТИ
Загрузить команду "программирование флэш памяти"
1. Установить XA1,XA0 в '10'. Это разрешает загрузку команды.
2. Установить BS в 0
3. Установить PC(1..0) PB(5..0) в '0001 0000'. Это команда программирования флэш памяти
4. Подать положительный импульс на XTAL1. При этом загружается команда.
Загрузить младший байт адреса
1. Установить XA1,XA0 в '00'. Это разрешает загрузку адреса.
2. Установить BS в 0. Это выбирает младший байт адреса.
3. Установить на PC(1..0) PB(5..0) младший байт адреса.
4. Подать положительный импульс на XTAL1. При этом загружается младший байт адреса.
Загрузить старший байт адреса
1. Установить XA1,XA0 в '00'. Это разрешает загрузку адреса.
2. Установить BS в 1. Это выбирает старший байт адреса.
3. Установить на PC(1..0) PB(5..0) старший байт адреса. ($00..$01)
4. Подать положительный импульс на XTAL1. При этом загружается старший байт адреса.
Загрузить байт данных
1. Установить XA1,XA0 в '01'. Это разрешает загрузку данных.
2. Установить на PC(1..0) PB(5..0) младший байт данных.
3. Подать положительный импульс на XTAL1. При этом загружается младший байт данных.
Запись младшего байта данных.
1. Установить BS в '0'. Это выбирает младший байт данных
2. Подать на WR отрицательный импульс. Это инициирует программирование байта. RDY/BSY переходит в низкое состояние.
3. Перед программированием следующего байта подождать, пока RDY/BSY перейдет в высокое состояние.
Загрузить байт данных
1. Установить XA1,XA0 в '01'. Это разрешает загрузку данных.
2. Установить на PC(1..0) PB(5..0) старший байт данных.
3. Подать положительный импульс на XTAL1. При этом загружается старший байт данных.
Запись старшего байта данных.
1. Установить BS в '1'. Это выбирает старший байт данных
2. Подать на WR отрицательный импульс. Это инициирует программирование байта. RDY/BSY переходит в низкое состояние.
3. Перед программированием следующего байта подождать, пока RDY/BSY перейдет в высокое состояние.
Загруженные адрес и данные сохраняются в устройстве после программирования, при этом процесс программирования упрощается.
* Команду программирования флэш памяти необходимо подать только перед программированием первого байта
* Старший байт адреса можно менять только перед программированием
следующей страницы памяти программ (256 слов).
ПРОГРАММИРОВАНИЕ ПАМЯТИ ДАННЫХ
Алгоритм программирования памяти данных следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0001 0001'.
2. Загрузить младший адрес памяти данных (00h - 7Fh/FFh).
3. Загрузить младший байт данных
4. Подать отрицательный импульс на WR и подождать перевода RDY/BSY в 1.
Загрузка команды необходима только перед программированием первого байта.
ЧТЕНИЕ ПАМЯТИ ПРОГРАММ
Алгоритм чтения флэш памяти следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0010'
2. Загрузить младший байт адреса ($00 - $FF)
3. Загрузить старший байт адреса ($00 - $03/$07)
4. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать байт данных.
5. Установить BS в '1'. Теперь на выводах PB можно прочитать старший байт данных.
6. Установить OE в '1'.
Загрузка команды необходима только перед чтением первого байта.
ЧТЕНИЕ ПАМЯТИ ДАННЫХ
Алгоритм чтения памяти данных следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0011'
2. Загрузить младший байт адреса (00h - 7Fh)
3. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать байт данных.
4. Установить OE в '1'.
Загрузка команды необходима только перед чтением первого байта.
ПРОГРАММИРОВАНИЕ БИТОВ КОНФИГУРАЦИИ
Алгоритм программирования битов конфигурации следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0100 0000'
2. Загрузить данные
Бит5=0 - программировать бит SPIEN, Бит5=1 - стереть бит SPIEN
Бит4=0 - программировать бит BODLEVEL,
Бит4=1 - стереть бит BODLEVEL
Бит3=0 - программировать бит BODEN,
Бит3=1 - стереть бит BODEN
Биты 2-0 =0 - программировать биты CKSEL,
Биты 2-0 =1 - стереть биты CKSEL
3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.
ПРОГРАММИРОВАНИЕ БИТОВ БЛОКИРОВКИ
Алгоритм программирования битов блокировки следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0010 0000'
2. Загрузить данные
Бит2=0 - программировать бит LB2
Бит1=0 - программировать бит LB1
3. Подать на WR отрицательный импульс и ждать перехода RDY/BSY в единицу.
Биты блокировки стираются только при стирании всей микросхемы.
ЧТЕНИЕ БИТОВ КОНФИГУРАЦИИ И БЛОКИРОВКИ
Алгоритм чтения битов блокировки и конфигурации следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду '0000 0100'
2. Установить OE в '0', BS в '0'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать биты конфигурации.
Бит5 - SPIEN - '0' запрограммирован
Бит4 - BODLEVEL - '0' запрограммирован
Бит3 - BODEN - '0' запрограммирован
Биты 2-0 - CKSEL - '0' запрограммированы
3. Установить OE в '0', BS в '1'. Теперь на выводах PC(1..0) PB(5..0) можно прочитать биты блокировки.
Бит2 - LB2 - '0' запрограммирован
Бит1 - LB1 - '0' запрограммирован
3. Установить OE в '1'.
ЧТЕНИЕ БАЙТОВ СИГНАТУРЫ
Алгоритм чтения байтов сигнатуры следующий (обратитесь к программированию памяти программ за описанием загрузки команды, адреса и данных):
1. Загрузить команду 0000 1000
2. Загрузить младший байт адреса ($00 - $02), установить OE и BS в "0". После этого выбранный байт сигнатуры можно прочитать на выводах PC(1..0) PB(5..0).
3. Установить OE в "1".
Команду необходимо подавать только перед чтением первого байта.
Таблица 31. Характеристики параллельного программирования
T=21..27 ±C, Vcc=4.5-5.5V
Параметр | Min | Typ | Max | |||||||
tDVXH | Задерж.между установ. данных и сигн.упр. и высоким уровнем XTAL1 | 67 | nS | |||||||
tXHXL | Ширина импульса XTAL | 67 | nS | |||||||
tXLDH | Удержание данных и сигналов управления После установки XTAL1 = 1 | 67 | nS | |||||||
tBVVL | Удержание BS после установки WR | 0 | 67 | nS | ||||||
tWLWH | Ширина импульса WR | 67 | nS | |||||||
tWHRL | Задержка между WR | 1 и RDY/BSY | 0 ( | ) | 20 | nS | ||||
tXLOL | Задержка между XL | 0 и OE | 0 | 67 | nS | |||||
tOLDV | Задержка между XL | 0 и установкой данных | 20 | nS | ||||||
tWLRH | Задержка между WR | 0 и RDY/BSY | 1 ( | ) | 0.5 | 0.7 | 0.9 | mS | ||
Примечание: если tWHRL удерживается дольше, чем tWLRH импульс на RDY/BSY не появится.
ПОСЛЕДОВАТЕЛЬНАЯ ЗАГРУЗКА
Как память программ, так и память данных могут быть запрограммированы с использованием последовательной шины SPI, при этом вывод RESET должен быть подключен к земле. Последовательный интерфейс работает с выводами SCK, MOSI (вход) и MISO (выход). После подачи низкого уровня на RESET перед программированием/стиранием необходимо исполнить команду разрешения программирования. При программировании памяти данных, во внутренний алгоритм программирования встроен цикл стирания (только при последовательном программировании), поэтому нет необходимости в выполнении команды стирания памяти. Команда стирания микросхемы переводит все ячейки памяти программ и данных в состояние FFh. Флэш память программ и энергонезависимая память данных имеют отдельное адресное пространство: 000h - 3FFh/7FFh для памяти программ и 000h - 07Fh/0FFh для памяти данных. При программировании необходимо подавать внешнюю тактовую частоту на вывод XTAL1 или подключить внешний тактовый генератор к выводам XTAL1 и XTAL2. Минимальные длительности низкого и высокого уровня сигнала SCK определены следующим образом:
Низкий: > 2 периодов XTAL1
Высокий: > 2 периодов XTAL1
ПОДТВЕРЖДЕНИЕ ДАННЫХ
До завершения программировании нового байта, при чтении из памяти будет читаться значение FFh. После того как микросхема будет готова для записи следующего байта, при чтении можно прочитать записанное значение. Это используется для определения момента, когда можно записывать следующий байт. Этот способ не будет работать для байта FFh, поэтому для записи этого числа перед программированием следующего байта придется выждать по крайней мере 4mS. Поскольку после стирания ячейки памяти устанавливаются в FFh, при программировании ячейки, содержащие FFh можно пропускать. Это не применимо при перезаписи EEPROM без стирания памяти программ. В этом случае подтверждение не работает для данных FFh, для этого значения перед программированием следующего байта необходимо выждать 4mS.
АЛГОРИТМ ПОСЛЕДОВАТЕЛЬНОГО ПРОГРАММИРОВАНИЯ
Для программирования и проверки AT90S2333/4433 в режиме последовательного программирования рекомендуется следующая последовательность действий (см. формат четырех байтовой команды в табл.32):
1. Последовательность включения питания:
Подать напряжение питания между VCC и GND, при этом RESET и SCK должны быть установлены в '0'. Если кварцевый резонатор не подключен к выводам XTAL1 и XTAL2, подайте частоту на вывод XTAL1.(Если программатор не гарантирует установки SCK в '0' при подаче питания, после того как на SCK будет установлен '0', на RESET необходимо подать положительный импульс, и удерживать его по крайней мере два периода тактовой частоты после
установки вывода SCK в "0".
0 комментариев