Работа периферийных устройств (48450)

Посмотреть архив целиком
















Работа периферийных устройств


Содержание


Введение

1. Параллельные порты ввода-вывода

2. Последовательный порт ввода-вывода SPI

3. Последовательный порт ввода-вывода UART

4. Последовательный порт ввода-вывода TWSI (I2C)

5. Таймеры-счетчики общего назначения

5.1 Таймер-счетчик типа А

5.2 Таймер-счетчик типа В

5.3 Таймер-счетчик типа С

5.4 Таймер-счетчик типа D

5.5 Таймер-счетчик типа Е

6. Сторожевой таймер

7. Аналого-цифровой преобразователь

8. Аналоговый компаратор

9. Программируемый аппаратный модулятор

10. Блок прерываний

Литература



Введение


В работе периферийных устройств участвуют регистры ввода-вывода. Работа периферийных устройств определяется состоянием разрядов регистров управления, а состояние периферийных устройств отражается состоянием разрядов регистров состояния. Имена и номера регистров ввода-вывода у микроконтроллеров разных типов указаны в приложении П4. Имена и номера разрядов регистров управления и разрядов регистров состояния приведена в приложении П5.


1. Параллельные порты ввода-вывода


Число параллельных портов ввода-вывода, суммарное число выводов портов и суммарное число выводов, выполняющих альтернативные функции, у микроконтроллеров разных типов указано в табл.1.1 в колонках Р, I/O и ALT соответственно.

В табл.1 приведены имена портов и указано число выводов (в числителе) и число выводов, выполняющих альтернативные функции (в знаменателе) для каждого порта в отдельности.

В состав порта РХ (X = А, В, С, D, Е) входят три регистра ввода-вывода с именами DDRX, PORTX и PINX. Регистр PINX не имеет аппаратной реализации. Это имя используется в командах, по которых выполняется чтение байтов на выводах порта.

Число разрядов в регистрах равно числу выводов порта.


Таблица 1

Тип МК

Имя порта

PA

PB

PC

PD

PE

PF

t11


6/6





t12


6/6





t15


6/6





2323


3/2





2343


5/3





1200


8/2


7/2



2313


8/3


7/7



t28

4/1

8/5*


8/0



4433


6/6

6/6

8/8



8515

8/8

8/8

8/8

8/7



8535

8/8

8/8

8/2

8/8



m163

8/8

8/8

8/4

8/8



m103

8/8

8/8

8/8*

8/7

8/8

8/8*

* - PC - только выходы, PB, PF - только входы


Состояние разряда DDRX. Y определяет направление передачи бита через вывод порта PX. Y. При DDRX. Y = 0 вывод PX. Y работает в режиме входа, при DDRX. Y = 1 - в режиме выхода.

В режиме входа состояние разряда PORTX. Y определяет состояние вывода PX. Y. При PORTX. Y = 0 вывод находится в высокоимпендансном состоянии (Z-состояние), при PORTX. Y = 1 вывод, порта через внутренний резистор с сопротивлением 30-120 кОм подключается к шине VCC. В режиме входа вывод PX. Y соединен с шиной данных ШД. Y.

Значение входного сигнала на отдельном выводе порта может быть определено с использованием команд условного перехода с мнемокодом SBIC PINX, Y (№ 113) или SBIS PINX, Y (№ 114). При одном значении сигнала выбирается одно продолжение программы, при другом значении сигнала - другое продолжение.

В режиме выхода разряд PORTX. Y определяет значение выходного сигнала на выводе PX. Y. При PORTX. Y = 0 выходной сигнал имеет низкий уровень напряжения (U0l), при PORTX. Y = 1 - высокий уровень напряжения (UOнI).

В табл.2 указано состояние вывода порта PX. Y при различных комбинациях состояний разрядов DDRX. Y и PORTX. Y.


Таблица 2

DORX. Y

PORTX. Y

PX. Y

0

0

Вход, (Z)

0

1

Вход, (R)

1

0

Выход, (U0L)

1

1

Выход, (UOH)


В статическом состоянии при низком уровне выходного сигнала ток нагрузки IOL должен быть не более, чем 20 мА, при высоком уровне сигнала ток нагрузки IOH должен быть не более, чем 3 мА. При этом суммарный ток нагрузки для всех выводов микроконтроллера должен быть не более, чем некоторое пороговое значение (200-400 мА для микроконтроллеров разных типов) и суммарный ток нагрузки для выводов микроконтроллера, расположенных на одной стороне корпуса микросхемы, также должен быть не более, чем некоторое пороговое значение (100-200 мА для микроконтроллеров разных типов).

Задание значения выходного сигнала на отдельных выводах порта выполняется с использованием команд с мнемокодами CBI PORTX, Y (№ 65) (для низкого уровня) и SBI PORTX, Y (№ 66) для высокого уровня.

При совместном использовании всех разрядов порта для приема и выдачи байтов используются команды с мнемокодами IN Rd, PINX (№ 60) и OUT PORTX, Rr (№ 61) соответственно.

Обращение к параллельному порт) ' для приема и выдачи байтов может быть выполнено с использованием команд с обращением по адресам в адресном пространстве SRAM (№№ 34-57). При этом в качестве адресов используются номера регистров ввода-вывода, увеличенные на $20.

При пуске и перезапуске микроконтроллера все разряды регистров DDRX и PORTX всех портов сбрасываются в нулевое состояние и выводы портов работают в режиме входов и находятся в Z состоянии.

Исключением является разряд PORTA.2 регистра PORTA в микроконтроллере типа t28, который устанавливается в единичное состояние.

В микроконтроллере тина m163 при установке в единичное состояние разряда PUD регистра SFIOR (№ $30) во всех разрядах всех портов разрывается цепь, связывающая вывод порта с шпион VCC через резистор. В микроконтроллере типа t15 разряд PUD входит в регистр MCUCR (№ $35).

В микроконтроллере типа t28 выводы порта РВ подключаются через резисторы к шине VCC при единичном состоянии разряда PLUPB регистра MCUCS.


2. Последовательный порт ввода-вывода SPI


Порт SPI входит в состав периферийных устройств микроконтроллеров типа 4433, 8515, 8535, ml63 и t10З.

Основным элементом порта SPI является восьмиразрядный реверсивный сдвигающий регистр, который используется для параллельного ввода из шипы данных микроконтроллера байта, предназначенного для выдачи: последовательной выдачи байта на выход микроконтроллера с одновременным последовательным вводом байта со входа микроконтроллера и параллельной выдачи введенного байта в буферный регистр для последующей передачи в шину данных микроконтроллера. Сдвигающий регистр и буферный регистр имеют одно имя - SPDR (№ $0F). Запись байта в сдвигающий регистр выполняется по команде OUT SPDR, RI, чтение байта из буферного регистра - по команде IN Rd, SPDR.

В состав порта SPI входят также регистр управления SPCR (№ $0D), регистр состояния SPSR (№ $0Е) и элементы, управляющие работой порта. Структурная схема порта SPI изображена.

Порт SPI переводится в рабочее состояние при установке в единичное состояние разряда SPE регистра SPCR. При этом выводы порта MOSI, MISO, SCK и SS подключаются к внешним выводам микроконтроллера в соответствии с табл.3.


Таблица 3

Выводы порта SPI

Тип МК

4433

8515

8535

ГП163

m10З

MOSI

РВЗ

РВ5

РВ5

РВ5

РВ2

MISO

РВ4

РВ6

РВ6

РВ6

РВЗ

SCK

РВ5

РВ7

РВ7

РВ7

РВ1

SS

РВ2

РВ4

РВ4

РВ4

РВО


Порт SPI может работать в режиме ведущего (master) или ведомого (slave). Выбор режима определяется состоянием разряда MSTR регистра SPCR. При MSTR = 1 порт работает в режиме ведущего. При этом вывод MOSI является выходом, вывод MISO - входом, вывод SCK - выходом. Функция вывода SS зависит от состояния разряда DDRB. X (X = 2, 4, 0) регистра DDRB. Если DDRB. X = 1 (вывод РВ. Х является выходом), вывод SS порта SPI не подключен к выводу РВ. Х порта РВ. Если DDRB. X = 0 (вывод РВ. Х является входом), значение сигнала на этом входе влияет на работу порта SPI. При единичном значении сигнала на этом входе порт работает в режиме ведущего, а при появлении нулевого значения сигнала он переводится в режим ведомого и для возвращения в режим ведущего после появления единичного значения сигнала на входе SS требуется вновь установить разряд MSTR регистра SPCR в единичное состояние.

В режиме ведущего обмен байтами начинается при записи байта в сдвигающий регистр SPDR (W). В схеме управления СУ1 вырабатывается серия из восьми импульсов, которая управляет сдвигом в регистре SPDR (W) и выдается на выход SCK для управления сдвигом в регистре ведомого порта.

Полярность импульсов определяется состоянием разряда CPOL регистра SPCR. При CPOL = 0 сигнал на выходе SCK в исходном состоянии имеет нулевое значение, импульс формируется при переходе сигнала к единичному значению. При CPOL=1 сигнал в исходном состоянии имеет единичное значение и импульс формируется при переходе сигнала к нулевому значению.

Направление сдвига в регистре и порядок следования битов на выходе MOSI определяется состоянием разряда DORD регистра SPCR. При DORD = 0 выдача байта начинается со старшего бита (D7), при DORD = 1 выдача начинается с младшего бита (DO). При выдаче каждого бита на выход MOSI соответствующий бит из ведомого порта поступает на вход MISO и вводится в сдвигающий регистр.

Серия из восьми импульсов в ведущем порте формируется из тактового сигнала СК путем деления частоты в пересчетной схеме ПС. Коэффициент деления К определяется комбинацией состояний разрядов SPR0 и SPR1 регистра SPCR в соответствии с табл.4. В микроконтроллере типа ml63 в регистре состояния SPSR есть дополнительный разряд SPI2X, при единичном состоянии которого скорость передачи увеличивается в два раза.


Таблица 4

SPR1

SPR0

к

КГ

0

0

4

2

0

1

16

8

1

0

64

32

1

1

128

64


4 - в МК типа m163 при SPI2X = 1

