Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
288
Добавлен:
20.06.2014
Размер:
1.06 Mб
Скачать
      1. Таймеры микроконтроллера aTmega8535

        1. Общая информация о таймерах микроконтроллера aTmega8535

          1. Множество таймеров aTmega8535

В состав микроконтроллера ATmega8535 входят таймеры:

  • 8-битный таймер T0;

  • 16-битный таймер T1;

  • 8-битный таймер T2.

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

  • регистр TIMSK (Timer/Counter Interrupt Mask Register), с помощью которого разрешаются или запрещаются прерывания таймеров;

  • регистр TIFR (Timer/Counter Interrupt Flag Register), в состав которого входят флаги прерываний, устанавливающиеся при наступлении соответствующих событий.

Каждому таймеру соответствует два события, при наступлении которых может быть сгенерировано прерывание: переполнение счетного регистра и совпадение значений счетного регистра и регистра сравнения. У таймера T1 имеется еще одно событие, по которому может быть сгенерировано прерывание — захват.

Также к работе таймеров имеют отношение два младших бита регистра SFIOR (Special Function IO Register):

  • бит 1 — PSR2 (Prescaler Reset Timer/Counter2);

  • бит 0 — PSR10 (Prescaler Reset Timer/Counter1 and Timer/Counter0).

Когда в бит PSR записывается единица, делитель частоты соответствующего таймера сбрасывается. После завершения операции бит сбрасывается аппаратно.

          1. Регистр timsk (Timer/Counter Interrupt Mask Register)

Формат регистра TIMSK:

  • бит 7 — OCIE2 (Timer/Counter2 Output Compare Match Interrupt Enable);

  • бит 6 — TOIE2 (Timer/Counter2 Overflow Interrupt Enable);

  • бит 5 — TICIE1 (Timer/Counter1 Input Capture Interrupt Enable);

  • бит 4 — OCIE1A (Timer/Counter1 A Output Compare Match Interrupt Enable);

  • бит 3 — OCIE1B (Timer/Counter1 B Output Compare Match Interrupt Enable);

  • бит 2 — TOIE1 (Timer/Counter1 Overflow Interrupt Enable);

  • бит 1 — OCIE0 (Timer/Counter0 Output Compare Match Interrupt Enable);

  • бит 0 — TOIE0 (Timer/Counter0 Overflow Interrupt Enable).

          1. Регистр tifr (Timer/Counter Interrupt Flag Register)

Формат регистра TIFR:

  • бит 7 — OCF2 (Output Compare Flag 2);

  • бит 6 — TOV2 (Timer/Counter2 Overflow Flag);

  • бит 5 — ICF1 (Input Capture Flag);

  • бит 4 — OCF1A (Output Compare Flag 1A);

  • бит 3 — OCF1B (Output Compare Flag 1B);

  • бит 2 — TOV1 (Timer/Counter1 Overflow Flag);

  • бит 1 — OCF0 (Output Compare Flag 0);

  • бит 0 — TOV0 (Timer/Counter0 Overflow Flag).

          1. Примеры программ работы с таймером

Пример 1.

;вход PINA

;выход PORTC

;преобразование осуществляется при прерывании

;по переполнению таймера T0

.include "m8535def.inc"

.equ mask = 0x0F

.equ cnt = 0xF0

.org 0x00

rjmp RESET

.org 0x09

rjmp TIM0_OVF

.org 0x15

RESET: ser r16

out DDRC, r16

clr r16

out DDRA, r16

ldi r16, low(RAMEND)

out spl, r16

ldi r16, high(RAMEND)

out sph, r16

ldi r16, cnt

out TCNT0, r16

ldi r16, (1<<TOIE0)

out TIMSK, r16

ldi r16, 0x01

out TCCR0, r16

sei

main: rjmp main

TIM0_OVF: clr r16

out TCCR0, r16

in r16, PINA

andi r16, mask

out PORTC, r16

ldi r16, cnt

out TCNT0, r16

ldi r16, 0x01

out TCCR0, r16

reti

Пример 2.

;вход PINA

;выход PORTC

;преобразование осуществляется при прерывании

;по совпадению таймера T0

.include "m8535def.inc"

.equ mask = 0x0F

.equ cnt = 0x0A

.org 0x00

rjmp RESET

.org 0x13

rjmp TIM0_COMP

.org 0x15

RESET: ldi r16, 0xFF

out DDRC, r16

clr r16

out DDRA, r16

ldi r16, low(RAMEND)

out spl, r16

ldi r16, high(RAMEND)

out sph, r16

clr r16

out TCNT0, r16

ldi r16, cnt

out OCR0, r16

ldi r16, (1<<OCIE0)

out TIMSK, r16

ldi r16, 0x09

out TCCR0, r16

sei

main: rjmp main

TIM0_COMP: clr r16

out TCCR0, r16

in r16, PINA

andi r16, mask

out PORTC, r16

clr r16

out TCNT0, r16

ldi r16, 0x09

out TCCR0, r16

reti