ПРОГРАММИРОВАНИЕ ТАЙМЕРА ТО В МК AVR

February 18, 2011 by admin Комментировать »

Режим счетчика

Подготовить программу для исследования таймера;счетчика ТО в режиме счетчика событий. Событием в данном случае может быть замыкание одной из кнопок SWx на плате STK500. Результат работы программы отобразить средствами индикации.

С помощью 10-проводного шлейфа подключим выводы порта РВ к выводам кнопок SW0-SW7 (в данном случае будет использован только вывод РВО – вход внешнего сигнала таймера ТО). С помощью второго 10-проводного шлейфа соединяем выводы порта PD с выводами светодиодов LED6-LED7. Программируем вывод РВО на ввод, все выводы порта PD – на вывод. Настраиваем таймер на режим счета внешних событий (нажатие кнопки SWO). После нескольких, например четырех, нажатий должно произойти переполнение таймера (следовательно, начальное значение счетчика TCNTO – $FC) и вызов обработчика прерываний. Обработчик должен включить светодиоды, показывая, что программа выполнена корректно, и заново инициализировать счетчик таймера для продолжения работы, если планируется неоднократное повторение программы. Время включения светодиодов установим, используя подпрограмму задержки.

Программа 4.1

;Программа 4.1 для МК АТх8515:

;демонстрация работы таймера ТО в режиме счетчика событий; ;событие – нажатие кнопки SWO.

;Светодиоды включаются после четвертого нажатия на кнопку ;SWO. Соединения шлейфами: порт PB-SW, порт PD-LED

;.include "8515def.inc"  ;файл определений AT90S8515

.include "m8515def.inc"  ;файл определений ATmega8515

.def temp = rl6          ;временный регистр ;***Таблица векторов прерываний .org $000

rjmp INIT             ;обработка сброса .org $007

rjmp TO_OVF           ;обработка переполнения таймера ;***Инициализация МК

INIT: Idi temp,low(RAMEND) ;установка

out SPL,tem           ; указателя стека

Idi temp,high(RAMEND) ; на последнюю

out SPH,temp          ; ячейку ОЗУ

clr temp              ;инициализация порта РВ

out DDRB,temp         ; на ввод

Idi temp,0x01         ;включение

out PORTB,temp        ; подтягивающего резистора РВО

ser temp              ;инициализация порта PD

out DDRD,temp         ; на вывод

out PORTD,temp        ;выключение светодиодов

Idi temp,0x20         ;SE=1 – разрешение перехода

out MCUCR,temp        ; в режим Idle

;***Настройка таймера TO  на режим счетчика событий

Idi temp,0x02         ;разрешение прерывания по

out TIMSK,temp        ; переполнению таймера

Idi temp,0x07         ;переключение таймера

out TCCRO,temp     ; no положительному фронту

sei                ;разрешение прерываний

Idi temp,OxFC      ;$FC=-04 для

out TCNTO,temp     ; отсчета четырех нажатий

LOOP: sleep            ;переход в режим пониженного

пор                ; энергопотребления

rjmp LOOP

.Обработка прерывания при переполнении таймера ТО TO_OVF: clr temp

out PORTD,temp ;включение светодиодов rcall DELAY     ;задержка

ser temp

out PORTD,temp     ;выключение светодиодов

Idi temp,OxFC      ;$FC=-04 для

out TCNTO,temp     ; отсчета четырех нажатий

reti

Задержка *** DELAY: idi rl9,10 Idi r20,255 Idi r21,255 dd:dec r21 brne dd dec r2 0 brne dd dec rl9 brne dd ret

Результат работы программы будет таков. При четвертом нажатии на кнопку SWO загораются все светодиоды (в случае дребезга контактов светодиоды могут включиться раньше). Длительность времени, в течение которого они горят, определяется задержкой DELAY. Далее действия могут быть повторены.

Как уже было сказано в теоретической части, события для таймера;счетчика ТО можно генерировать программно. Для этого необходимо настроить вывод РВО как выход. В данном случае инкремент счетчика будет происходить после выполнения команд программы, эмулирующих положительный или отрицательный фронт, как этого требует настройка таймера:

;положительный фронт сигнала на РВО cbi PORTB,0

sbi PORTB,0 .•отрицательный фронт сигнала на РВО sbi FORTE,О cbi PORTB,0

Режим таймера