При завершении выдачи/приема байта устанавливается в единичное состояние разряд SPIF регистра состояния SPSR и при единичном состоянии разряда SPIE регистра SPCR в блок прерываний поступает запрос прерывания SPI STC (SPI Serial Transfer Complete).

Разряд SPIF сбрасывается в нулевое состояние аппаратно при переходе к выполнению соответствующей прерывающей программы или при чтении регистра SPSR перед записью нового байта в регистр SPDR (W).

При записи нового байта в регистр SPDR (W) в процессе сдвига Ранее записанного байта устанавливается в единичное состояние разряд WCOL регистра SPSR (ошибка при вводе). Разряд WCOL сбрасывается в нулевое состояние при чтении регистра SPSR.

При MSTR = 0 порт работает в режиме ведомого. В этом случае вывод MOSI работает как вход, вывод MISO - как выход, выводы SСК и SS - как входы. Выводы порта подключаются к соответствующим выводам порта РВ при установке в единичное состояние разряда SPE регистра SPCR. Порт переходит в рабочее состояние при нулевом значении сигнала на входе SS.

При поступлении серии импульсов на вход SCK из регистра SPDR (W) на вывод MISO последовательно выводится байт, ранее записанный в этот регистр. Одновременно в регистр вводится байт, поступающий на вход MOSI. При завершении обмена байтами устанавливается в единичное состояние разряд SPIF регистра SPSR и при единичном состоянии разряда SPIE в регистре SPCR в блок прерываний поступает запрос прерывания SPI STC.

Состояние разрядов CPOL и DORD в регистре SPCR у ведомого порта должно совпадать с состоянием одноименных разрядов у ведущего порта. Состояние разрядов SPR0 и SPR1 не влияет на работу порта.

Состояние разряда СРНА определяет значение сигнала на выходе MISO при переходе порта в рабочее состояние (SS = 0) до и после обмена байтами. При СРНА = 0 при переходе порта в рабочее состояние па выходе MISO появляется значение бита, который будет выдаваться первым, а значение сигнала после выдачи восьмого бита является неопределенным. При СРНА= 1 значение сигнала на выходе MISO при переходе порта в активное состояние является неопределенным, а после передачи восьмого бита на выходе MISO сохраняется значение переданного бита.

При подключении к ведущему порту нескольких ведомых портов шины MOSI, MISO и SCK являются общими для всех портов, а выводы SS ведомых микроконтроллеров должны быть соединены со специальными выходами ведущего микроконтроллера с помощью отдельных шин. В качестве специальных выходов ведущего микроконтроллера могут использоваться любые выводы любых портов, не используемые в иных целях.


3. Последовательный порт ввода-вывода UART


Порт UART входит в состав периферийных устройств микроконтроллеров типа 2313, 4433,8515, 8535, ml63 и m10

Порт UART содержит передатчик, приемник, тактовый генератор и аппаратуру управления передачей и приемом. Передатчик получает байт из шины данных микроконтроллера и формирует и выдает последовательность битов (кадр.), которая кроме битов, составляющих байт (DO, D1,. ., D7), содержит стартовый бит (start), имеющий нулевое значение, и столовый бит (stop), имеющий единичное значение. Между старшим битом байта (D7) п стоповым битом может помещаться дополнительный бит (СВ).

Приемник выделяет стартовый бит, принимает кадр, формат которого (число битов) задан, расформировывает принятый кадр и подготавливает байт для выдачи в шипу данных микроконтроллера.

Тактовый генератор формирует сигнал, определяющий скорость передачи и приема битов и позволяющий выделять биты при приеме кадра.

В состав порта входят регистр данных передатчика UDR (Т), регистр Данных приемника UDR (R), регистр управления UCR или UCSRB (№ $0А), регистр состояния USR пли UCSRA (№ $0В), регистр задания скорости передачи/приема UBRR (№ $09) и другие элементы. Регистры Данных передатчика и приемника имеют один номер - $0С. При обращении для записи выбирается регистр UDR (T), при обращении Для чтения - регистр UDR (R).

Передатчик готов к работе при установке в единичное состояние разряда TXEN регистра управления UCR. При этом выход передатчика TXD подключается к выводу определенного порта микроконтроллера. Передача кадра начинается при загрузке байта в регистр UDR (T). Загрузку можно выполнять при единичном состоянии разряда UDRE регистра состояния USR. При сбросе микроконтроллера в исходное состояние устанавливается UDRE = 1.

Загруженный байт передается в сдвигающий регистр передатчика TSR и происходит выдача кадра на выход микроконтроллера TXD.

При нулевом состоянии разряда CHR9 регистра UCR формируется кадр из десяти битов. При CHR9 = 1 кадр содержит одиннадцать битов. Значение дополнительного бита в этом случае должно быть указано в разряде ТХВ8 регистра UCR.

Первый байт при загрузке немедленно передается в регистр TSR и разряд UDRE регистра USR сохраняет единичное состояние, что позволяет сразу после загрузки первого байта загружать в регистр UDR (T) второй байт. Второй и последующие байты сохраняются в регистре UDR (Т) до завершения выдачи из регистра TSR предыдущего кадра. При этом разряд UDRE регистра USR находится в нулевом состоянии и загрузка очередного байта в регистр UDR (T) запрещена.

При завершении выдачи кадра из регистра TSR и отсутствии очередного байта в регистре UDR (T) устанавливается в единичное состояние разряд ТХС регистра USR и при единичном состоянии разряда TXCIE регистра UCR в блок прерываний поступает запрос прерывания UART ТХС.

Разряд ТХС регистра USR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установка бита в единичное состояние.

При единичном состоянии разряда UDRE регистра USR и единичном состоянии разряда UDRIE регистра UCR в блок прерываний поступает запрос прерывания UART DRE. Разряд UDRE сбрасывается в нулевое состояние при записи байта в регистр UDR (T). Прерывающая программа, выполняемая по запросу прерывания UART DRE, должна содержать команду записи в регистр UDR (T) для прекращения действия этого запроса прерывания.

Приемник готов к работе при установке в единичное состояние разряда RXEN регистра UCR. При этом вход приемника RXD подключается к выводу определенного порта микроконтроллера. При обнаружении на входе RXD отрицательного фронта сигнала, приемник определяет уровень сигнала в момент времени, отстоящий от фронта на половину интервала, отводимого на передачу бита при заданной скорости передачи. При обнаружении нулевого уровня принимается решение о приеме стартового бита и далее определяются уровни сигнала в моменты времени, отстоящие друг от друга на интервал, отводимый на передачу бита. Получаемая последовательность значений вводится в сдвигающий регистр приемника RSR. Если принимается кадр из одиннадцати битов (CHR9 = 1), дополнительный бит принимается в Разряд RXB8 регистра UCR. Если на месте ожидаемого стопового бита сигнал имеет пулевое значение, устанавливается в единичное состояние Разряд FE регистра USR (ошибка формата). Разряд FE сбрасывается в нулевое состояние при появлении единичного значения стопового бита.

Принятый байт из регистра RSR переписывается в регистр UDR (R). При этом устанавливается в единичное состояние разряд RXC регистра USR и при единичном состоянии разряда RXCIE регистра UCR в блок прерываний поступает запрос прерывания UART RXC.

Разряд RXC регистра USR сбрасывается в нулевое состояние при чтении регистра UDR (R). Прерывающая программа, выполняемая по запросу прерывания UART RXC, должна содержать команду чтения из Регистра UDR для прекращения действия этого запроса. Если при завершении приема кадра принятый ранее байт не считан из регистра UDR (R), устанавливается в единичное состояние разряд OR регистра USR (состояние переполнения). Разряд OR сбрасывается в нулевое состояние при передаче байта из регистра RSR в регистр UDR (R).

Тактовый генератор BRG формирует сигнал, определяющий скорость передачи н приема битов и дополнительный сигнал, обеспечивающий выделение битов при приеме кадра. Скорость передачи и приема BR, бит/с, зависит от частоты тактового сигнала микроконтроллера FCK и числа (UBRR), двоичный код которого записан в регистре UBRR, и определяется по формуле:



Для работы со стандартными скоростями приема-передачи (4800, 9600,14400, 19200, 28800, 38400, 57600, 76800 и 115200 бит/с) используются кварцевые резонаторы со специальными значениями резонансной частоты (3, 6864; 7,3728; 11,059 Мгц).

В порте UART микроконтроллеров типа 4433 и ml63 регистр управления вместо имени UCR имеет имя UCSRB, а регистр состояния вместо имени USR - имя UCSRA. Регистр UCSRA имеет дополнительный разряд МРСМ. При единичном состоянии разряда приемник принимает кадры, у которых дополнительный бит (СВ) имеет единичное значение и игнорирует кадры при СВ = 0. При нулевом состоянии разряда МРСМ принимаются кадры с любым значением дополнительного бита. Наличие разряда МРСМ позволяет организовать простейшую локальную сеть (мультипроцессорную систему), в которой имеется один ведущий контроллер и несколько ведомых. Каждому ведомому контроллеру присваивается определенный номер.

В исходном состоянии у всех ведомых контроллеров МРСМ = 1.

Ведущий контроллер передает кадр, в котором СВ = 1, а байт является номером ведомого котроллера, который должен принять данные из ведущего.

Все ведомые контроллеры принимают кадр. Контроллер, опознавший свой номер, сбрасывает разряд МРСМ в нулевое состояние. Далее ведущий контроллер передает кадры, в которых СВ = 0, а байты представляют собой данные для выбранного ведомого контроллера. Эти кадры принимаются только ведомым контроллером, у которого МРСМ = 0. При обнаружении кадра с СВ = 1 выбранный контроллер переводит разряд МРСМ в единичное состояние и переходит в исходное состояние.

В микроконтроллере типа ml63, кроме того, регистр UCSRA имеет дополнительный разряд U2X, а для задания скорости передачи используются два регистра - регистр UBRR (№$09) для задания младших восьми разрядов кода числа и регистр UBRRHI (№$20) для задания старших четырех разрядов кода числа. Скорость передачи определяется по формуле

где К = 16 при U2X = 0, К = 8 при U2X = 1.



В табл.5. указаны выводы портов микроконтроллеров, используемые в качестве входа приемника (RXD) и выхода передатчика (TXD) у микроконтроллеров разных типов.


