background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

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) 

 

 
 

background image

Mikroprocesory i mikrosterowniki 

kolokwium 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 

 
 

background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

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. 

 

 

background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

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 

  

background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

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. 

 
 
 
 

 

background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

 

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).  

background image

Mikroprocesory i mikrosterowniki 

kolokwium 2 

 

 

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