Подготовить программу для исследования таймера;счетчика ТО в режиме таймера. Для наглядности работы таймера в этом режиме можно запрограммировать следующие действия: при нажатии на первую кнопку на вход таймера поступают сигналы с частотой, равной частоте тактового генератора СК, при нажатии на вторую кнопку на вход таймера поступают сигналы с частотой, например, СК;8. В обоих случаях сразу после нажатия загораются светодиоды, а после переполнения таймера и обработки соответствующего прерывания светодиоды гаснут. Таким образом, во втором случае время свечения светодиодов будет в восемь раз больше, чем в первом, что и означает правильность выполнения программы. Если установить частоту тактового генератора микроконтроллера равной 512 Гц, то время включения светодиодов в первом случае 0,5 с, во втором – 4 с (0,5- 8). (Внимание! Частоту тактового генератора необходимо изменять после программирования микроконтроллера.)

На плате STK500 необходимо соединить выводы порта PD с кнопками SWO – SW7, выводы порта РВ – со светодиодами LEDO – LED7. Для обработки нажатия кнопок используем метод последовательного опроса состояния кнопок.

Программа 4.2

;Программа 4.2 для МК АТх8515: демонстрация работы таймера ;Т0 в режиме таймера. Для наблюдений необходимо установить ;частоту тактового генератора СК=512 Гц. При нажатии на ;SW2 на вход счётчика поступают сигналы с частотой СК, ;при нажатии на SW3 – СК;8. В первом случае время с начала ;счёта до переполнения (выключения светодиодов) – 0,5 с, ;во втором – 4 с.

;Соединения: пара PD2:PD3-napa SW2:SW3, PB-LED

;.include "8515def.inc" ;файл определений AT90S8515 .include "m8515def.inc" ;файл определений ATmega8515 .def temp = rl6 ;временный регистр

.equ SW2 = 2                 ;2-й вывод порта PD

.equ SW3 = 3                 ;3-й вывод порта PD

.Таблица векторов прерываний .org $000

rjmp INIT                 ;обработка сброса

.org $007

rjmp TO_OVF     ;обработка переполнения таймера ТО

;***Инициализация МК

INIT: Idi temp,low(RAMEND) ;установка

out SPL,temp              ; указателя стека

Idi temp,high(RAMEND) ; на последнюю out SPH,temp     ; ячейку ОЗУ

clr temp                  ;инициализация порта PD

out DDRD,temp             ; на ввод

Idi temp,OxOC             ;включение подтягивающих

out PORTD,temp            ; резисторов порта PD

ser temp                  ;инициализация порта РВ

out DDRB,temp             ; на вывод

out PORTE,temp            ;выключение светодиодов

.Настройка таймера ТО на режим таймера

Idi temp,0x02             ;разрешение прерывания по

out TIMSK,temp            ; переполнению таймера ТО

clr temp                  ;таймер ТО

out TCCRO,temp            ; остановлен

sei                       ; разрешение прерываний

clr temp                  ;отсчёт

out TCNTO,temp            ; начинается с О

.Ожидание нажатия кнопок WAITSET_0: sbic PIND,SW2 ;проверка нажатия

rjmp WAITSET_1               ; кнопки SW2

.Обработка нажатия кнопки SW2

Idi temp,0x01             ;частота тактовых сигналов- СК

rcall LED_ON              ;включение светодиодов

WAITSET_1: sbic PIND,SW3 ;проверка нажатия

rjmp WAITSET_0               ; кнопки SW3

.Обработка нажатия кнопки SW3

Idi temp,0x02             ;частота сигналов – СК;8

rcall LED_ON              ;включение светодиодов

rjmp WAITSET_0 .Обработка прерывания при переполнении таймера ТО

TO_OVF: ser temp

out PORTB,temp            ;выключение светодиодов

clr temp                  ;останов

out TCCRO,temp            ; таймера TO

clr temp

out TCNTO,temp            ;установка 0

reti

;***Включение светодиодов

LED_ON:out TCCRO,temp        ;настройка источника

; тактового сигнала clr temp  ;включение

out PORTB,temp            ; светодиодов

ret

Результат работы программы: нажатие кнопки SW2 приводит к тому, что все светодиоды светятся в течение 0,5 с; при нажатии SW3 – в течение 4 с. (Примечание. Новое нажатие будет обрабатываться сразу, т. е. при нажатии сначала на SW3, а затем на SW2, не дожидаясь отключения светодиодов, они погаснут через 0,5 с после второго нажатия).

Работа таймера;счетчика Т1 в режимах счетчика событий и таймера аналогична работе таймера;счетчика ТО. Отличие состоит в разрядности базового счетчика: TCNTO – 8-разрядный; TCNT1 – 16-разрядный. Поэтому программы для исследования Т1 в этих режимах могут быть аналогичны ранее рассмотренным.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты