Mikroprocesory i mikrosterowniki
kolokwium 2
1
1. Komparator analogowy
Układ ten porównuje wartośd z wejśd dodatniego - nie odwracającego (AIN0) i ujemnego - odwracającego
(AIN1). Wyjście komparatora (ACO - bit w rejestrze ACSR) przyjmie stan wysoki, gdy poziom napięcia na
wejściu nieodwracającym (+) jest wyższe niż napięcie na wejściu odwracającym (-)
jeśli wynik AIN0-AIN1 0, to wynikiem jest 1
odejmowanie zawsze zachodzi w takiej kolejności
jeśli wynik AIN0-AIN1 0, to wynikiem jest 0
Wejście AIN0 znajduje się na pinie 2 portu B. Może byd ono zastąpione napięciem referencyjnym (aby tego
dokonad trzeba ustawid 1 na bicie ACBG w ACSR).
Wejście AIN1 znajduje się na pinie 3 portu B. Może byd ono zastąpione dowolnym wejściem konwertera
analogowo-cyfrowego: PA0-PA7 (warunkiem jest włączenie konwertera i ustawienie 1 na bicie ACME w
rejestrze SFIOR)
Z komparatorem związany jest rejestr ACSR. Możemy w nim wyróżnid bity odpowiedzialne za:
- włączenie/wyłączenia komparatora,
- ustawienie czy AIN0 ma byd wejściem czy napięciem odniesienia
- bit wyniku porównania (AC0)
- flaga (ACI), aktywacja (ACIE) i opcje przerwania
- połączenie z licznikiem 1
Dodatkowy bit obsługi komparatora znajduje się w rejestrze SFIOR (tym samym co przy konwerterze). W SFIOR
(bit ACME) można ustawid że, na AIN1 podawany jest sygnał z konwertera.
Wyjście komparatora może służyd do wyzwalania wejścia przechwytywania Licznika TC1. Dodatkowo może
generowad niezależne przerwanie.
2. Reset mikrokontrolera
Możemy wyróżnid 4 źródła resetu:
•
POWER-ON RESET - zapewnia, że urządzenie jest resetowane przy włączaniu zasilania
•
ZEWNĘTRZNY RESET - Zewnętrzny reset jest generowany poprzez niski poziom wyjścia RESET (żółty
przycisk na płytce). Impuls resetu musi trwad dłużej niż 1,5 μs. Krótsze impulsy nie gwarantują
wygenerowania resetu.
•
BROWN-OUT - wykrywanie obniżonego napięcia sieciowego - monitorowanie poziomu Vcc podczas
działania poprzez porównywanie napięcia do poziomu porównawczego (2.7V lub 4.0V)
•
WATCHDOG – resetowanie mikrokontrolera gdy ten się zawiesi
Reset powoduje, że we wszystkich rejestrach ustawiane są wartości początkowe.
Wystąpienie któregokolwiek z resetów powoduje ustawienie odpowiedniej flagi w rejestrze MCUSCR (na
bitach 4…0)
Mikroprocesory i mikrosterowniki
kolokwium 2
2
3. Watchdog
W celu wyeliminowania zawieszenia programu stosuje się licznik Watchdog. Zadaniem jego jest odmierzanie
ściśle określonych interwałów czasowych, po przekroczeniu których mikrokontroler jest zerowany.
Pisząc program musimy w różnych punktach programu (zależnie od jego wielkości) umieszczad instrukcje
zerowania licznika WDR.
Układ Watchdog jest napędzany osobnym wewnętrznym oscylatorem pracującym przy 8 MHz.
Rejestr związany z watchdogiem to WDTCR. Znajdują się w nim bity odpowiedzialne za wybór prescalera, bit
włączający/wyłączający oraz bit zabezpieczający.
Watchdog może byd ustawiony na jeden z trzech poziomów bezpieczeostwa:
•
0 - WDT jest początkowo wyłączony, można dowolnie zmieniad prescaler, aby wyłączyd WDT należy
wykonad sekwencję zabezpieczającą
•
1 - WDT jest początkowo wyłączony, zmiana prescalera i wyłączenie WDT wymaga wykonania sekwencji
zabezpieczającej
•
2 - WDT jest początkowo włączony i nie da się go wyłączyd, zmiana prescalera wymaga sekwencji
zabezpieczającej
Sekwencja zabezpieczająca wygląda następująco:
w jednej instrukcji należy ustawid bity WDCE i WDE na ‘1’
następnie w max. 4 cyklach zegara należy wyłączyd Watchdog (WDE<-‘0’) bądź zmienid prescaler.
4. Stany uśpienia
Tryby snu umożliwiają wyłączenie nieużywanych modułów w mikrokontrolerze. Atmega 8535 posiada różne
tryby snu pozwalające użytkownikowi zredukowanie poboru mocy stosownie do wymagao aplikacji.
Wprowadzenie jednostki w jeden z sześciu trybów snu, odbywa się przez ustawienie bitu SE (sleep enable,
rejestr MCUCR, bit 6) na ‘1’ i wykonanie przez procesor instrukcji sleep.
Bity SM2, SM1, SM0 (MCUCR, bity 7, 5 i 4) służą do określenia, który z trybów snu będzie włączony po
wykonaniu instrukcji sleep.
Wybudzanie układu powodują przerwania (konkretnie określone dla każdego z trybów uśpienia).
Rodzaje trybów snu:
• Idle – wyłączony jest zegar CPU i flash, urządzenia taktowane pozostałymi zegarami działają normalnie, tryb
stosowany przy konwersji analogowo-cyfrowej
• redukcja szumów ADC – wyłączony jest zegar CPU, flash i portów wyjścia/wejścia, tryb stosowany przy
konwersji analogowo- cyfrowej
• Power down – wszystkie zegary i oscylatory są wyłączone
• Power save – różni się od "power down" tym, że działa zegar asynchroniczny
• Standby (oczekiwania) – praktycznie to samo co "power down", z tym, że działa oscylator
• Extended standby (rozszerzonego oczekiwania) – praktycznie to samo co "power save", z tym, że działa
oscylator
Mikroprocesory i mikrosterowniki
kolokwium 2
3
5. Minimalizacja zużycia energii.
Jest wiele czynników, które należy wziąd pod uwagę kiedy próbuje się zmniejszyd pobór mocy. Generalizując,
tryby snu powinny byd wykorzystywane jak najczęściej jest to możliwe i powinny byd tak dobierane, aby jak
najmniej funkcji urządzeo pracowało. W szczególności następujące moduły należy wziąd pod specjalną uwagę
przy próbach uzyskania najniższych możliwych poborów mocy (powinny byd wyłączone, jeśli nie jest używane):
• Konwerter analogowo – cyfrowy
• Komparator analogowy
• Detekcja obniżenia napięcia sieciowego – Brown Out
• Wewnętrzne odniesienie napięcia. Będzie ono odblokowane kiedy będzie potrzebne przez detektor
obniżenia napięcia, analogowy komparator lub ADC. Jeżeli te moduły są wyłączone, wewnętrzne odniesienie
napięcia będzie odcięte i nie będzie pobierało mocy.
• Watchdog
6. Magistrala TWI
Protokół TWI umożliwia komunikację układów scalonych w obrębie danego urządzenia (głównie w sieciach
czujników) z wykorzystaniem jedynie dwóch linii (jednej dla sygnału zegarowego SCL i jednej dla danych
SDA).
W mikrokontrolerze Atmega8535 piny odpowiadające wejściom/wyjściom tych linii to:
pin 1 na porcie C- SDA
pin 0 na porcie C- SCL
Linie są dołączone do dodatniego napięcia zasilania przez rezystory. Piny układów posiadają zawsze
konfigurację typu otwarty kolektor lub otwarty dren. Przez to stan na całej lini SDA/SCL jest iloczynem
wszystkich stanów logicznych podłączonych urządzeo – AND. Niski poziom na linii jest wymuszany, gdy jeden
lub więcej jednostek wystawia zero na linii . Wysoki poziom istnieje na linii gdy wszystkie układy TWI przełączą
wyjścia w stan wysokiej impedancji, co powoduje że linia przechodzi w stan wysoki dzięki rezystorom
podciągającym.
Ilośd urządzeo , które mogą byd dołączone do linii jest ograniczona tylko pojemnością do 400pF i 7-bitowym
adresem (czyli max 128 adresów). Możliwa jest praca przy 100 kHz i 400 kHz.
Mikroprocesory i mikrosterowniki
kolokwium 2
4
Transmisja:
master zawsze inicjalizuje cykle łączności, generuje przebieg zegarowy, zarządza łącznością z innymi
układami. Może byd ich podłączone wiele, ale po rozpoczęciu transmisji tylko jeden może spełniad tą
rolę
slave przyjmuje lub wysyła dane na polecenie mastera w takt zegara linii SCL
gdy transmisja jest w trakcie, na linii SDA utrzymywane jest ‘0’. W stanie bezczynności na linii SDA
utrzymywana jest ‘1’
jeśli jakiekolwiek urządzenie podłączone do linii ustawi 0 na pinie SDA, wtedy na całej linii ustawiane
jest 0 -> podłączając urządzenia należy pamiętad o pull-up’ie aby uniknąd przypadkowego blokowania
linii
ramka protokołu komunikacji:
bity start i stop są zawsze nadawane przez mastera i oznaczają początek i koniec transmisji
bit potwierdzenia zawsze nadawany jest (bądź nie w razie usterek) przez slave i oznacza poprawnośd
odbioru danych. Nadawanie tego bitu następuje, gdy master zwolni linię SDA po zakooczeniu
transmisji bitów danych. Po nadaniu tego bitu ponownie kontrolę nad linią ma master.
Synchronizacja – gdy do TWI podpiętych jest więcej niż jeden master, trzeba jakoś ustalid wspólny
sygnał zegarowy (każdy master może generowad inny, charakterystyczny dla siebie). Zsynchronizowany
sygnał zegarowy SCL posiada:
poziom niski – określony przez układ o najdłuższym '0'
poziom wysoki – określony przez układ o najkrótszym '1'
Arbitraż – w sytuacji gdy dwa mastery zaczną nadawad w tym samym momencie, trzeba jakoś wybrad
tego, który przejmie kontrolę nad SDA. Wygrywa ten master, który nada ‘0’ w trakcie gdy drugi master
będzie nadawad ‘1’
Rejestry:
TWCR – w tym rejestrze możemy generowad start/stop, włączad/wyłączad magistralę, aktywowad przerwania
i obserwowad jego flagę, monitorowad czy nie ma błędów transmisji.
TWSR – pięd najstarszych bitów to kod zdarzenia, na dwóch najmłodszych ustawiamy prescaler (TWPS)
TWBR – ustawienie szybkości pracy magistrali
TWBR musi byd większe od 10
TWAR – rejestr adresowy (7-bitowy adres slave’a) oraz rozpoznawanie ogólnego adresu wywołania
TWDR – rejestr danych, przechowuje zawsze ostatni bajt obecny w magistrali nie zależnie od kierunku
przepływu danych
Mikroprocesory i mikrosterowniki
kolokwium 2
5
7. Licznik 1
Licznik pierwszy ma takie same zastosowania jak liczniki 0, z tym, że jest 16-bitowy. Sprawia to, że oprócz
umożliwienia doliczenia do większej wartości (ok. 64500), ma on także 10-bitowy prescaler, dwa 16-bitowe
rejestry OCR1A i OCR1B (rejestry porównawcze) oraz posiada układ Input Capture. Licznik 1 ma dwa wejścia
(pin timer1- port B pin 1, pin input capture- port D pin 6) i dwa wyjścia (OC1A- PD5 i OC1B-PD4).
Licznik pierwszy udostępnia 3 tryby PWM i 4 cztery przerwania (od przepełnienia, od doliczenia do zadanej
wartości x2 i od detekcji zdarzenia zewnętrznego).
Rejestry 16 bitowe wymagają rozdzielenia na dwie części – starszą i
młodszą np. TCNT1H i TCNT1L
Zapis do takiego rejestru zawsze przebiega w kierunku high>>low, a
odczyt low>>high. Do zapisywania części starszej na magistralę służy
rejestr tymczasowy TEMP.
Tryby pracy
Normalny – taki sam jak w liczniku 0 - licznik zawsze liczy w górę i jest zerowany po przepełnieniu
wartości 16-bitow. Flaga przepełnienia (TOV1) jest ustawiana w tym samym cyklu zegara, gdy licznik zeruje
się.
CTC – w trybie używany jest rejestr OCR1A lub ICR1 (nigdy nie OCR1B) do określenia rozdzielczości
licznika. W trybie CTC licznik jest zerowany, gdy zliczy do takiej wartości jaka jest wpisana do rejestru. Bit
przepełnienia TOV1 jest ustawiany w tym samym cyklu zegara w którym następuje wyzerowanie licznika w
skutek przepełnienia.
częstotliwośd generowana
fast PWM – tryb ten umożliwia generowanie przebiegu PWM. Licznik zlicza od zera do maksymalnej i
ponownie zaczyna od zera. Występują cztery rodzaje tego trybu: 8, 9, 10 i 16-bitowy (różnią się wartością
TOP do której ma zliczad). Flaga TOV1 ponownie ustawiana jest w
momencie przepełnienia.
PWM z korekcją fazy – w tym trybie, licznik zlicza od wartości zero do wartości maksymalnej a następnie
od maksymalnej do zera. Również występują cztery rodzaje tego trybu. Flaga TOV1 ustawiana jest w
punkcie bottom, a zmiany wartości wpisanych w OCR1A/B dokonują się wyłącznie w momencie TOP – stąd
generowany przebieg może byd niesymetryczny.
Mikroprocesory i mikrosterowniki
kolokwium 2
6
PWM z korekcją fazy i częstotliwości - jedyna różnica między tym trybem a trybem PC PWM, polega na
tym, że modyfikacja rejestrów OCR1A/B zachodzi w bottom i stąd przebieg jest symetryczny.
Rejestry:
TCCR1A – rejestr sterujący, można w nim włączyd/wyłączyd wyjścia OC1A/B, wymusid stan na wyjściu, wybrad
tryb pracy (1 z 16)
TCCR1B – drugi rejestr sterujący, zawiera dodatkowe bity do wyboru trybu pracy, można w nim ustawid
prescaler oraz obsługiwad układ Input Capture
TCNT1H i TCNT1L – starsza i młodsza częśd rejestru zliczającego
ICR1H i ICR1L – rejestru układu Input Capture
OCR1AH i OCR1AL/ OCR1BH i OCR1BL – rejestry porównawcze (ustawienie wartości, do której ma zliczad)
TIMSK, TIFR – bity 2-5, ustawianie i flagi przerwao
SFIOR – bit 0- kasowanie prescalera
Input Capture (układ zatrzaskujący)
Układ ten jest integralną częścią licznika 1. Funkcja przechwytywania (zatrzaskiwania) może posłużyd do
określenia czasu wystąpienia zewnętrznego sygnału powodującego przechwycenie. Sygnał ten może pochodzid z
koocówki ICP1 lub z komparatora analogowego (jeśli w odpowiedni sposób połączymy go z licznikiem 1)
Jego zasada działania polega na tym, że w momencie wystąpienia zdarzenia wyzwalającego, zapisywana jest do
rejestru ICR1 wartośd, jaka w chwili zatrzaśnięcia znajdowała się w rejestrze zliczającym TCNT1.
Przy układzie input capture działa układ odkłócający (noise canceler). Powoduje on opóźnienie o cztery cykle
pomiędzy zmianą na koocówce wyzwalającej a przechwyceniem do rejestru ICR1. W trakcie tych czterech cykli,
napięcie z pinu wejściowego jest w odpowiedni sposób filtrowane. Układ odkłócania korzysta z systemowego
zegara, bez prescalera.
Bity odpowiedzialne za kontrolę układu przechwytującego znajdują się w rejestrze TCCR1B (włączenie układu
odkłócającego, wybór zdarzenia wyzwalającego) oraz w rejestrze ACSR (połączenie z komparatorem – bit ACIC).
Mikroprocesory i mikrosterowniki
kolokwium 2
7
8. Licznik 2
Licznik ten w większości pokrywa się z licznikiem 0, poza paroma wyjątkami: po pierwsze i najważniejsze
umożliwia pracę asynchroniczną. Nie umożliwia on zliczania impulsów zewnętrznych (tylko zegarowe) ale ma
możliwośd pracy jako licznik czasu rzeczywistego (Real Time Counter). Kolejną cechą charakterystyczną jest
osobny, 10 bitowy prescaler (niezależny o TC0 i TC1).
Licznik 2 ma dwa wejścia (TOSC1 i TOSC2 na PC6 i PC7) służące do podłączania zewnętrznego rezonatora-
optymalnie 32kHz. Odchył od tej wartości powoduje błędy zliczania.
Wyjście licznika OC2 znajduje się na PD7.
Układem pracującym przy liczniku 2 jest układ synchronizujący, który umożliwia współpracę TC2 z całym
mikrokontrolerem (clk
I/O
z clk
ASY
). Bez niego nie było by możliwości modyfikacji i sczytywania wartości
rejestrów licznika.
Oprócz standardowych rejestrów dotyczących licznika (TCCR2, TCNT2, OCR2, TIMSK, TIFR, SFIOR) występuje
także dodatkowy rejestr ASSR – związany z pracą asynchroniczną. W rejestrze tym możemy włączyd pracę
asynchroniczną, a także odczytad bity związane z dostępnością rejestrów (przy pracy asynchronicznej TC2
działa dużo wolniej niż mikrokontroler w związku z czym niezbędne jest zabezpieczenie uniemożliwiające
kolejną modyfikację rejestrów zanim licznik zakooczył poprzednią). Jeśli na bitach dostępności jest ‘1’ nie
można przeprowadzid kolejnej modyfikacji.
9. EEPROM
- Jest to nieulotna pamięd dostępna dla użytkownika o pojemności 512 bajtów.
- Zapis do pamięci jest zabezpieczony odpowiednią sekwencją.
- Związane z nim jest jedno przerwanie (EEPROM gotowy)
- Rejestry specjalne pamięci EEPROM to:
EECR – control register – aktywacja przerwania, bit zabezpieczający zapis, start odczytu/zapisu
sekwencja zapisu:
EEMWE<<1 (bit zabezpieczający), EEWE <<0 (bit do zapisu)
po max. 4 cyklach EEWE<<1
EEDR – data register – zapisywane/odczytywane dane
EEARH, EEARL – rejestry adresowe
- jeśli chcemy zapisywad coś do EEPROMU nie może trwad jednocześnie zapis pamięci FLASH, ani nie powinny
byd aktywne przerwania (mogą zakłócad zapis)
- przerwanie jest generowaniu przy zmianie wartości EEWE na ‘0’
Wykonane przez:
CVercetti
.:Spinx:.
na podstawie wykładu dra Piotra Markowskiego i datasheet ATmega8535 i
strony www.atmega32.republika.pl