Таблица 5

Вывод



Тип

мк



порта UART

2313

4433

8515

8535

m163

m10З

RXD TXD

PD0 PD1

PD0 PD1

PD0 PD1

PD0 PD1

PD0 PD1

РЕО РЕ1



4. Последовательный порт ввода-вывода TWSI (I2C)


Порт TWSI входит в состав периферийных устройств микроконтроллера типа ml6

Через порт TWSI микроконтроллер подключается к двухпроводной шине IС.

Устройство может работать в качестве ведущего или ведомого. Статус микроконтроллера, подключенного к шине 1С, устанавливается программными средствами.

Линия SCL предназначена для передачи синхросигнала из веду цего Устройства в ведомое. Линия SDA совместно с линией SCL используется для передачи сигналов начала и конца обмена, адресных байтов и байтов данных и сигналов подтверждения приема байта. Линии SCL и SDA соединены с одноименными выводами подключенных устройств.

Кроме того, они через резисторы R1 и R2 подключены к шине VCC. При отсутствии обмена в линиях SCL и SDA устанавливается высокий уровень сигнала.

Ведущее устройство после перевода его в активное состояние дожидается освобождения шины от обмена между другими устройствами и формирует в шине посылку начала обмена {Start, ST), которая представлена переходом сигнала в линии SDA от высокого уровня к низкому уровню при высоком уровне сигнала в линии SCL.

После выдачи посылки ST в линии SCL устанавливается низкий уровень сигнала и далее формируется последовательность из девяти положительных импульсов. Установка требуемого значения бита в линии SDA производится при низком уровне сигнала в линии SCL. Передача байта начинается со старшего разряда.

Первым байтом, выдаваемом в шину ведущим устройством после выдачи посылки ST, является адресный байт. Старшие семь битов адресного байта представляют номер (адрес) ведомого устройства, с которым будет выполняться обмен, (А6,..., АО), а младший бит W/R определяет направление обмена. При W/R = 0 байты данных будут передаваться из ведущего устройства в ведомое, при W/R = 1 - в противоположном направлении. Ведомое устройство после получения восьмого бита устанавливает в линии SDA низкий уровень сигнала, что является подтверждением приема байта для ведущего устройства, (Acknowledge, ACK).

После адресного байта ведущее устройство передает (при W/R = 0) или принимает (при W/R =1) байты данных.

При передаче байта данных принимающее устройство после приема восьмого бита устанавливает в линии SDA низкий уровень сигнала (АСК), а передающее устройство при появлении девятого импульса опрашивает состояние линии SDA. Низкий уровень сигнала является подтверждением приема байта данных. При обнаружении высокого уровня подтверждения нет (No Acknowledge, NAC), что свидетельствует об отсутствии обмена или ошибке при передаче байта.

После успешной передачи байта данных возможны три варианта продолжения работы ведущего устройства:

1) передача следующего байта в том же направлении с участием того же ведомого устройства;

2) выбор другого ведомого устройства пли смена направления обмена или то и другое;

3) окончание обмена с освобождением линии.

В нервом случае ведущее устройство формирует последовательность из девяти импульсов и выполняется пересылка очередного байта данных. Во втором случае ведущее устройство формирует посылку ST и выдает новый адресный байт. В третьем случае ведущее устройство формирует посылку конца обмена (Stop, SP), которая представляется переходом сигнала в линии SDA от низкого уровня к высокому при высоком уровне сигнала в линии SCL.

Все ведомые устройства при обнаружении в шине посылки ST принимают адресный байт и сравнивают полученный адрес с собственным адресом, который хранится в одном из регистров порта. При совпадении адресов формируется посылка АСК и устройство переводится в режим ожидания очередной серии из девяти импульсов для приема или передачи байта данных в зависимости от значения бита W/R в принятом адресном байте.

Все перечисленные операции в ведомом устройстве выполняются аппаратно.

Порт TWSI у микроконтроллера типа ml63 содержит 5 регистров ввода-вывода:

регистр данных TWDR (№ $03);

регистр адреса TWAR (№ $02);

регистр состояния TWSR (№ $01);

регистр задания скорости передачи TWBR (№ $00);

регистр управления TWCR (№ $36).

Порт переводится в активное состояние при установке в единичное состояние разряда TWEN регистра TWCR. При этом выводы порта SCL и SDA подключаются к внешним выводам микроконтроллера PC0 и РС1 соответственно.

Порт начинает работать в качестве ведущего после установки в единичное состояние разряда TWSTA регистра TWCR.

При работе в качестве ведущего генератор G формирует импульсный сигнал, который через буферную схему I/OCL выдается в линию SCL. Скорость передачи битов определяется числом, код которого записан в регистре TWBR. Положение фронтов импульсов в импульсном сигнале связано с выполнением определенных операций в порте и может изменяться в некоторых пределах. Осредненное значение скорости передачи BR, бит/с, определяется по формуле



где FCK - тактовая частота микроконтроллера; (TWBR) - число, код которого записан в регистр TWBR ( (TWBR) >7); tA - показатель, учитывающий растяжение некоторых интервалов между фронтами импульсов (tА = 200-600 нс).

При работе порта в качестве ведомого порядок его работы определяется импульсной последовательностью, которая через вывод SCL и буферную схему I/OCL поступает в схему управления СУ.

Регистр TWDR имеет цепи для сдвига кода влево. В него параллельно записываются байты, предназначенные для последовательного вывода в линию SDA через буферную схему I/ODA, и последовательно вводятся байты, поступающие из линии SDA через буферную схему I/ODA. импулсы сдвига поступают из схемы управления.

Регистр TWAR используется только при работе порта в качестве ведомого. Код, записанный в старших семи его разрядах, представляет собственный адрес микроконтроллера (А6,..., АО). Этот код сравнивается с помощью схемы сравнения СС с кодом в старших семи битах адресного байта, принятого в регистр TWDR.

Младший разряд TWGCE регистра TWAR разрешает прием байтов данных (при TWGCE = 1) после получения адресного байта с адресом общего вызова для всех ведомых микроконтроллеров ($00).

Регистр TWCR содержит разряды, определяющие работу схемы управления, (TWEA, TWSTA, TWSTO и TWEN), отражающие состояние порта (TWINT и TWWC) и разряд TWIE, разрешающий поступление запроса прерывания из порта в блок прерываний. Запрос прерывания TWSI поступает в блок прерываний при TWINT = 1 и TWIE = 1.

Код, формируемый в регистре TWSR, отражает состояние порта TWSI на различных этапах его работы.

Порт может работать в следующих режимах:

1) ведущий с передачей байтов данных;

2) ведущий с приемом байтов данных;

3) ведомый с приемом байтов данных;

4) ведомый с передачей байтов данных.

В табл.6. описан порядок управления портом TWSI при работе его в качестве ведущего с передачей байтов (табл.6, а) и с приемом байтов (табл.6,5) при отсутствии ошибок в процессе обмена.

В таблице используются следующие обозначения:

SLA, W/R - адресный байт, где SLA - адрес ведомого устройства;

DATA - байт данных;

(TWSR) - байт в регистре TWSR;

(TWDR) - байт в регистре TWDR;

: = - знак операции установки разряда регистра TWCR в указанное состояние.

В исходном состоянии разряд TWEN в регистре TWCR находится в единичном состоянии, остальные разряды - в нулевом состоянии.

В табл.7. описан порядок управления портом TWSI при работе его в качестве ведомого с приемом байтов (в табл.7, а) и с передачей байтов (в табл.7, б) при отсутствии ошибок в процессе обмена.

В исходном состоянии разряды TWEN и TWEA регистра TWCK находятся в единичном состоянии, другие разряды - в нулевом состоянии; в регистре TWAR записан байт SLA, 0/1.


Таблица 6

шага

Операция по команде

в программе

Условие перехода

к следующему шагу

а) ведущий с передачей байтов данных

1

TWSTA: =1

TWINT=1, (TWSR) =$08

2

SLA, 0TWDR


3

TWINT: =0

TWINT=1, (TWSR) =$18

4

DATATWDR


5

TWINT: =0

TWINT=1, (TWSR) =$28

Выполнение шагов 4, 5

N

TWSTO: =1 - конец передачи, освобождение шины IC

N

TWSTO: =1, TWSTA: =1

TWINT=1, (TWSR) =$10

N+1

Выполнение шага 2 в табл. а) или б) и далее

б) ведущий с приёмом байтов данных

1

TWSTA: =1

TWINT, (TWSR) =$08

2

SLA, 1TWDR


3

TWINT: =0

TWINT=1, (TWSR) =$40

4

(TWRD) Rd


5

TWINT: =0

TWINT=1, (TWSR) =$50

Выполнение шагов 4, 5

M

TWSTO: =1 - конец приема, освобождение шины IC

M

TWSTO: =1, TWSTA: =1

TWINT=1, (TWSR) =$10

M+1

Выполнение шага 2 в табл. а) или б) и далее


Таблица 7

шага

Операция по команде

в программе

Условие перехода

к следующему шагу


а) ведомый с приемом байтов данных

1

TWINT=1, (TWSR) =$60/$70

(TWDR) Rd

2


TWINT: =0

3

TWINT=1, (TWSR) =$80/$90

(TWDR) Rd

4


TWINT: =0

Далее шаги 3, 4


б) ведомый с выдачей байтов данных

1

TWINT=1, (TWSR) =$A8

DATATWDR

2


TWINT: =0

3

TWINT=1, (TWSR) =$B8

DATATWDR

4


TWINT: =0

Далее шаги 3, 4


Единичное состояние разряда TWINT в процессе обмена может определяться программными средствами с использованием команды условного перехода или аппаратными средствами по запросу прерывания TWSI. Во втором случае при инициализации порта необходимо установить в единичное состояние также разряд TWIE регистра TWCR.

При появлении ошибок в процессе обмена в регистре состояния TWSR появляются коды иные, чем указаны в табл.6 и 7.

Разряд TWWC регистра TWCR устанавливается в единичное состояние при попытке записать код в регистр TWDR во время сдвига кода в регистре.


5. Таймеры-счетчики общего назначения


