2014-12-04
Układy licznikowe w ATmega32
Licznik/Timer układ funkcyjny mikrokontrolera, który służy do
zliczania impulsów pochodzących od:
Podstawy techniki
" zródła zewnętrznego (różne zdarzenia, przyciski, czujniki,
generatory taktujÄ…ce)
mikroprocesorowej
" zródła wewnętrznego (sygnał taktujący mikrokontrolera, z
możliwością wykorzystania tzw. preskalera do podziału
częstotliwości)
Część 6. Układy czasowo-licznikowe
Liczba zliczonych impulsów przechowywana jest w dedykowanych
rejestrach (np. TCNT0, TCNT2, itp.).
Od strony praktycznej liczniki mogą być wykorzystane w rozmaitych
funkcjach użytkowych, takich jak: odmierzanie czasu, synchroniczne
dr inż. Marcin Pawlak
wywoływanie przerwań, zliczanie zdarzeń, generowanie sygnałów
Kontakt:
Pokój 320 bud. A10 prostokątnych o zadanej częstotliwości i zmiennym współczynniku
Tel. 320 3253
wypełnienia (tzw. modulacja szerokości impulsu PWM).
marcin.pawlak@pwr.wroc.pl
Układy licznikowe w ATmega32 Budowa 8-bitowego licznika T0
Mikrokontroler ATmega32 zawiera 3 liczniki (Timery) w
następującej organizacji:
" T0 8-bitowy licznik z generatorem
PWM (OC0 na PB3)
" T2 8-bitowy licznik z generatorem
PWM (OC2 na PD7) oraz
asynchronicznym taktowaniem
" T1 16-bitowy licznik z 2 kanałami
PWM (OC1A na PD5 oraz OC1B na
PD4)
Licznik T0 moduł porównania
Licznik T0 układ taktujący
(Output Compare Unit)
1
2014-12-04
Praca licznika T0 w trybie CTC
Praca licznika T0 w trybie fast PWM
(Clear Time on Compare Match)
(OC0 na PB3)
Praca licznika T0 w trybie Phase Correct PWM Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0
TCNT0 zawiera aktualną wartość licznika T0 (0...255)
OCR0 - wartość, z którą porównywany jest stan licznika (TCNT0)
w trybie Output Compare
(OC0 na PB3)
Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0 Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0
TCCR0 główny rejestr konfiguracji licznika T0
WGM[1:0] Waveform Generation Mode
FOC0: Force Output Compare. Bit używany tylko w trybach non-PWM.
Ustawienie tego bitu na 1 powoduje, że wyjście OC0 mikrokontrolera pełni
sprzętową funkcję zależną od ustawień bitów COM[1:0], kiedy wystąpi warunek
porównania (TCNT0 = OCR0).
WGM0[1:0]: Waveform Generation Mode. Bity sterujÄ… sekwencjÄ… zliczania
licznika oraz określają rodzaj pracy licznika w trybie Waveform Generation
(szczegóły w tabeli poniżej).
COM0[1:0]: Compare Match Output Mode. Bity określają zachowanie się pinu
OC0, z chwilą wystąpienia warunku porównania TCNT0 = OCR0 (szczegóły w
tabeli poniżej).
CS0[2:0]: Clock Select. Wybór zródła taktowania licznika.
2
2014-12-04
Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0 Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0
Tryb non-PWM
Tryb Phase-Correct PWM
Tryb fast-PWM
Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0 Rejestry zwiÄ…zane z konfiguracjÄ… licznika T0
Wybór zródła taktowania licznika T0 TIMSK sterowanie systemem przerwań liczników
f = 16 MHz, T = 0.0625 us
f = 2 MHz, T = 0.5 us
f = 250 kHz, T = 4 us
f = 62,5 kHz, T = 16 us
OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable
f = 15,625 kHz, T = 64 us
Ustawienie bitu OCIE0 włącza zezwolenie na przerwanie od warunku
Timer/Counter0 Compare Match (kiedy TCNT0 = OCR0)
TOIE0: Timer/Counter0 Overflow Interrupt Enable
UWAGA! Na stanowisku laboratoryjnym clkI/O = 16 MHz
Ustawienie bitu TOIE0 włącza zezwolenie na przerwanie od warunku
Timer/Counter0 Overflow przepełnienie licznika.
Rejestry związane z konfiguracją licznika T0 System przerwań mikrokontrolera
TIFR flagi systemu przerwań dla zdarzeń od liczników
int main(void) zródła przerwań, np.: TIMER, ADC, UART, INT0 ...
sei()
ISR (...) ISR (...)
OCF0: Output Compare Flag 0
Bit OCF0 zostaje ustawiony sprzętowo, kiedy zostanie spełniony while (1)
warunek porównania (TCNT0 = OCR0). OCF0 jest kasowany
sprzętowo, z chwilą wywołania przerwania Timer/Counter0 Output
Compare Match.
TOV0: Timer/Counter0 Overflow Flag
Bit TOV0 zostaje ustawiony sprzętowo, kiedy nastąpi przepełnienie
licznika T0. TOV0 jest kasowany sprzętowo, z chwilą wywołania
przerwania Timer/Counter0 Overflow.
3
2014-12-04
Program przykładowy Program przykładowy
#include
Napisać program, realizujący funkcję generatora sygnału
volatile unsigned int licz; //zmienna globalna
prostokątnego o częstotliwości 1Hz i współczynniku
ISR (TIMER0_COMP_vect) //funkcja obsł. przerwania
wypełnienia 50% (port PB0). Do realizacji zadania wykorzystać {
if (licz>0) licz--;
licznik T0 pracujący w trybie CTC oraz system przerwań.
else
{
licz = 500;
PORTB ^= 1;
}
PB0:
}
500 ms 500 ms
int main(void)
{
DDRB = 0xFF;
1) clkI/O = 16 MHz / 64 = 250 kHz Ä…ðT=4us
TCCR0 = 0b00001011; // CTC, clkio/64 (4us)
TIMSK = 0b00000010; // Output Compare Match
2) OCR0 = 250 Ä…ðprzerwanie co 1ms
OCR0 = 250; // 250 x 4us = 1ms
sei(); // włącz system przerwań
3) co 500 przerwań negacja stanu na PB0
while (1) {}; // główna pętla programu
}
Zadania do realizacji
1. Napisać program obsługi 4-cyfrowego wyświetlacza 7-segmentowego,
który wykorzysta przerwanie od licznika T0 do multipleksowania cyfr.
2. Napisać program realizujący funkcję generatora PWM (ADC + T0)
3. Generator częstotliwości 1-10Hz
4
Wyszukiwarka
Podobne podstrony:
PTM materiały 5
PTM materiały 2
PTM materiały 4
PTM materiały 1
PTM materiały 3
CHEMIA materiały dodatkowe
Analiza samobójstw w materiale sekcyjnym Zakładu Medycyny Sądowej AMB w latach 1990 2003
1 Materiały tymczasowe
Materiały pomocnicze Krzysztof Żywicki
MaterialyWyklad6,7Geologia
materials
notatek pl dr in Jaros aw Chmiel, Nauka o materia ?h, Przemiany podczas odpuszczania
Nauka o materiałach 2 VI
12 Wykonywanie sterylizacji instrumentów, materiałów
exams materials?emstr tb05
material
więcej podobnych podstron