47600 (Микроконтроллеры AVR), страница 6
Описание файла
Документ из архива "Микроконтроллеры AVR", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "47600"
Текст 6 страницы из документа "47600"
Для того чтобы эффективно использовать таймер TMR2, используются следующие формулы:
где Т – требуемая временная задержка, К1 – коэффициент деления предварительного делителя частоты; К2 – коэффициент деления делителя частоты запросов на прерывание; PR2 – содержимое регистра PR2; F – частота системной синхронизации.
-
Модуль ССР
Таймеры TMR1 и TMR2 микроконтроллеров PIC применяются в составе модуля сравнения/захвата/ШИМ – ССР (Compare-Capture-PWM). Таких модулей может быть два: ССР1 и ССР2, – управление которыми реализовано с помощью регистров CCPxCON (рис. 4.15),
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | DC1BX1 | DC1BX0 | CCP1M3 | CCP1M2 | CCP1M1 | CCP1M0 |
Рис. 4.15. Регистр CCPxCON микроконтроллеров PIC
Назначение отдельных разрядов регистра CCPxCON:
ССР1М0 – ССР1МЗ – выбор режима захвата/сравнения (табл. 4.9) DC1ВХ0 – DC1ВХ1 – два младших разряда 10-разрядной ШИМ.
Таблица 4.9. Назначение разрядов ССР1М1 -ССР1МЗ регистра CCPxCON
ССР1МЗ | ССР1М2 | ССР1М1 | ССР1М0 | Значение |
0 | 0 | X | X | Модуль ССР отключен |
0 | 1 | 0 | 0 | Захват по каждому ниспадающему фронту |
0 | 1 | 0 | 1 | Захват по каждому нарастающему фронту |
0 | 1 | 1 | 0 | Захват по каждому 4-му нарастающему фронту |
0 | 1 | 1 | 1 | Захват по каждому 16-му нарастающему фронту |
1 | 0 | 0 | 0 | В случае совпадения на выходе – высокий уровень |
1 | 0 | 0 | 1 | В случае совпадения на выходе – низкий уровень |
1 | 0 | 1 | 0 | В случае совпадения – запрос на прерывание |
1 | 0 | 1 | 1 | Особый случай режима сравнения |
1 | 1 | X | X | Режим ШИМ |
В режиме захвата (то есть, фиксации значения таймера в момент появления определенного условия) используются регистры CCPR1H, CCPR1L (в случае TMR1) или CCPR2H, CCPRL (в случае TMR2). В таком режиме таймер выполняет функции счетчика тактовых импульсов, и при наступлении условия захвата его содержимое переписывается в регистровую пару CCPRx.
В режиме сравнения модуль ССР формирует сигнал на выходе ССРх в том случае, когда содержимое счетного регистра становится равным значению, записанному в регистровой паре CCPRxL, CCPRxH. Этот режим обычно используется для выдачи сигналов на внешние устройства по истечении некоторого временного интервала.
В режиме ШИМ таймер работает как делитель частоты, формирующий период ШИМ-сигнала. Его значение постоянно сравнивается с содержимым регистра PR2, и при совпадении компаратор сбрасывает таймер в исходное состояние, после чего цикл повторяется. Параллельно организован контур сравнения, включающий в себя таймер, второй компаратор и регистр CCPRxH. Выходы обоих компараторов управляют RS-триггером, выход которого соединен с выводом ССРх.
Вначале триггер устанавливается в "1" по сигналу сброса таймера, а по сигналу компаратора контура сравнения – сбрасывается в "О". Таким образом, на выходе RS-триггера формируется сигнал с периодом, определяемым содержимым регистров PR2 и CCPRxH.
Сторожевой таймер
Сторожевой таймер (watchdog timer) – встроенный таймер, тактируемый внутренним RC-осциллятором, который автоматически сбрасывает микроконтроллер при переполнении своего счетного регистра. В частности, он используется для предотвращения перехода микроконтроллера в режим бесконечного цикла, когда на него невозможно повлиять извне. Обобщенная структурная схема сторожевого таймера показана на рис. 5.1.
В микроконтроллерах AVR и PIC управление сторожевым таймером несколько отличается. Так, в микроконтроллерах AVR для этого используется регистр управления WDTCR (адрес в области ввода/вывода – 0x21, адрес SRAM – 0x41) (рис. 5.2).
Рис. 5.1. Структурная схема сторожевого таймера
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
– | – | – | WDTOE | WDE | WDP2 | WDP1 | WDP0 |
Рис. 5.2. Регистр WDTCR микроконтроллеров AVR
Назначение отдельных разрядов регистра WDTCR:
-
WDP0-WDP2 – выбор коэффициента деления частоты следования сигналов сброса (при этом период до наступления сброса зависит от рабочего напряжения процессора – табл. 5.1);
-
WDE – включение/отключение сторожевого таймера (1 – включен);
-
WDTOE – если сторожевой таймер должен быть отключен, следует установить этот разряд в лог. 1. После установки этого разряда он в течение четырех периодов такта системной синхронизации остается в состоянии лог. 1, а затем аппаратно сбрасывается в лог. 0. Программа пользователя имеет возможность отключить сторожевой таймер посредством записи лог. 0 в разряд WDE только во время этих четырех тактов системной синхронизации.
Таблица 5.1 Назначение разрядов WDP0 - WDP2 регистра WDTCR
WDP2 | WDP1 | WDPP | Коэффициент деления | Период до сброса (при Vcc в 5 В) | Период до сброса (при Vcc = 3 В) |
0 | 0 | 0 | 1 | 16 мс | 47 мс |
0 | 0 | 1 | 2 | 32 мс | 94 мс |
0 | 1 | 0 | 4 | 64 мс | 190 мс |
0 | 1 | 1 | 8 | 128 мс | 380 мс |
1 | 0 | 0 | 16 | 256 мс | 750 мс |
1 | 0 | 1 | 32 | 512 мс | 1,5с |
1 | 1 | 0 | 64 | 1 с | Зс |
1 | 1 | 1 | 128 | 2,1 с | 6с |
В системе команд AVR сторожевой таймер сбрасывается в исходное состояние по команде wdr. В микроконтроллерах PIC для управления сторожевым таймером предназначен рассмотренный выше регистр OPTION. Для этого разряд PSA должен быть установлен в лог. 1, чтобы предварительный делитель частоты был переключен на использование совместно со сторожевым таймером, а не с TMR0. Коэффициент деления выбирается с помощью разрядов PS2-PS0 (табл. 5.2). В отличие от микроконтроллеров AVR, в микроконтроллерах PIC отсутствует возможность включать/отключать сторожевой таймер с помощью регистра управления. Единственный способ предотвратить сброс от сторожевого таймера – периодически выполнять ассемблерную команду clrwdt.
Таблица 5.2. Выбор коэффициента деления частоты следования сигналов сброса от сторожевого таймера в микроконтроллерах PIC
PS2 | PS1 | PS0 | Коэффициент деления | Период до сброса |
0 | 0 | 0 | 1 | 18 мс |
0 | 0 | 1 | 2 | 36 мс |
0 | 1 | 0 | 4 | 72 мс |
0 | 1 | 1 | 8 | 144 мс |
1 | 0 | 0 | 16 | 288 мс |
1 | 0 | 1 | 32 | 576 мс |
1 | 1 | 0 | 64 | 1,2 с |
1 | 1 | 1 | 128 | 2,3 с |
-
2. Параллельные порты ввода/вывода
Параллельные порты – это особые устройства ввода/вывода, позволяющие передавать во внешний мир или принимать одновременно восемь разрядов данных. Для обозначения портов используются латинские буквы А, В, С и т.д. Количество портов ввода/вывода варьируется в зависимости от модели микроконтроллера.
В микроконтроллерах AVR каждому параллельному порту ввода/вывода поставлены в соответствие три регистра (букве х соответствует имя порта А, В и т.д.):
-
DDRx – регистр направления передачи данных – определяет, является тот или иной вывод порта входом или выходом; если некоторый разряд регистра DDRx содержит лог. 0, то соответствующий вывод порта сконфигурирован как вход, в противном случае – как выход;
-
PORTx – регистр порта – если вывод выполняет роль выхода, то в соответствующий разряд записывается значение, предназначенное для вывода; если вывод выполняет роль входа, то лог. 0 в некотором разряде регистра PORTx соответствует высокоомный вход, а лог. 1 – вход, нагруженный подтягивающим сопротивлением;
-
PINx – регистр выводов порта – в отличие от регистров DDRx и PORTx доступен только для чтения и позволяет считать входные данные порта на внутреннюю шину микроконтроллера.
Выводы портов зачастую выполняют различные альтернативные функции при работе с внутренними и периферийными модулями микроконтроллеров AVR. Так, к примеру, в некоторых моделях в качестве внешних тактовых входов таймеров/счетчиков Т/С0 и Т/С1 используются разряды 0 и 1 порта В или 4 и 5 порта D. Точное назначение выводов портов следует сверять по спецификации микроконтроллера.
В микроконтроллерах PIC каждому параллельному порту ввода/вывода поставлены в соответствие два регистра:
-
PORTx – регистр данных порта;
-
TRISx – регистр направления передачи данных через выводы порта (лог. 1 в некотором разряде этого регистра соответствует режим ввода, а лог. 0 – режим вывода).
В микроконтроллерах PIC серии 18Сх порт D может работать в режиме управляемого параллельного порта PSP (Parallel Slave Port). Это означает, что он действует как регистр, который может быть подключен к шине другого микроконтроллера, обмениваясь с ним данными. В режиме PSP, как и в случае обмена данными с любым периферийным устройством, используются сигналы RD (чтение), WR (запись) и CS (выбор кристалла) – разряды 0-2 порта Е (пример – рис. 6.1).