Таймер-счетчик Т/СХ (X = 0, 1, 2 - цифра в имени таймера-счетчика) любого типа содержит базовый счетчик TCNTX, имеющий восемь или шестнадцать разрядов, и восьмиразрядный регистр управления TCCRX. Кроме того, в состав таймера-счетчика входят один или несколько разрядов регистра запросов, прерывания TIFR (№ $38, у МК типа 128 - № $05) и столько же разрядов регистра маскирования прерываний TIMSK (№ $39, у МК типа t28 - № $06). Регистры TIFR и TIMSK являются общими для всех таймеров-счетчиков микроконтроллера.

Разряд регистра TIFR устанавливается в единичное состояние при формировании в таймере-счетчике определенного запроса прерывания. Запрос прерывания проходит в блок прерываний при единичном состоянии соответствующего разряда регистра TIMSK. Разряд регистра TIFR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению соответствующей прерывающей программы или программно при выполнении команды установки бита в единичное состояние (!).

В состав таймера-счетчика, выполняющего функцию сравнения/PWM, входит регистр сравнения OCRX, а в состав таймера-счетчика, выполняющего функцию захвата, - регистр захвата ICRX. Разрядность регистров OCRX и ICRX равна разрядности базового счетчика TCNTX.

Для записи кода в шестнадцатиразрядный счетчик или регистр сначала выполняется команда записи (OUT) байта в старшую половину разрядов (Н), при этом поступавший из регистра общего назначения старший байт запоминается в регистре временного хранения. Затем выполняется команда записи (OUT) младшего байта в младшую половину разрядов (L), при этом оба байта одновременно записываются в счетчик или регистр.

Для чтения кода из шестнадцатиразрядного счетчика или регистра сначала выполняется команда чтения (IN) байта из младшей половины разрядов (L), при этом считанный младший байт поступает в регистр общего назначения, а старший байт запоминается в регистре временного хранения. Затем выполняется команда чтения байта из старшей половины разрядов (Н), при этом старший байт из регистра временного хранения поступает в указанный в команде регистр общего назначения.


5.1 Таймер-счетчик типа А


Таймер-счетчик типа А есть у микроконтроллеров всех типов кроме микроконтроллера типа тЮЗ. Он имеет имя Т/СО (X = 0). Таймер-счетчик типа А формирует запрос прерывания Т/СО OVF при переполнении восьмиразрядного базового счетчика TCNT0 (№ S32, у МК типа t28 - № $03).

Тактовый сигнал микроконтроллера СК поступает в пересчетную схему (prescaler) ПС, представляющую собой десятиразрядный счетчик, где выполняется деление частоты тактового сигнала на 8, 64, 256 и 1024. Сигналы с четырех выходов пересчетной схемы поступают в схему управления СУ (мультиплексор). При наличии в микроконтроллере таймера-счетчика Т/С1 эти же сигналы поступают в Т/С1.

В схему управления поступают также тактовый сигнал СК и сигнал из внешнего источника, принимаемый на вход ТО. В качестве входа то у микроконтроллеров типа 1200, 2313 и 4433 используется вывод порта PD4, у микроконтроллеров типа 2323, 2343 и серии ATtiny - вывод порта РВ2, а у микроконтроллеров типа 8515, 8535 и m163 - вывод порта РВО.

Схема управления в зависимости от комбинации состояний разрядов CSOO, CS01 и CS02 регистра управления TCCR0 (№$33, у МК тип t28 - № $04) передаст один из поступающих сигналов на счетный вход базового счетчика TCNT0, ведущего счет па сложение. Сигналы, используемые для счета в счетчике TCNT0 при разных комбинациях значений в разрядах регистра TCCR0, указаны в табл.8.


Таблица 8

CS02

CS01

CS00

сигнал

0

0

0

нет

0

0

1

СК

0

1

0

СК/8

0

1

1

СК/64

1

0

0

СК/256

1

0

1

СК/1024

1

1

0

Отрицательный фронт

на ТО

1

1

1

Положительный фронт

на ТО


При переполнении счетчика TCNT0 устанавливается в единичное состояние разряд TOV0 регистра TIFR и при единичном состоянии разряда TOIE0 регистра TIMSK в блок прерываний поступает запрос прерывания Т/СО OVF.

В микроконтроллере типа tl5 в работе таймера-счетчика типа А Участвуют разряд PSR0 регистра SFIOR (№ $2С). При установке этого Разряда в единичное состояние сбрасывается в исходное (нулевое) состояние пересчетная схема ПС. Разряд PSR0 возвращается в нулевое состояние аппаратно. В микроконтроллере типа ш163 аналогичная операция выполняется при установке в единичное состояние разряда PSR10 Регистра SFIOR (№ $30).


5.2 Таймер-счетчик типа В


Таймер-счетчик типа В входит в состав периферийных устройств микроконтроллеров типа 115 (Т/С1) и ml03 (Т/С2). Он формирует запрос прерывания Т/СХ OVF при переполнении восьмиразрядного базового счетчика TCNTX и выполняет функцию сравнения / PWM с формированием запроса прерывания Т/СХ СОМР.

Тактовый сигнал микроконтроллера СК поступает в пересчетную схему ПС, где частота сигнала делится на 8, 64., 256 и 1024. Сигналы с четырех выходов пересчетной схемы поступают в схему управления СУ1 и в таймер-счетчик Т/С1 типа Е. В схему управления СУ1 поступают также тактовый сигнал СК и сигнал из внешнего источника, принимаемый на вход Т2 (вывод порта PD7). При выполнении функции сравнения/PWM вывод порта РВ7 используется в качестве выхода OC2/PWM2 для выдачи сигнала, формируемого при совпадении сравниваемых кодов или сигнала PWM2.

Схема управления СУ1 в зависимости от комбинации состоянии разрядов CS20, CS21 и CS22 регистра управления TCCR2 передает на счетный вход базового счетчика TCNT2 одни из поступающих сигналов в соответствии с табл.8 (при X = 2).

При переполнении базового счетчика устанавливается в единичное состояние разряд TOV2 регистра TIFR и при единичном состоянии разряда TOIE2 регистра TIMSK в блок прерываний поступает запрос прерывания Т/С2 OVF.

Режим работы таймера-счетчика определяется комбинацией состояний разрядов PWM2, СОМ21 и СОМ20 регистра TCCR2. При нулевом состоянии трех названных разрядов формируется только запрос прерывания Т/С2 OVE При PWM2 = 0 и других комбинациях состояний разрядов СОМ21 и СОМ20 выполняется функция сравнения. Код, формируемый в базовом счетчике TCNT2, с помощью компаратора К сравнивается с кодом, записанным в регистре OCR2. При совпадении кодов устанавливается определенное значение сигнала на выходе ОС2 (вывод порта РВ7), переводится в единичное состояние разряд OCF2 регистра TIFR и при единичном состоянии разряда OCIE2 регистра T1MSK в блок прерываний поступает запрос прерывания Т/С2 СОМР. Значение сигнала, устанавливаемого на выходе ОС2 при совпадении кодов, определяется комбинацией состояний разрядов СОМ20 и С0М21 регистра TCCR2 в соответствии с табл.9.


Таблица 9

СОМ21

СОМ20

Значение сигнала

0

1

1

1

0

1

Изменяется

0

1


Работа базового счетчика при выполнении функции сравнения зависит от состояния разряда СТС2 регистра TCCR2. При СТС2 = 0 базовый счетчик после совпадения кодов продолжает счет до переполнения и далее выполняет счет, начиная с 0. При СТС2 = 1 базовый счетчик при совпадении кодов сбрасывается в пулевое состояние и продолжает счет, начиная с 0. При PWM2 = 1 и СОМ21 = 1 выполняется функция PWM. Базовый счетчик ведет счет на сложение до получения кода максимального числа (255), переводится в режим счета на вычитание и в этом режиме ведет счет до получения кода минимального числа (0) и далее вновь переходит в режим счета на сложении. Акт переполнения (переход от кода числа 255 к коду числа 0) в данном случае отсутствует.

Запрос прерывания Т/С2 OVF формируется при переходе от числа 0 к числу 1.

Состояние разряда СОМ20 определяет вид изменения выходного сигнала при совпадении кодов в счетчике и регистре сравнения. На изображены графиках изменения числа в счетчике TCNT2 и временные диаграммы сигнала PWM на выходе ОС2 при заданном коде числа в регистре сравнения (OCR2) при разных состояниях разряда СОМ20.

Период сигнала PWM (T) в 510 раз больше периода сигнала, поступающего на счетный вход базового счетчика.

При записи байта в регистр OCR2 (по команде с мнемокодом операции OUT) байт принимается в регистр временного хранения, из регистра второго переписывается в регистр OCR2 при появлении в базовом счетчике кода числа 255.

При этом исключается появление в сигнале PWM импульса со случайной длительностью.


а) C0M20=0 б) С0М20=1

Рис.1


Таймер-счетчик типа В в микроконтроллере типа t15 имеет имя Т/С1 (Х = 1). Исходный сигнал для работы таймера-счетчика (РСК) имеет частоту 25,6 МГц при частоте тактового сигнала микроконтроллера 1,6 МГц (1/16 РСК). В регистре управления имеется дополнительный разряд CS1 Выбор сигнала для передачи на счетный вход базового счетчика определяется комбинацией состояний разрядов CS13, CS12, CS11 и CS10 в соответствии с табл.10. Вход для приема сигнала из внешнего источника отсутствует.


Таблица 10

CS13

CS12

CS11

CS10

Сигнал

0

0

0

0

нет

0

0

0

1

РСК (16СК)

0

0

1

0

РСК/2 (8 СК)

0

0

1

1

РСК/4 (4 СК)

0

1

0

0

РСК/8 (2 СК)

0

1

0

1

РСКЛб (СК)

0

1

1

0

СК/2

0

1

1

1

СК/4

1

0

0

0

СК/8

1

0

0

1

СК/16

1

0

1

0

СК/32

1

0

1

1

СК/64

1

1

0

0

СК/128

1

1

0

1

СК/256

1

1

1

0

СК/512

1

1

1

1

СК/1024


В состав таймера-счетчика входят два регистра сравнения - OCR10 и OCR11. Регистр OCR10 используются при выполнении функции сравнения. Регистр OCR11 используется совместно с регистром OCR10 при выполнении функции PWM. Базовый счетчик работает в режиме счета на сложение и ведет счет от 0 до числа, код которого записан в регистре OCR11. Сигнал 0C1/PWM выдается на вывод порта РВ1.

