Смекни!
smekni.com

Работа периферийных устройств (стр. 1 из 9)

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

Содержание

Введение

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).