Układy licznikowe – rejestry funkcyjne

Transkrypt

Układy licznikowe – rejestry funkcyjne
Mikrokontroler
ATmega32
System
przerwań
Porty wejścia-wyjścia
Układy czasowo-licznikowe
1
Przerwanie
Przerwanie jest inicjowane przez urządzenie zewnętrzne
względem mikroprocesora, zgłaszające potrzebę jego obsługi
Przerwanie jest chwilowym zaprzestaniem wykonywania
programu przez mikroprocesor w celu wykonania procedury
obsługi urządzenia zgłaszającego przerwanie
Żądania obsługi są zdarzeniami asynchronicznymi względem
programu
Mechanizm przerwań zwalnia mikroprocesor z konieczności
ciągłego obserwowania sygnałów żądań obsługi
2
Załączanie systemu przerwań
Rejestr statusu SREG
Globalne zezwolenie
na przerwania
I=0 – przerwania zablokowane
I=1 – przerwania aktywne
3
Źródła przerwań
Sygnał RESET
Sygnały na zewnętrznych wyprowadzeniach mikrokontrolera
Układy czasowo-licznikowe
Porty komunikacyjne
Przetwornik analogowo-cyfrowy
Układy zarządzania programowaniem pamięci EEPROM i
FLASH
Poszczególne źródła przerwań można indywidualnie blokować
za pomocą odpowiednich bitów w rejestrach sterujących.
4
Znaczniki przerwań
Większość źródeł przerwań ma przyporządkowany w przestrzeni I/O
rejestr, w którym można wyróżnić bit zwany znacznikiem
przerwania (ang: Interrupt flag)
Zgłoszenie żądania przerwania polega na ustawieniu tego bitu
w stan „1”
Przyjęcie przerwania przez jednostkę centralną automatycznie
kasuje stosowny znacznik przerwania
Znaczniki przerwań można ustawiać i kasować również programowo
5
Znaczniki przerwań
Przykład znaczników przerwań zewnętrznych: INTF0,
INTF1 i INTF2 umieszczonych w rejestrze GIFR
6
Przyjęcie przerwania
Na przyjęcie przerwania składają się następujące
operacje wykonywane automatycznie przez
mikroprocesor:
Wyłączenie globalnego zezwolenia na przerwania
Zachowanie na stosie licznika programu
Załadowanie wektora przerwania do licznika programu
Dla większości przerwań skasowanie znacznika
przerwania
7
Powrót z przerwania
Powrót z przerwania jest zazwyczaj inicjowany instrukcją
reti wykonującą następujące operacje:
Pobranie ze stosu licznika programu
Załączenie globalnego zezwolenia na przerwania
8
Priorytet przerwań
O tym które ze zgłaszanych jednocześnie przerwań
zostanie przyjęte jako pierwsze decyduje jego priorytet
Priorytet poszczególnych źródeł przerwań w
mikrokontrolerach AVR jest ustalony
Adresy podprogramów obsługi przerwań są
uporządkowane w kolejności malejącego priorytetu
Najwyższy priorytet ma restart systemu
9
Wektory przerwań
Wektorem przerwania nazywa się adres w pamięci programu, od
którego rozpoczyna się podprogram obsługi przerwania
Wektory przerwań zostały w mikrokontrolerach AVR zdefiniowane
architekturą systemu i są umiejscowione na początku przestrzeni
adresowej
Objętość obszaru w pojedynczym wektorze przerwania nie pozwala
na zapisanie w nim całej procedury obsługi
W wektorze umieszcza się skok do właściwego podprogramu
obsługi przerwania
Wektory nieaktywnych przerwań można wykorzystać w inny sposób
10
Wektory przerwań
11
Wektory przerwań
12
Obsługa przerwań
Procedura obsługi przerwania ma na celu obsłużenie
urządzenia zgłaszającego przerwanie (odczytanie
odebranego znaku lub przetworzonej próbki napięcia,
wykonanie czynności po zadanym opóźnieniu w układzie
czasowym)
W procedurze obsługi należy zachować na stosie
zawartość wszystkich rejestrów w niej
wykorzystywanych, w szczególności SREG
Zawartość rejestrów musi zostać przywrócona przed
zakończeniem procedury
13
Obsługa przerwań
System przerwań jest wyłączany po przyjęciu każdego
przerwania by nie spowodować nadmiernego
powiększenia stosu wskutek wielokrotnego przyjęcia
zbyt szybko przychodzącego przerwania
Zgłoszenie 1
Wykonanie programu
Zgłoszenie 2
Obsługa 1
Obsługa 2
czas
14
Obsługa przerwań
Istnieje niebezpieczeństwo nieobsłużenia często
zgłaszanego przerwania wskutek wykonywania innej,
długotrwałej procedury obsługi
Cykliczne zgłoszenia przerwań od układu czasowego
Wykonanie programu
Przerwanie nieobsłużone!
15
Obsługa przerwań
Zapobiegnie temu załączenie systemu przerwań w
samej procedurze, wówczas obsługa może być
przerwana przez inne zgłoszenie
Cykliczne zgłoszenia przerwań od układu czasowego
Wykonanie programu
16
Przerwanie inicjalizacyjne
Program wykonywany po restarcie systemu jest
traktowany jako obsługa przerwania
Wewnętrzny sygnał RESET jest automatycznie zaliczany
do sygnałów zgłaszających przerwanie
RESET ma najwyższy priorytet i przydzielony wektor na
początku przestrzeni adresowej
Przerwanie od sygnału RESET jest niemaskowalne
– nie można go wyłączyć
17
Przerwanie inicjalizacyjne
18
Porty I/O
Port B
Port A
Port D
Port C
19
Porty I/O
Porty I/O pozwalają podłączyć do mikrokontrolera
zewnętrzne czujniki z wyjściami cyfrowymi lub układy
wykonawcze sterowane cyfrowo
Poszczególne linie portów są niezależnie konfigurowane
jako wejścia lub wyjścia
Linie zaprogramowane jako wejścia mogą realizować
funkcje alternatywne, np. wejścia przetwornika A/C,
interfejs szeregowy…
20
Ogólna struktura linii portu
cyfrowego
Rezystor
podciągający
Końcówka
zewnętrzna
Wybór
wejście/wyjście
Bit
wyjściowy
Stan
końcówki
21
Rejestry funkcyjne
związane z portem
Do komunikowania się jednostki centralnej z portami
służą specjalne rejestry funkcyjne
Rejestry związane z portami są mapowane na
przestrzeń adresową I/O od adresu 0x00
(i jednocześnie przestrzeń pamięci danych od 0x20)
Z każdym portem są skojarzone trzy rejestry:
- PORTx (x – zastępuje symbol portu, np. PORTA)
- PINx
- DDRx
22
Rejestry funkcyjne
związane z portem
Do rejestru PORTx wpisywany jest wzór stanów
wymuszanych na końcówkach portów w przypadku
zdefiniowania ich jako wyjścia
Nazewnictwo bitów rejestru dla portu A:
23
Rejestry funkcyjne
związane z portem
Bity rejestru DDRx definiują końcówki portu jako wyjścia
lub wejścia
Wpisanie „1” powoduje, że odpowiednia końcówka staje
się wyjściem o charakterystyce typowej dla układów
CMOS
Nazewnictwo bitów rejestru dla portu A:
24
Rejestry funkcyjne
związane z portem
W rejestrze PINx przechowywany jest wzór
rzeczywistych stanów logicznych końcówek portu,
niezależnie od wybranego kierunku danych
Jest to rejestr tylko do odczytu
Nazewnictwo bitów rejestru dla portu A
25
Rejestry funkcyjne
związane z portem
Konfiguracja końcówki portu
Bit PUD w rejestrze SFIOR wyłącza „rezystory podciągające”
końcówek wszystkich portów
26
Układy czasowo-licznikowe
Układy czasowo-licznikowe są licznikami cyfrowymi
wyposażonymi w zaawansowane tryby wyzwalania i
programowanie źródła sygnału zegarowego
Układy licznikowe w mikrokontrolerach służą do:
- odmierzania czasu
- zliczania zdarzeń
- generacji przebiegów o programowanej częstotliwości
i wypełnieniu
27
Układy czasowo-licznikowe
W architekturze AVR ATmega dostępne są co najmniej
dwa układy czasowo-licznikowe
W ATmega implementowane są liczniki 8- i 16-bitowe
Mikrokontroler ATmega32 posiada 2 liczniki 8-bitowe
timer/counter0 i timer/counter2 oraz 1 licznik
16-bitowy timer/counter1
28
Układy licznikowe – rejestry
funkcyjne
Rejestr TCNTn (n jest numerem licznika) zawiera aktualną wartość
zliczoną przez licznik i jest rejestrem 8-bitowym lub parą rejestrów
TCNTnH i TCNTnL dla licznika 16-bitowego.
W przypadku licznika 16-bitowego TCNTnH jest rejestrem
buforowym i wymagana jest ustalona sekwencja zapisu w celu
prawidłowej inicjalizacji licznika
Przepełnienie licznika wywołuje zgłoszenie przerwania
29
Układy licznikowe – rejestry
funkcyjne
8-bitowy rejestr TCNT0:
Para rejestrów TCNT1H i TCNT1L:
30
Układy licznikowe – rejestry
funkcyjne
Aktualna wartość w liczniku jest porównywana z zawartością
rejestru OCRn lub OCRnH i OCRnL
Z licznikiem 1. w ATmega32 są skojarzone 2 pary rejestrów:
OCR1AH(L) i OCR1BH(L)
W wyniku zrównania się wartości w liczniku i rejestrze OCR jest
zgłaszane przerwanie
Wynik operacji porównania może służyć do generacji sygnału
o programowanym wypełnieniu
31
Układy licznikowe – rejestry
funkcyjne
Zgłoszenie
przerwania
Generacja
przebiegu PWM
32
Układy licznikowe – rejestry
funkcyjne
Do sterowania trybem pracy licznika służy rejestr
TCCRn.
Bity CSn określają źródło sygnału taktującego licznik
Bity WGMn określają tryb pracy licznika
Znaczniki COMn wybierają sposób generacji sygnałów
wyjściowych
33
Układy licznikowe – rejestry
funkcyjne
Przykład - rejestr sterujący pracą licznika 0 (TCCR0):
Znaczenie bitu FOC0 i bitów COM0x zależy od trybu pracy.
34
Układy licznikowe – rejestry
funkcyjne
Znaczenie bitów WMG0x - tryb pracy:
35
Układy licznikowe – rejestry
funkcyjne
Znaczenie bitów CS0x – źródło sygnału taktującego:
36
Układy licznikowe – preskaler
i wybór źródła zegara
Zadaniem preskalera jest dostarczenie sygnału taktującego
o programowanej w szerokim zakresie częstotliwości (podział 1:1024)
37
Układy licznikowe – tryby pracy
Tryb pracy normalnej – zliczanie do wartości maksymalnej
Porównywanie – porównanie zawartości licznika i rejestru OCRn
wywołuje różne, zaprogramowane akcje
Tryb CTC – zerowanie licznika po wykryciu zgodności
porównania
Tryby PWM – generacja sygnału prostokątnego
o programowanej częstotliwości i wypełnieniu
38
Układy licznikowe – załączanie
przerwań w rejestrze TIMSK
Bity TOIEn zezwalają na przerwania od przepełnienia timera n
Bity OCIEnX zezwalają na przerwania od odpowiedniego układu
porównania timera n
39
Układy licznikowe – znaczniki
przerwań w rejestrze TIFR
Bity TOVn zgłaszają przerwania od przepełnienia timera n
Bity OCFnX zgłaszają przerwania od odpowiedniego układu
porównania timera n
40