В микроконтроллере типа tl5 в работе таймера-счетчика Т/С1 участвуют разряды FOC1A и PSR1 регистра SFIOR (№ $2С).

В режиме сравнения при установке в единичное состояние разряда FOC1A на выходе ОС1 устанавливается требуемое значение сигнала немедленно, не дожидаясь совпадения кодов в базовом счетчике и регистре сравнения. При этом запрос прерывания Т/С1 СОМР не формируется и базовый счетчик не сбрасывается в нулевое состояние при СТС1 = 1. Разряд FOC1A сбрасывается в нулевое состояние аппаратно. В режиме PWM он не используется.

При установке в единичное состояние разряда PSR1 сбрасывается в исходное (нулевое) состояние пересчетная схема ПС. Разряд сбрасывается в нулевое состояние аппаратно.


5.3 Таймер-счетчик типа С


Таймер-счетчик типа С входит в состав периферийных устройств микроконтроллеров типа 8535 и ml63 (Т/С2) и типа ml03 (Т/СО). Он формирует запрос прерывания Т/СХ OVF при переполнении восьмиразрядного базового счетчика TCNTX, может выполнять функцию сравнения/PWM и работать в режиме счета реального времени. В структуру таймера-счетчика типа С входят все элементы таймера-счетчика типа В и, кроме того, регистр ASSR (№ $30), мультиплексор М и внутренний генератор G.

В качестве исходного сигнала для работы базового счетчика TCNT0 может использоваться тактовый сигнал микроконтроллера СК или сигнал TOSC1 из дополнительного внутреннего генератора G, к которому через выводы TOSC1 и TOSC2 подключен кварцевый резонатор КР2.

При частоте резонатора 32768 Гц ("часовой" кварц) параметры процессов в таймере-счетчике с высокой точностью привязаны к единице измерения реального времени - секунде.

При нулевом состоянии разряда AS0 регистра ASSR используется тактовый сигнал СК, при единичном состоянии - сигнал генератора G (режим реального времени). Выбранный сигнал РСКО с выхода мультиплексора М поступает в пересчетную схему ПС, в которой выполняется деление частоты на 8, 32, 64, 128, 256 и 1024.

Сигналы с шести выходов пересчетной схемы и сигнал с выхода мультиплексора поступают в схему управления СУ1. Выбор сигнала для передачи на счетный вход базового счетчика определяется комбинацией состояний разрядов CSOO, CS01 и CS02 регистра управления TCCR0 в соответствии с табл.11.


Таблица 11

CS02

CS01

CS00

Сигнал

0

0

0

нет

0

0

1

РСКО

0

1

0

РСКО/8

0

1

1

РСКО/32

1

0

0

РСКО/64

1

0

1

РСКО/128

1

1

0

PC КО/256

1

1

1

РСКО/1024


При работе в режиме реального времени (AS0 = 1) процесс счета в базовом счетчике привязан к сигналу TOSC1, а запись в регистры TCCR0 и OCR0 п в счетчик TCNT0 - к сигналу СК. Для исключения конфликтных ситуаций в счетчике TCNT0 в режиме реального времени используются регистры временного хранения. При записи кода (но команде OUT) байт принимается в соответствующий регистр временного хранения, при этом устанавливается в единичное состояние соответствующий разряд регистра ASSR - TCN0UB при записи в счетчик TCNTO, OCR0UB при записи в регистр OCRO, TCR0UB при записи в регистр TCCR0. Перепись байта из регистра временного хранения в основной регистр или счетчик привязана к сигналу TOSC1, при этом соответствующий разряд регистра ASSR сбрасывается в нулевое состояние. Очередная запись в регистр пли счетчик по команде OUT может производиться при нулевом состоянии соответствующего разряда регистра ASSR.

У микроконтроллеров топа 8535 и ml63 для подключения кварцевого резонатора КР2 используются выводы порта РС6 п РС7, а у микроконтроллеров типа ml03 - специальные выводы корпуса.

В таймере-счетчике типа С в микроконтроллере тина т163 (X = 2) в регистре TCCR2 имеется дополнительный разряд FOC2 и в регистре SF1OR - дополнительный разряд PSD2.

В режиме сравнения при установке в единичное состояние разряда FOC2 сигнал па выходе ОС2 принимает требуемое значение немедленно, не дожидаясь совпадения сравниваемых кодов. При этом запрос прерывания Т/С2 СОМР не формируется и базовый счетчик не сбрасывается. Сброс разряда FOC2 в нулевое состояние выполняется аппаратно. В режиме PWM разряд FOC2 не используется.

При установке в единичное состояние разряда PSR2 сбрасывается в исходное (нулевое) состояние пересчетная схема ПС.

Сброс разряда PSR2 в нулевое состояние выполняется аппаратно.


5.4 Таймер-счетчик типа D


Таймер-счетчик тина D входит в состав периферийных устройств микроконтроллеров типа 2313 и 4433, п имеет имя Т/С1. Он содержит шестнадцатиразрядный базовый счетчик и выполняет функции захвата и сравнения/PWM. .

На счетный вход шестнадцатиразрядного базового счетчика TCNT1H, L с выхода схемы управления СУ1 может поступать тактовый сигнал микроконтроллера СК, или один из четырех сигналов из пересчетной схемы, которая является общей для таймеров-счетчиков Т/СО и Т/С1, или сигнал из внешнего источника, принимаемый на вход Т1.

В качестве входа Т1 используется вывод порта PD5. Выбор сигнала определяется комбинацией состояний разрядов CS10, CS11 и CS12 регистра управления TCCR1B в соответствии с табл.8 (X = 1, Т0 = Т1). При переполнении базового счетчика устанавливается в единичное состояние разряд TOV1 регистра TIFR и при единичном состоянии разряд TOIE1 регистра TIMSK в блок прерываний поступает запрос прерывания T/Cl OVF.

Схема управления СУ2 управляет выполнением функции захвата, которая заключается в передаче кода, сформированного в базовом счетчике, через ключевую схему КС в шестнадцатиразрядный регистр захвата 1CR1H, L. При этом устанавливается в единичное состояние разряд ICF1 регистра TIFR и при единичном состоянии разряда TICIE1 регистра TIMSK в блок прерываний поступает запрос прерывания Т/С1 СAPT.

Захват выполняется при изменении значения внешнего сигнала, поступающего на вход ICP, или внутреннего сигнала АСО, поступающего из аналогового компаратора. Выбор сигнала определяется состоянием разряда ACIC регистра ACSR, который входит в состав аналогового компаратора. При ACIC = 0 используется внешний сигнал, при ACIC = 1 - внутренний. Вид изменения сигнала, при котором выполняется захват, определяется состоянием разряда ICES1 регистра TCCR1B. При ICES1 = О захват выполняется при появлении отрицательного фронта сигнала, а при ICES1 = 1 - положительного фронта.

В качестве входа ICP у микроконтроллера тина 2313 используется вывод порта PD6, а у микроконтроллера типа 4433 - вывод порта РВО.

Разряд ICNC1 регистра TCCR1B управляет работой схемы подавления помех. При ICNC1 = 0 захват выполняется при каждом появлении фронта заданной полярности.

При ICNC1 = 1 захват происходит, если перед появлением фронта в течение четырех тактов сигнал сохраняет постоянное значение.

Схема управления СУЗ управляет выполнением функции сравнения/PWM. Функция сравнения заключается в выдаче определенного значения сигнала на выходе ОС1 при совпадении кодов в базовом счетчике и шестнадцатиразрядном регистре сравнения OCR1H, L, которое выявляется с помощью компаратора К. При этом также устанавливается в единичное состояние разряд OCF1A регистра TIFR и при единичном состоянии разряда OCIE1A регистра TIMSK в блок прерываний поступает запрос прерывания Т/С1 СОМР.

Функция PWM заключается в выдаче на выход ОС1 импульсного сигнала с заданным периодом повторения и заданной длительностью импульса. При этом также периодически формируется запрос прерывания Т/С1 СОМР.

Работа схемы СУЗ определяется комбинацией состояний разрядов PWM10, PWM11, СОМ1А0 и СОМ1А1 регистра управления TCCR1A. При нулевом состоянии всех четырех разрядов функция сравнения/PWM не выполняется и выход ОС1 отключен ог вывода порта.

При PWM10 = 0, PWM11 = O и других комбинациях состояний разрядов СОМ 1 АО и СОМ1А1 выполняется функция сравнения. Значение сигнала, устанавливаемое на выходе ОС1 при совпадении кодов, указано в табл.12.


Таблица 12

СОМ1А1

СОМ1А0

Значение сигнала

0

1

1

1

0

1

Изменяется

0

1


При выполнении функции сравнения режим работы базового счетчика зависит от состояния разряда СТС1 регистра управления TCCR1B. При СТС1 = 1 базовый счетчик при совпадении кодов сбрасывается в Нулевое состояние и продолжает счет, начиная с 0. При СТС1 = 0 он Продолжает счет до переполнения и далее ведет счет, начиная с 0.

При единичном состоянии хотя бы одного из разрядов PWM10 и PWM11 и единичном состоянии разряда СОМ1А1 выполняется функция PWM. В этом случае базовый счетчик ведет счет па сложение до получения числа 255 или 511 или 1023, переходит в режим счета на вычитание, ведет счет на вычитание до получения числа 0 и вновь возвращается в режим счета на сложение. Выбор максимального числа, Wmax), до которого ведется счет на сложение, определяется комбинацией состояний разрядов PWM11 и PWM10 регистра управления TCCR1A в соответствии с табл.13


Таблица 13

PWM11

PWM10

Nmax

0

1

255

1

0

511

1

1

1023


Сигнал PWM формируется путем изменения значения сигнала на выходе ОС1 при совпадении кодов в базовом счетчике и регистре OCR1 в процессе счета на сложение и на вычитание. Вид изменения сигнала зависит от состояния разряда СОМ1А0.

Период сигнала PWM (T) зависит от максимального числа, до которого выполняется счет на сложение. При Nmax = 255 период в 510 раз больше периода следования импульсов на счетном входе базового счетчика. При Nmax = 511 и 1023 это отношение равно 1022 и 2046 соответственно.

Разряд СТС1 регистра TCCR1B в режиме PWM не используется. Запрос прерывания T/Cl OVF формируется при переходе базового счетчика от числа 0 к числу 1. При записи кода в регистр OCR1 код запоминается в регистре временного хранения. Перепись кода в регистр OCR1 выполняется при появлении в базовом счетчике максимального числа, что предотвращает появление в сигнале PWM импульса со случайной длительностью.

В качестве выхода ОС1 у микроконтроллера типа 2313 используется вывод порта РВЗ, а у микроконтроллера типа 4433 - вывод порта PB1


5.5 Таймер-счетчик типа Е


Таймер-счетчик типа Е входит в состав периферийных устройств микроконтроллеров типа 8515, 8535, т163 и тЮЗ и имеет имя Т/С1. Он содержит шестнадцатиразрядный базовый счетчик и выполняет функцию сравнения/PWM в двух каналах (А и В) и функцию захвата.

В структуру таймера-счетчика типа Е входят все элементы структуры таймера-счетчика типа D. Элементы на схеме, используемые при выполнении функции сравнения/РWМ, образуют канал А.

Дополнительными элементами являются компаратор канала В (KB), регистр сравнения OCR1BH, L, два дополнительных разряда СОМ1В0 и СОМ1В1 в регистре TCCR1A, дополнительный разряд OCF1B в регистре T1FR и дополнительный разряд OCIE1B в регистре T1MSK. В канале В формируется запрос прерывания Т/С1 СОМРВ.

Сигнал, изменяемый при выполнении функции сравнения, и сигнал PWM поступают на выход ОС1В.

Выводы микроконтроллера, используемые в качестве входов Т1 и ICP и выходов ОС1А и ОС1В у микроконтроллеров разных типов, указаны в табл.14.


Таблица 14

Выводы Т/С1

Тип МК


8515

8535

t163

m10З

Т1

РВ1

РВ1

РВ1

PD6

ICP

ОБ.

PD6

PD6

PD4

ОС1А

PD5

PD5

PD5

РВ5

ОС1В

О.В.

PD4

PD4

РВ6


О.В. - отдельный вывод корпуса.

В микроконтроллере типа ml63 в регистре TCCR1A имеются два дополнительных разряда - FOC1A и F0C1B. При установке разряда в единичное состояние при выполнении функции сравнения сигнал на выходе ОС1А/В принимает требуемое значение немедленно, не дожидаясь совпадения сравниваемых кодов. Запрос прерывания при этом не формируется и базовый счетчик в нулевое состояние не сбрасывается Разряд сбрасывается в нулевое состояние аппаратно. В режиме PWlVf эти разряды не используются.

В регистре SFIOR имеется дополнительный разряд PSR10. При установке этого разряда в единичное состояние пересчетная схема сбрасывается в исходное (нулевое) состояние. Разряд PSR10 сбрасывается в нулевое состояние аппаратно.


6. Сторожевой таймер


В состав сторожевого таймера входят автономный генератор, пере-счетная схема, регистр управления WDTCR (№ $21, у МК типа t28 - №$01) и схема управления.

Генератор GWDT формирует импульсную последовательность. Частота следования импульсов зависит от напряжения питания микроконтроллера (1 МГц при Vcc = 5 В, 350 кГц при Vcc = 3 В). В пересчетной схеме ПС, содержащей многоразрядный счетчик, выполняется деление частоты сигнала генератора. На восьми выходах пересчетной схемы формируются сигналы, частота которых в N раз меньше частоты входного сигнала. Выбор выхода пересчетной схемы с требуемым коэффициентом деления Доопределяется комбинацией состояний разрядов WDPO, WDP1 л WDP2 регистра WDTCR в соответствии с табл.15.


Таблица 15

WDP2

WDP1

WDP0

N

TOUT, Усc = 5 В

TOUT, Vcc = 3 В

0

0

0

16К

15 мс

47 МС

0

0

1

32 К

30 мс

94 мс

0

1

0

64 К

60 мс

190 мс

0

1

1

128 К

120 мс

380 мс

1

0

0

256 К

240 мс

750 мс

1

0

1

512 К

490 мс

1,5 с

1

1

0

1024 К

970 мс

3,0 с

1

1

1

2048 К

1,9 с

6,0 с


При единичном состоянии разряда WDE регистра WDTCR на выходе схемы управления СУ с частотой выбранного сигнала формируется запрос прерывания WDT Reset, при появлении которого происходит перезапуск микроконтроллера WDT Reset (п.4.2).

По команде с мнемокодом WDR (№ 117) выполняется сброс пересчетной схемы в исходное (нулевое) состояние.

Для запуска сторожевого таймера необходимо в ходе программы выполнить команду WDR и затем установить в единичное состояние разряд WDE регистра WDTCR.

Для остановки сторожевого таймера необходимо установить в единичное состояние разряд WDTOE регистра WDTCR и одновременно повторно установить в единичное состояние разряд WDE, затем не позднее, чем через четыре такта после этого сбросить в нулевое состояние разряд WDE. Разряд WDTOE сбрасывает в нулевое состояние аппаратно через четыре такта после установки его в единичное состояние. У микроконтроллера типа 1200 разряд WDTOE отсутствует.

Перезапуск сторожевого таймера происходит при выполнении команды WDR в ходе программы при единичном состоянии разряда WDE.

Программа, в которой предусмотрено использование сторожевого Таймера, должна периодически с интервалом меньшим, чем период формирования запроса прерывания WDT Reset, с использованием команды WDR перезапускать сторожевой таймер. Если при появлении сбоя команда WDR своевременно не выполняется, происходит перезапуск микроконтроллера. Интервал времени TOUT, через который следует выполнять команду WDR в ходе программы, при разных значениях коэффициента деления N и напряжения питания Vcc указан в табл.15.


7. Аналого-цифровой преобразователь


Аналого-цифровой преобразователь входит в состав периферийных устройств микроконтроллеров типа 115, 4433, 8535, ml63 и ml0 Аналого-цифровой преобразователь содержит базовый преобразователь, выполняющий преобразование аналогового сигнала в десятиразрядный двоичный код методом последовательных приближении, аналоговый мультиплексор для подключения одного из входов микроконтроллера к входу базового преобразователя, регистр управления ADMUX (№ $07), регистр управления-состояния ADCSR (№ $06) п шестнадцатиразрядный регистр результата ADCH, L (№№ $05, $04).

Для подачи напряжения питания и опорного напряжения используются отдельные выводы микроконтроллера AVCC, AGND и AREF.

Вывод AGND соединяется с выводом GND микроконтроллера. Напряжение на выводе AVCC не должно отличаться от напряжения на выводе VCC микроконтроллера более, чем на ± 0,3 В. Напряжение на выводе AREF должно находиться в пределах от уровня на выводе AGND до уровня на выводе AVCC.

Аналоговые сигналы принимаются на выводы микроконтроллера ADC0, ADC1... ADC7. Величина напряжения аналогового сигнала может находиться в пределах от уровня на шине AGND до уровня на шине AVCC. Аналоговый мультиплексор AM подключает один из входов микроконтроллера к входу базового преобразователя CONV. Двоичный код номера подключаемого входа задается комбинацией состояний разрядов MUX2, MUX1, MUX0 регистра ADMUX.

Преобразование аналогового сигнала в цифровой код в преобразователе CONV выполняется под управлением тактового сигнала, частота которого должна находиться в пределах от 50 кГц до 200 кГц.

Тактовый сигнал формируется в пересчетной схеме ПС путем деления частоты тактового сигнала микроконтроллера СК. Пересчетная схема работает при единичном состоянии разряда ADEN регистра ADCSR. Коэффициент деления частоты (К) определяется комбинацией состояний разрядов ADPS2, ADPS1, ADPS0 регистра ADCSR в соответствии с табл.16.


Таблица 16

ADPS2

ADPS1

ADPS0

к

0

0

0

2

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128


Преобразование начинается при установке в единичное состояние разряда ADSC регистра ADCSR. Разряд ADSC сохраняет единичное состояние до завершения преобразования и затем аппаратно переводится в нулевое состояние. Сформированный десятиразрядный код переписывается в регистр результата ADCH, L, при этом устанавливается в единичное состояние разряд ADIF регистра ADCSR и при единичном состоянии разряда ADIE регистра ADCSR в блок прерываний поступает запрос прерывания ADC CC (ADC Conversion Complete).

Разряд ADIF регистра ADCSR сбрасывается в нулевое состояние аппаратно при переходе микроконтроллера к выполнению прерывающей Программы или при выполнении команды установки бита в единичное состояние.

Чтение результата из шестнадцатиразрядного регистра ADCH, L Должно начинаться с чтения младшего байта. При этом блокируется занесение нового результата из базового преобразователя в регистр Результата и считанный затем старший байт принадлежит тому же Результату, что и считанный ранее младший байт.

Преобразователь может работать в одиночном режиме и в циклическом режиме. Выбор режима определяется состоянием разряда ADFR регистра ADCSR. При ADFR = 0 преобразователь работает в одиночном режиме.

Преобразование начинается при установке в единичное состояние разряда ADSC и выполняется за 14 тактов. Для выполнения следующего преобразования необходимо вновь установить в единичное состояние разряд ADSC.

При ADFR = 1 преобразователь работает в циклическом режиме. Работа начинается при установке в единичное состояние разряда ADSC. Преобразование выполняется за 13 тактов, после чего сразу начинается следующее преобразование. Работа в циклическом режиме прекращается после сброса в нулевое состояние результата ADFR.

В обоих режимах на выполнение первого преобразования после пуска пересчетной схемы затрачивается на 12 тактов больше, чем на выполнение последующих преобразований. Эти такты обеспечивают инициализацию преобразователя.

Для уменьшения помех, вызываемых работой процессора, предусмотрена возможность выполнения преобразования с переводом контроллера в режим холостого хода. Преобразователь должен находиться в одиночном режиме (ADFR = 0), пересчетная схема работает (ADEN = 1), прерывания разрешено (ADIE =1), запуск преобразования отсутствует (ADSC = 0). Контроллер переводится в режим холостого хода (п.4.3), при этом аппаратно запускается преобразователь. При завершении преобразования поступает запрос прерывания ADC CC, контроллер выходит из режима холостого хода, выполняет прерывающую программу и возвращается к выполнению программы с точки перехода в режим холостого хода.

Аналого-цифровые преобразователи микроконтроллеров других типов имеют некоторые отличия от рассмотренного преобразователя.

В микроконтроллере типа 4433 имеется возможность подключения к входу базового преобразователя внутреннего источника эталонного напряжения 1,22 ±0,05 В. Подключение выполняется при установке в единичное состояние дополнительного разряда ADCBG в регистре ADMUX.

В микроконтроллере типа t15 в качестве опорного напряжения кроме напряжения от внешнего источника, подаваемого на вывод AREF, может использоваться напряжение на выводе VCC или напряжение от внутреннего источника. Выбор источника осуществляется путем установки определенной комбинации состояний дополнительных разрядов REFSl> REFS0 регистра ADMUX. В качестве входного сигнала может использоваться разность напряжений на входах ADC2 и ADC В этом случае напряжение на этих входах должно изменяться в пределах от О до 2,56 В, а разностный сигнал перед преобразованием может усиливаться в 20 раз. Разностный сигнал без усиления используется при комбинации состояний 110 в разрядах MUX2, MUX1, MUX0, а разностный сигнал с усилением - при комбинации 111.

В регистре ADMUX, кроме того, имеется дополнительный разряд ADLAR. При ADLAR = 0 код результата размещается в младших десяти разрядах пары регистров ADC H, L, а при ADLAR = 1 - в старших десяти разрядах этой пары регистров.

В микроконтроллере типа ml03 аналого-цифровой преобразователь не работает в циклическом режиме и в регистре ADCSR отсутствует разряд ADFR. Комбинация 000 разрядов ADPS2, ADPS1, ADPS0 регистра ADCSR не используется.

В микроконтроллере типа ml63 в качестве опорного напряжения может использоваться напряжение 2,56 В от внутреннего источника или напряжения на выводе VCC. Выбор опорного напряжения определяется комбинацией состояний дополнительных разрядов REFS1 и REFS0 регистра ADMUX. Кроме того, в регистре ADMUX имеется дополнительный разряд ADLAR. При ADLAR = 1 десятиразрядный код результата помещается в старшие десять разрядов регистра ADCH, L. При чтении старшего байта получают восьмиразрядный код результата.

Микроконтроллеры типа tl5 и т163 могут переводиться в энергосберегающий режим работы с подавлением помех в работе аналогового преобразователя (п.4.3).

В табл.17 указаны выводы микроконтроллера, используемые в качестве входов аналого-цифрового преобразователя у микроконтроллеров разных типов. У микроконтроллера типа t15 для подачи опорного напряжения используется вывод PB0.


Таблица 17

Тип МК

Входы ADC

ADO

ADC1

ADC2

ADC3

ADC4

ADC5

ADC6

ADC7

t15

РВ5

РВ2

РВЗ

РВ4





4433

РСО

РС1

РС2

РСЗ

РС4

РС5



8535

РАО

РА1

РА2

РАЗ

РА4

РА5

РА6

РА7

m163

РАО

РА1

РА2

РАЗ

РА4

РА5

РА6

РА7

m103

PFO

PF1

PF2

PF3

PF4

PF5

PF6

PF7



8. Аналоговый компаратор


Аналоговый компаратор входит в состав периферийных устройств Микроконтроллеров всех типов, кроме 2323 и 234 Аналоговый Компаратор имеет два входа - AIN0 и AIN1, на которые поступают аналоговые сигналы, сравниваемые по величине напряжения. В состав аналогового компаратора кроме базового компаратора входит регистр управления-состояния ACSR (№ $08) и элементы, управляющие работой схемы. Результатом работы компаратора является запрос прерывание ANA COMP, который формируется, когда разность значений напряжения на входах компаратора меняет знак.

Базовый компаратор К имеет два входа - положительный (+) и отрицательный (-). Выходной сигнал базового компаратора АСО имеет единичное значение, если напряжение на входе "+" больше напряжения па входе "-".

Схема управления СУ при определенном изменении сигнала АСО устанавливает в единичное состояние разряд ACI регистра ACSR и при единичном состоянии разряда ACIE регистра ACSR в блок прерываний поступает запрос прерывания ANA COMP.

Разряд ACI сбрасывается в нулевое состояние аппаратно при переходе к выполнению прерывающей программы или программно путем записи единицы в разряд ACI.

Выбор вида изменения сигнала АСО на входе схемы управления СУ, при котором формируется запрос прерывания, определяется комбинацией состояний разрядов ACIS0 и ACIS1 регистра ACSR в соответствии с табл.18.


Таблица 18

ACIS1

ACISO

Изменение сигнала АСО

0

0

любое

0

1

-

1

о

1→0

1

1

0→1


В микроконтроллерах, имеющих таймер-счетчик, который выполняет функцию захвата, (Т/С типа D или Е) сигнал АСО с выхода базового компаратора при единичном состоянии разряда АС1С принимается в таймер-счетчик в качестве сигнала, управляющего захватом.

При установке в единичное состояние разряда ACD регистра ACSR отключается питание базового компаратора и уменьшается ток потребления микроконтроллера.

В микроконтроллерах типа t12, t15, 4433 и m163 имеется возможность подключать к вход) ' "+" базового компаратора вместо входа AIN0 выход внутреннего источника эталонного напряжения VR (1,22 ±0,05 В). Подключение источника VR выполняется при единичном состоянии разряда AINBG регистра ACSR. В микроконтроллерах других типов элементы схемы VR и М и разряд AINBG в регистре ACSR отсутствуют.

В микроконтроллере типа ml63, кроме того, имеется возможность подключать к входу "-" базового компаратора входы аналого-цифрового преобразователя ADC0... ADC7. Подключение выполняется при нулевом состоянии разряда ADEN регистра ADCSR (№ $06) и единичном состоянии разряда ACME регистра SFIOR (№ $30). Выбор подключаемого входа определяется комбинацией состояний разрядов MUX2, MUX1 и MUX0 регистра ADMUX (№ $07).

В табл. 19 указаны выводы микроконтроллера, используемые в качестве входов AIN0 и AIN1, у микроконтроллеров разных типов.


Таблица 19

Вход

t11

t12

t15 t28

1200 2313

4433

8515 8535

m163

m103*

AIN0 AIN1

РВО РВ1

РВО РВ 1

РВО

РВ 1

PD6 PD7

РВ 2 РВЗ

РВ 2 РВЗ

РЕ 2 РЕЗ

* - АС+, АС-


9. Программируемый аппаратный модулятор


Программируемый аппаратный модулятор входит в состав периферийных устройств микроконтроллера тина t28.

Программируемый аппаратный модулятор включен между выходом Разряда PORTA.2 регистра PORTA (№ $1В) и внешним выводом РА2 порта РА. Вывод РА2 работает только в режиме выхода. Состояние разряда РА2НС регистра управления PACR (№ S1A) определяет в данном случае не направление передачи бита, а нагрузочную способность выхода. При РА2НС = 0 ток IоL может иметь величину до 15 мА (при Fcc = l,8 В), При РА2НС = 1 он может быть увеличен до 25 мА (при Vcc = l,8 В).

В состав модулятора входит регистр управления MODCR (№ $02), с помощью которого задаются длительность импульса и скважность импульсного сигнала на выходе РА2. Работа модулятора связана с работой таймера-счетчика Т/СО типа А, который у микроконтроллера типа t28 имеет некоторые особенности.

Управляющая импульсная последовательность с заданными параметрами формируется в пересчетной схеме модулятора (ПСМ), на один из входов которой поступает тактовый сигнал микроконтроллера (СК).

Длительность интервала, в течение которого сигнал на выходе РА2 имеет низкий уровень, определяется по формуле:



где (ONTIM) - число, код которого записан в разрядах ONTIM4 - ONTIM0 регистра MODCR; FCK ~ тактовая частота микроконтроллера.

где (ONTIM) - число, код которого записан в разрядах ONTIM4 - ONTIM0 регистра MODCR; FCK ~ тактовая частота микроконтроллера.

работа периферийных устройств

Скважность сигнала DC, определяемая по формуле



где Т - период следования импульсов, задается кодом, записанным в разрядах MCONF2-MCONF0 регистра MODCR в соответствии с табл. 20. В таблице указаны также состояние разряда PORTA2 регистра PORTA, период следования импульсов Т и состояние выхода РА2 (L - низкий уровень, Н - высокий уровень, ИМП - импульсная последовательность)


Таблица 20

MCONF2 - 0

PORTA2

DC

T

PA2

000

0

100%

-

L

001

0

50%

2 TON

имп.

010

0

33%

3 TON

имп.

011

0

25%

4 TON

имп.

100

0

67%

3 TON

имп.

101

0

75%

4 TON

имп.

110

0

-

-

?

111

0

50%

2/FCK

имп.

XXX

1

0%

-

Н

- TON = 1/FCK


Выходной сигнал с заданной с использованием разряда РА2НС регистра PACR допустимой величиной тока нагрузки формируется на выходе управляющей схемы модулятора (УСМ).

В таймере-счетчике Т/СО пересчетная схема ПС делит частоту тактового сигнала на 64, 256 и 1024. Сигнал с трех выходов пересчетной системы поступает в схему управления СУ1, в которую также поступают сигнал с вывода ТО, тактовый сигнал микроконтроллера и сигнал с дополнительного выхода пересчетной схемы модулятора.

Схема управления СУ1 в зависимости от комбинации состояний Разрядов CS00-CS02 регистра TCCR0 (№ $ 04) передает один из сиг-Налов на счетный вход базового счетчика TCNT0 (№ $03) в соответствии с табл.21.

При переполнении базового счетчика устанавливается в единичное состояние разряд TOV0 регистра IFR (№ $05) и при единичном состоянии разряда TOIE0 регистра ICR (№ $06) в блок прерываний Поступает запрос прерывания Т/СО OVF.

Кроме того, сигнал переполнения поступает в схему управления СУ2, которая в зависимости от комбинации состояний разрядов ООМОО и ООМ01 регистра TCCRO изменяет состояние разряда PORT2 регистра PORTA в соответствии с табл.22.


Таблица 21

CS02

CS01

CS00

Сигнал

0

0

0

нет

0

0

1

СК

0

1

0

пcм

0

1

1

СК/64

1

0

0

СК/256

1

0

1

СК/1024

1

1

0

отрицательный фронт на ТО

1

1

1

положительный фронт на ТО


Таблица 22

ООМ01

ООМОО

(PORTA2)

0

0

не изменяется

0

1

изменяется

1

0

0

1

1



При установке в единичное состояние разряда FOV0 регистра TCCRO сбрасывается в пулевое состояние базовый счетчик TCNT0 и поступает сигнал переполнения в схему СУ2.

Запрос прерывания Т/СО OVF при этом не формируется. Разряд FOV0 сбрасывается в нулевое состояние аппаратно.

10. Блок прерываний


Блок прерывании принимает запросы прерывания и организует переход к выполнению определенной прерывающей программы. Запросы прерывания поступают из внешних источников и из источников, расположенных в различных устройствах микроконтроллера.

В качестве входов для приема запросов из внешних источников используются выводы параллельных портов ввода-вывода, для которых эта функция является альтернативной. При выполнении альтернативной функции вывод порта имеет альтернативное имя INTx (х = 0, 1,..., 7).

Запрос прерывания из внешнего источника может быть представлен низким уровнем сигнала (L), переходом от высокого уровня к низкому (HL), переходом от низкого уровня к высокому (LH) или переходом любого направления (LH/HL). Выбор способа представления определяется комбинацией состоянии разрядов ISCxO и ISCxl в регистре MCUCR (№ $D5), в микроконтроллере типа ml03 - в регистре EICR (№ $ЗА).

В табл.23 указаны способы представления запроса прерывания при разных комбинациях состояний названных разрядов.


Таблица 23

ISCX1

ISCX0

Способ

0

0

L

0

1

LH/HL

1

0

HL

1

1

LH


В микроконтроллерах серии ATtiny в качестве запроса прерывания могут использоваться любые изменения значения сигнала (для микроконтроллеров типа t1l, t12, t15) или низкий уровень сигнала (для микроконтроллера типа г28) на любом выводе порта РВ. Запрос прерывания, формируемый при этом, имеет имя I/O PINS, а в микроконтроллере типа t28 - LLI PINS.

В табл.24 указаны выводы параллельных портов, выполняющие альтернативную функцию приема запроса прерывания из внешнего источника, и отмечены особенности представления запроса прерывания у микроконтроллеров разных типов.

Любой запрос прерывания поступает в блок прерываний, если прерывания в микроконтроллере разрешены (I = SREG.7 = 1) и разрешено прерывание по данному запросу. Прерывание по отдельному запросу разрешено, если в единичном состоянии находится маскирующий разряд (MASK) для данного запроса прерывания, расположенный в одном из регистров ввода-вывода.

При появлении запроса прерывания устанавливается в единичное состояние флажковый разряд (FLAG) для данного запроса прерывания, расположенный в одном из регистров ввода-вывода. Состояние флажкового разряда опрашивается аппаратно и, кроме того, может быть опрошено программными средствами.

В табл.25 указаны устройства, в которых расположены источники запросов прерывания, приведены в виде дроби имена маскирующих и флажковых разрядов (в числителе) и регистров ввода-вывода, в которых они расположены, (в знаменателе) у микроконтроллеров разных типов.


Таблица 24

Тип МК

INTO


INT1

I/O PINS

t11, t12

PB1



PBO-PB5 (2)

t15

PB2



PBO-PB5 (2)

2323, 2343

PB1 (1)




1200

PD2 (1)




2313

PD2 (1)


PD3 (1)


t28

PB3


PB4

PBO-PB7 (3)

4433

PD2


PD3


8515

PD2 (1)


PD3 (1)


8535

PD2 (1)


PD3 (1)


m163

PD2


PD3


m103


INTO-INT3

INT4-INT7



PDO-PD3 (3)

PE4 - PE7 (1)

(1) - кроме LH/HL, (2) - только LH/HL, (3) - только L


Таблица 25

Устройство

Запрос прерывания

MASK

FLAG

CPU, WDT

RESET



Внешние

INT0

INT1

INT0/GIMSK

INT1/GIMSK

INTF0/GIFR

INTF1/GIFR

INT0 - INT3

INT4 - INT7

INT0 - INT3/EIMSK

INT4 - INT7/EIMSK

INTF4 - INTF7/EIFR

I/O PINS

LLI PINS

PCIE/GIMSK

LLIE/ICR

PCIF/GIFR

T/C2

T/C2 COMP

T/C2 OVF

OCIE2/TIMSK

TOIE2/TIMSK

OCF2/TIFR

TOV2/TIFR

T/C1

T/C1 CAPT

T/C1 COMPA

T/C1 COMP B

T/C1 OVF

TICIE1/TIMSK

OCIE1A/ TIMSK*

OCIE1B/ TIMSK

TOIE1/ TIMSK

ICF1/TIFR

OCF1A/TIFR*

OCF1B/TIFR

TOV1/TIFR

T/C0

T/C0 COMP

T/C0 OVF

OCIE0/TIMSK

TOIE0/TIMSK

OCF0/TIFR

TOV0/TIFR

SPI

SPI STC

SPIE/SPCR

SPIF/SPSR

UART

UART RXC

UART UDRE

UART TXC

RXCIE/UCR**

UDRIE/UCR


RXC/USR**

UDRE/USR

ADC

ADC CC

ADIE/ADCSR

ADIF/ADCSR

EEPROM

EE RDY

EERIE/EECR


AC

ANA COMP

ACIE/ACSR

ACI/ACSR

TWSI

TWSI

TWIE/TWCR

TWINT/TWCR

* - у МК типа 4433 OCIE1 и OCF1

* - у МК типа 163 UCR = UCSRB USR = UCSRA


При поступлении запроса блок прерываний организует аппаратный безусловный переход к выполнению команды, адрес которой (вектор прерывания) однозначно связан с именем запроса прерывания. По этому адресу в микроконтроллерах серий ATtiny и АТ90 должна быть записана команда безусловного перехода с мнемокодом RJMP k (№ 85), машинный код который имеет формат "слово", а в микроконтроллерах серии ATmega может быть записана команда безусловного перехода с мнемокодом JMP, и машинный код которой имеет формат "два слова". По этой команде выполняется программный безусловный переход к первой команде соответствующей прерывающей программы, которая может быть расположена в любом месте в Flash ROM.

При одновременном поступлении в блок прерываний нескольких запросов в блоке выделяется запрос с наиболее высоким приоритетом среди всех поступивших и выполняется переход по адресу, соответствующему этому запросу.

В табл.26 и 27 указаны в шестнадцатеричном коде адреса (векторы прерывания), по которым совершается аппаратный переход у микроконтроллеров разных типов. Высший приоритет имеет запрос прерывания RESET. Приоритет других запросов убывает в порядке увеличения адреса, по которому совершается переход. У микроконтроллеров разных типов запросам прерывания с одинаковым именем соответствуют разные векторы перехода.


Таблица 26

Запрос прерывания



Тип

MK



t11

t12

t15

2323

2343

1200

RESET

000

000

000

000

000

000

INTO

001

001

001

001

001

001

I/O PINS

002

002

002




T/C1 COMP



003




T/C1 OVF



004




T/CO OVF

003

003

005

002

002

002

EERDY


004

006




ANA COMP

004

005

007



003

ADCCC



008





При переходе к выполнению прерывающей программы разряд 1 в регистре SREG аппаратно сбрасывается в нулевое состояние и прерывания по всем запросам оказываются запрещенными. Разряд I устанавливается в единичное состояние при выполнении команды возврата из прерывающей программы с мнемокодом RETI (№ 90). Разряд I может быть установлен в единичное состояние программно по команде SEI в прерывающей программе. Программа, которая выполняется при пуске микроконтроллера и по запросу RESET, не содержит команды RETI и для выполнения прерываний должна содержать команду SEI.

Прерывание по запросу RESET выполняется вне зависимости от состояния разряда I в регистре SREG. Опрос состояния входов блока прерываний выполняется в каждом такте. При обнаружении запроса код из счетчика команд заносится в стек, на что затрачивается 2 такта, и выполняется безусловный переход по команде с мнемокодом RJMP к (2 такта) или JMP k (3 такта). Если при обнаружении запроса прерывания процессор не закончил выполнение текущей многотактовой команды, до перехода к прерывающей программе завершается выполнение этой команды.


Таблица 27

Запрос прерывания

Тип МК

2313

t28

4433

8515

8535

m163

m103

RESET

000

000

000

000

000

000

000

INTO

001

001

001

001

001

002

002

INT1

002

002

002

002

002

004

004

INT2







006

INT7







010

LLI PINS


003






T/C2 COMP





003

006

012

T/C2 OVF





004

008

014

T/C1 CAPT

003


003

003

005

00A

016

T/C1 COMPA

004


004

004

006

OOC

018

T/C1 COMPB




005

007

00E

01A

T/C1 OVF

005


005

006

008

010

01C

T/CO COMP







01E

T/CO OVF

006

004

006

007

009

012

020

SPI STC



007

008

00A

014

022

UART RXC

007


008

009

00B

016

024

UART UDRE

008


009

00A

OOC

018

026

UART TXC

009


00A

00B

00D

01A

028

ADCCC



00B


00E

01C

02A

EERDY



OOC


OOF

01E

02C

ANA COMP

00A

005

00D

OOC

010

020

02E

TWSI






022




Литература


  1. Кибернетика - основа наук -под ред. проф. Карул К.В. - К. - 2009 г.

  2. Основы микропроцессорных исчислений - под ред. Мозаев Г.Н. - М. - 2007 г.

  3. Микроконтроллеры - под ред. д. т. н. Нелипова А.С. - Х. ХИРЕ - 2008 г.

  4. Невлюдов И.Я. - Компьютеризация общества - Х. ХИРЕ - 2007 г.

  5. Компьютерная техника и технологии - нпж - К. - 2008-2009 г. г.



Случайные файлы

Файл
10764.rtf
185544.rtf
218.doc
81065.rtf
83146.rtf