Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Řady mikrokontrolérů AVR. Firma Atmel vyrábí mikrokontroléry (dále jen procesory) ve 3 řadách a to :  Základní, která je charakteristická tím, že má.

Podobné prezentace


Prezentace na téma: "Řady mikrokontrolérů AVR. Firma Atmel vyrábí mikrokontroléry (dále jen procesory) ve 3 řadách a to :  Základní, která je charakteristická tím, že má."— Transkript prezentace:

1 Řady mikrokontrolérů AVR

2 Firma Atmel vyrábí mikrokontroléry (dále jen procesory) ve 3 řadách a to :  Základní, která je charakteristická tím, že má většinou 118 instrukcí.  Atiny, která je minimalizována co do funkcí, tak i portů. Má většinou 90 instrukcí.  ATmega, která má v provedení maximum možných funkcí a je realizována převážně se 130 instrukcemi. Starší provedení se liší od novějšího tím, že má možnost minimálně 1.000 přeprogramování paměti flash oproti novějšímu provedení s 10.000 přeprogramování.

3 Obvody ATmega 8515 a ATmega8535 lze beze zbytku nahradit starší provedení s označením AT90S8515 a AT90S8535 s tou výhodou, že mají větší paměť SRAM, paměť flash je možno přeprogramovat až 10.000krát a pracovní frekvence může být 8 MHz nebo 16 MHz dle typu.

4 Vlastnosti řady AVR Procesory Atmel AVR jsou používanou skupinou 8bitových procesorů. Jak již z tabulky vyplývá, je zde větší množství typů s odlišnými charakteristikami. I přes to lze najít pro většinu z nich následující charakteristické vlastnosti :  Harwardská architektura,  jádro s redukovanou instrukční sadou (RISC),  8bitová paralelní ALU,  počet čítačů/časovačů je 1 až 4 (dle typu),  duplexní sériový kanál sloužící jak pro komunikaci, tak i naprogramování procesoru,

5  rozhraní SPI, umožňující naprogramování obvodu přímo v aplikaci, nastavení přenosové rychlosti a spolupráci procesorů typu MASTER/SLAVE,  oscilátor a generátor hodinové frekvence je v procesoru,  paměť pro program je 1 kB až 128 kB s možností 1000 až 10.000x přeprogramování (dle typu),  paměť pro data (EEPROM) je 0 až 512B s možností 100.000x přeprogramování (dle typu),  šíře instrukčního slova 2B,  32 pracovních registrů propojených přímo s ALU,  překrývání instrukcí (pipelining),  Watchdog – hlídací obvod správného běhu programu.

6 Vnitřní uspořádání procesorů

7 Zdrojem adresy je programový čítač PC, který je 12bitový. To proto, že paměť typu flash je organizována jako Nx16b (Nx2B), kde N je závislé na typu procesoru. V případě procesoru AT90S8515 je N = 4k. Pro paměť programu je u tohoto typu zaručeno minimálně 1000 programovacích cyklů. Paměť programu lze naprogramovat buď paralelně v přípravku, nebo sériově jako ISP. U nových typů řady ATmega je možnost programování přímo procesorem, který využívá rezidentní Boot Leader Program.

8 Počínajíc typem AT90S8515 je možno připojit i externí paměť o velikosti až 64 kB. Pro adresaci se používá 16bitová adresová sběrnice. Spodní část adresy je multipexovaná s datovou sběrnicí. Při jejím použití se však sníží výkon procesoru, protože tyto instrukce jsou pomalejší. Většina instrukcí má formát 16bitového slova. Každá adresa programové paměti obsahuje 16 nebo 32bitovou instrukci.

9 Paměť dat je o velikosti 512B. Používá se pro uložení nejrůznějších konstant. Lze přeprogramovat minimálně 100.000x. Veškerá komunikace s vnitřní pamětí EEPROM se provádí pomocí instrukcí IN a OUT, protože jsou mapované do oblasti portů. Pro přístup k této paměti je nezbytný datový, adresový a řídící registr. Obecných pracovních registrů je 32 a jsou přímo spojeny s ALU. Vnitřní paměť SRAM má velikost 512 B a je uložena od adresy 60H. Slouží mimo jiné i jako zásobník. Zásobník je pak omezen jen velikostí této paměti.

10 Na sběrnici jsou dále připojeny porty, což je 32 linek I/O, sériový UART, 8bitový čítač/časovač, čítač Watchdog, jednotka přerušení, jednotka SPI a analogový komparátor.

11 Zjednodušené schéma

12 Přehled I/O registrů Tyto registry slouží jak k řízení periferií umístěných v procesoru, tak i vlastního jádra procesoru. Jsou realizovány jakožto buňky datové paměti s adresami $0020 až $005F a lze s nimi pracovat pomocí instrukcí IN a OUT, případně též jako s paměťovými buňkami. Je jich celkem 64, ale žádný z procesorů jich neobsahuje celý počet.

13 Stavový registr bit SREG 76543210 ITHSVNZC Tento registr se obdobně jako u procesorů řady 8051 v případě obsluhy přerušení a návratu z ní automaticky neukládá. To musí zařídit programátor. Stavový registr je umístěn v prostoru I/O na adrese 3FH (5FH).

14 I - Global Interrupt Enable. globální povolení přerušení je nulováno hardwarově při přerušení, nastavuje se instrukcí RETI. U procesoru 8051 je tento bit označen EA. T - Bit Copy Storage a příznak Transfer bit. Tento bit slouží jako zdrojový či cílový bit při kopírování bitu BLD (BilLoad) a BST (Bit Store). H - Half-carry Flag. Poloviční přenos, u procesoru 8051 je tento bit označen AC. S - Sign bit. Znaménkový bit, který je realizován funkcí EXOR mezi příznakem záporného výsledku (N) a příznakem přetečení (V). V - Two´s Complement Overflow Flag. Příznak přetečení dvojkového doplňku.

15 N - Negative Flag. Příznak záporného výsledku aritmetických a logických operací. Z - Zero Flag. Nulový výsledek. C - Carry Flag. Příznak přenosu.

16 Zásobník Zásobník, jak již bylo výše zmíněno je umístěn v paměti SRAM na adrese 60H a větší. Ukazatel SP je realizován jako dva 8bitové registry SPL a SPH situované v prostoru I/O. Počet použitých bitů SP závisí na typu procesoru. Prostor zásobníku musí být definován programem před jeho používáním, jinak je jeho hodnota 0 a tím pádem adresuje první registr!

17 Ukazatel na zásobník bit 15141312111098 SPH ------ SP9SP8 SPLSP7SP6SP5SP4SP3SP2SP1SP0 bit 76543210

18 Generátor hodin Hodinový generátor je tvořen Piercovým oscilátorem, ke kterému lze připojit buď krystal, nebo keramický rezonátor. Pracuje s frekvencí 4 – 8 MHz. Pro externí hodinový zdroj je možno přivést pulsy na vstup XTAL1. To je výhodné například pro multiprocesorový systém, který má být naprosto synchronní a použije se jediný společných zdroj hodinových pulsů.

19 Strojové cykly Strojový cyklus u těchto procesorů odpovídá přímo hodinovému cyklu. Není to jako u procesoru 8051, kde platí: 1 hodinový puls = 1 fáze, 2 fáze = 1 stav a 6 stavů = 1 strojový cyklus. U procesorů AVR je až na 2 výjimky vždy jednotná délka instrukce (2B). V těchto 2 B je uložen jak operační znak, tak i informace o operandech. Tou výjimkou jsou instrukce LDS a STS s dvojnásobnou délkou (4 B).

20 Časový průběh předvýběru instrukce a zřetězeného provádění instrukce

21 Paměť systému

22 Pracovní registry Pole pracovních registrů obsahuje 32 registrů s adresami od $00 do $1F datové paměti. Protože se vlastně jedná o datovou paměť, lze adresovat podobně jako u procesoru 8051 buď jménem R0 až R31, nebo adresou $0000 až $001F. Pokud se používá adresa, pak se bere registr jako paměťová buňka. Všechny instrukce, které pracují s těmito registry jsou realizovány v jednom hodinovém cyklu a to až na 6 instrukcí, které pracují s konstantami a to : LDI, ANDI, ORI, CPI, SBCI a SUBI. Ty jsou pak použitelné jen s druhou polovinou pracovních registrů (R16 až R31).

23 Rozložení registrů

24 Mapa vnitřní paměti

25 Ukazatelé Ukazatelé slouží k nepřímému adresování paměti, při kterém se daná adresa paměťové buňky uloží do registru. V případě použití instrukce pro přenos dat se bere buď jako zdroj či cíl buňka, jejíž adresa je uložena v ukazateli. Z výše uvedených skutečností vyplývá, že posledních 6 pracovních registrů může být použito jako 16bitové ukazatele pro nepřímé adresování. Pomocí něho lze obsáhnout celý adresový prostor (adresy 0 až 65535). Poslední 2 B pracovních registrů lze případně použít jako adresový ukazatel při nepřímém adresování programové paměti (tabulková transformace).

26 Ukazatelé

27 Procesory s výjimkou typu AT90S1200 mají 3 ukazatele a to :  X (pár registrů R26 a R27),  Y (pár registrů R28 a R29),  Z (pár registrů R30 a R31).

28 Pokud se pracuje například s tabulkou, pak se do ukazatele uloží adresa první buňky se kterou se má pracovat. Po každém kroku výběru z tabulky je třeba posunout ukazatel o 1 krok dopřede či dozadu. V tom případě lze využít buď  post-inkrement,  pre-dekrement. Post-inkrement v jedné jediné instrukci, vždy po ukončení operace, ještě zvýší obsah ukazatele. Naopak pre-dekrement před započetím operace sníží obsah ukazatele.

29 Vnitřní programová paměť (Flash) Vnitřní programová paměť (Flash)je adresována po 2 B. Její kapacita je odvislá od typu procesoru a pohybuje se od 1 kB do 128 kB. Minimální zaručený počet programovacích cyklů je podle typu buď 1.000 nebo 10.000.

30 Vnitřní datová paměť Vnitřní datová paměť je tvořena buňkami statické paměti SRAM. Tato paměť začíná blokem pracovních registrů odpovídajícím 32 registrům registrového pole (R0 až R31). Za nimi je umístěno 64 registrů I/O řídící periferie. Jako poslední blok je volně použitelná paměť, jejíž kapacita je opět odvislá od typu procesoru a pohybuje se od 0 B do 4 kB.

31 Vnitřní datová paměť

32 Vnitřní paměť EEPROM Jako další je v procesoru umístěna datová paměť EEPROM, která se maže elektricky přímo přístupem do některých registrů AVR. Používá se hlavně k uložení konfiguračních dat, konstant a podobně. Minimální počet mazacích cyklů je 100.000. Zápis do této paměti je mnohem pomalejší než do paměti SRAM. Do paměti se zapisuje po 1 B. Při mazání se oproti paměti Flash nemaže celá paměť, ale jen potřebný bajt. Zápis lze provádět jak programově, tak i pomocí programátoru. Pro úspěšnost zápisu je třeba dodržet určité posloupnosti instrukcí. Veškerá komunikace s pamětí se děje prostřednictvím instrukcí IN a OUT. Pro přístup k ní je třeba datový, adresový a řídící registr.

33 Adresový registr EEPROM bit15141312111098 EEARH ------- MSB EEARL LSB bit76543 2 10

34 Obsah adresového registru EEPROM určuje adresu paměťové buňky v adresovém prostoru EEPROM. Jednotlivé procesory se liší kapacitou paměti EEPROM v rozsahu od 64 B do 512 B. S tím úzce souvisí i délka adresovacího registru EEPROM pohybující se od 6 do 9 bitů. U procesorů AT90S1200, AT90S2313, AT90S2343 a AT90S4433 nepřesáhne velikost paměti 256 B a proto je registr jednobajtový s označením EEAR! U procesorů AT90S8515 a AT90S8535 se pak jedná o registrový pár, protože velikost EEPROM je větší než 256 B.

35 Datový registr EEPROM Při zápisu do paměti EEPROM se do registru EEDR ukládají zapisovaná data, která se mají zapsat do EEPROM. Při čtení z paměti EEPROM se tato data opět ukládají do registru EEDR odkud se odebírají. bit76543210 EEDRMSB LSB

36 Řídící registr EECR Procesor\bit 76543210 AT90S1 200 EECR ------ EEWEEERE AT90S2313 EECR ----- EEMWE EEWEEERE AT90S2343 EECR --- - - EEMWE EEWEEERE AT90S4433 EECR ---- ERIE EEMWE EEWEEERE AT90S8515 EECR ----- EEMWE EEWEEERE AT90S8535 EECR ---- ERIE EEMWE EEWEEERE V řídícím registru EECR se volí jak režim paměti, tak se i povoluje přerušení související s pamětí EEPROM. Počet bitů řídících a stavových bitů je odvislý od typu procesoru.

37 ERIE - EEPROM Ready Interrupt Enable. Pokud jsou bity EERIE =H a I = H je přerušení povoleno. To se generuje v okamžiku, kdy EEPROM je připravena na zápis dalšího bajtu. EEMWE - EEPROM Master Write Enable. Při nastavení bitů EEMWE = H a EEWE = H je možné zapisovat do paměti EEPROM. Je-li EEMWE = L a EEWE = H není možno zapisovat do paměti. Po nastavení EEMWE = H programem, je tento bit hardwarově po 4 hodinových pulsech vynulován. EEWE - EEPROM Write Enable. Signál EEWE je vlastně strobovací signál pro zápis do paměti EEPROM. Postup při zápisu viz níže.

38 EERE - EEPROM Read Enable. Pokud je třeba číst z paměti, pak je třeba nastavit EERE = H. Musí se ale nastavit až po uložení platné adresy do registru EEAR. Po přečtení bytu se tento bit hardwarově vynuluje, čímž se i potvrdí platnost dat v datovém registru EEDR. Čtení z EEPROM trvá 1 instrukci. Jestliže EERE = H, pak se jádro procesoru zastaví na dobu čtení, to je 4 strojní cykly.

39 Zápis dat do EEPROM má následující posloupnost :  Čeká se na okamžik, kdy EEWE = L,  zapíše se nová adresa EEPROM do EEARL a EEARH,  zapíší se nová data do EEDR,  nastaví se bit EEMWE = H a současně bit EEWE = L,  během 4 hodinových cyklů po nastavení EEMWE = H se nastaví EEWE = H.

40 Vnější paměť SRAM Prakticky jediným procesorem umožňujícím jednodušší přístup k vnější paměti dat (RAM) je procesor AT90S8515, který má vývody obdobné procesoru řady 8051 zajišťující možnost práce s vnější pamětí. Brána PA je multiplexovaná obousměrná datová sběrnice s nižšími řády adresové sběrnice. Tato část adresy se zapisuje do vyrovnávacího registru signálem ALE. Brána PC dává vyšší řády adresy. Signál RD (PD7) slouží pro čtení vnější paměti a signál WR (PD6) pro zápis do paměti.

41 Přístup do vnější datové paměti se řídí bitem SRE v registru MCUCR. Vyžaduje však navíc další hodinový cyklus (zpomaluje práci procesoru). Z toho vyplývá, že řada instrukcí je o tento cyklus delší. Jedná se o následující instrukce : LD, ST, LDS, STS, PUSH a POP. V tom případě, že byl zásobník situován do této vnější datové paměti, pak dochází k dalšímu zpoždění o 2 hodinové cykly v případech, kdy se realizuje ukládání nebo obnovování obsahu programového čítače (PC) při přerušení, volání podprogramu či návratu. Vnější datová paměť je mapována za vnitřní datovou paměť až do adresy 65535 tj. $FFFF.

42 Připojení vnější paměti SRAM

43 Registr MCUSR Je-li SRE = H, generují se řídící signály pro vnější datovou paměť. Je-li SEW = H, generuje se čekací stav pro pomalou vnější paměť. bit76543210 MCUCRSRESEWSESMISC11ISC10ISC01ISC00

44 Programově se musí nastavit bity SRE a SRW v registru MCUCR, kde v případě nastavení SRE = H se začnou generovat řídící signály (RD, WR, ALE) a SRW = H slouží pro vložení čekacího stavu pro pomalé paměti. Skutečné připojení vnější paměti je na následujícím obrázku. Paměť má kapacitu 32 kB. Nižších 8 adresových bitů se zapisuje například do registru 74HCT573 signálem ALE. Signál CE je připojen na úroveň L, protože aktivuje paměť. Stránkování, pokud je použito několik menších pamětí (32 kB) lze realizovat buď invertorem pro 2 paměti, nebo použitím obvodu 74LS138 až do 8 pamětí.

45

46 Varianta pro připojení až 8 vnějších pamětí (stránkování)

47 Časování 1cyklové aritmetické operace Procesory AVR načtou v jednom strojním cyklu oba operandy aritmeticko-logické operace a to při náběžné hraně hodinek. Dále v tomto cyklu se při spádové hraně hodinek realizuje výpočet. To vše proběhne při fázi předvýběru následující instrukce a výsledek se ukládá zpět do paměti (cílového registru) ještě před náběžnou hranou následujícího hodinového pulsu (write back).

48 Časování 1cyklové aritmetické operace

49 Časování přístupu do vnitřní paměti RAM Přístup do vnitřní paměti RAM probíhá ve 2 hodinových cyklech

50 Časování přístupu do vnější paměti RAM

51 Adresování a skoky Procesory typu AVR mají 5 adresovacích módů pro paměť dat:  přímé adresování,  nepřímé adresování,  nepřímé adresování s posunutím,  nepřímé adresování s inkrementací ukazatele adresy,  nepřímé adresování s dekrementací ukazatele adresy.

52 Skoky se zde rozlišují :  podmíněné,  přeskoky,  relativní skoky,  nepřímé skoky.

53 Přímé adresování Při přímém adresování je adresa součástí instrukce. U těchto procesorů lze adresovat :  registr registrového pole,  I/O registr,  datovou paměť,  programovou paměť.

54 Nepřímé adresování Při nepřímém adresování není adresa součástí instrukce. Dostává se do instrukce z ukazatele registrů (X, Y nebo Z).

55 Přímé adresování jednoho registru Používá se například pro vynulování daného registru. Přímým adresováním jednoho registru se vlastně vybírá registr z registrového pole (R0 až R31) přičemž operační znak (OP) se doplňuje číslem registru d.

56 Přímé adresování dvou registrů Používá se při přesunu dat mezi dvěma registry. Operační znak se vlastně doplňuje vybraným zdrojovým registrem r (5 bitů – registr R0 až R31) a cílovým registrem d (5 bitů – registr R0 až R31).

57 Přímé adresování I/O registrů Provádí se jím zápis dat z pole registrů do výstupního registru. Operační znak (OP) je doplněn číslem I/O registru (0 – 63), takže k jeho adresaci je třeba 6 bitů. Dalších 5 bitů je určeno pro jeden z 32 registrů z pole registrů.

58 Přímé adresování dat Jedná se 32bitovou instrukci, která provádí přepis dat z registru Rr (0 – 31) do datové paměti (16bitová adresa).

59 Nepřímé adresování dat Operační znak se doplňuje 5bitovou adresou registru z pole registrů. Provádí se přepis dat z registru Rr (Rd) do buňky datové paměti jejíž adresa je v daném registru (X,Y,Z).

60 Nepřímé adresování dat Provádí se přepis dat z registru Rr (0 – 31) do datové paměti na danou adresu v registru (Z,Y) s posunutím a které činí 6 bitů (až o 64 adres). Používá se pro přístup k datové paměti, kde k operačnímu znaku (OP) je přidán jeden z 32 registrů (5 bitů) a posunutí a.

61 Nepřímé adresování dat s posunutím Provádí se přepis dat z registru Rr (0 – 31) do datové paměti na danou adresu v registru (Z,Y) s posunutím a které činí 6 bitů (až o 64 adres). Používá se pro přístup k datové paměti, kde k operačnímu znaku (OP) je přidán jeden z 32 registrů (5 bitů) a posunutí a.

62 Nepřímé adresování dat s pre-dekrementem Je s výhodou používáno při tvorbě cyklů při zpracování celých bloků dat, kdy se provádí přepis dat z registru Rr do paměti na danou adresu sníženou při každém cyklu vždy o 1. Před vlastním provedením instrukce se obsah daného ukazatele sníží o 1. Operační znak je doplněn číslem registru (5 bitů) z registrového pole, při čemž je adresa určena některým z ukazatelů.

63 Nepřímé adresování dat s post-inkrementem Je obdobou adresace s pre- dekrementem a opět se výhodně používá při tvorbě cyklů. Provádí se přepis dat z registru Rr do paměti na adresu zadanou v ukazateli. Po provedení instrukce se obsah ukazatele zvýší o 1.

64 Adresování konstant uložených v paměti programu Jedná se o jedinou speciální instrukci LPM pro přístup k programové paměti, kde je adresa v ukazateli Z a podle stavu jeho nejnižšího bitu se nahrává byte. Je-li bit = 1, pak se nahrává horní byte, v opačném případě dolní byte. Upozornění. Programová paměť se adresuje po slovech – v tomto případě po dvou bytech.

65 Nepřímé adresování paměti programu Toto adresování se používá ve spojitosti s instrukcemi IJM a ICALL pro adresování programové paměti ukazatelem Z.

66 Relativní adresování paměti programu Toto adresování používají instrukce RJMP a RCALL pro skoky v rozsahu –2048 až +2047 adres od adresy instrukce. Operační znak je doplněn 12bitovou relativní adresou danou součtem programového čítače (PC) a hodnotou k.

67 Zkrácené relativní adresování paměti programu Je obdobné výše zmíněnému relativnímu adresování programu. Změna je v tom, že hodnota k umožňuje jen skoky v rozsahu –64 až + 63 (7 bitů) adres od adresy instrukce.

68 Paralelní vstup a výstup dat Procesory AVR mohou mít 1 až 6 bran dle typu. Základní funkce všech portů jsou stejné. U procesoru AT90S8515 jsou to 4 brány. Pro obsluhu každé brány jsou nezbytné 3 adresy a to pro :  vstupní vývody (Input Pins Address – PINA), adresa PINA umožňuje přístup k fyzické hodnotě vlastní brány,  výstupní registr (Data Register – PORTA), na jehož adresu se zapisují výstupní data (obr. 2.33),  směrový registr (Data Direction Register – DDRA), do něhož zapsaná data definují funkci každého vývodu brány.

69 Pro bytový přístup se používají instrukce IN a OUT. Pro bitové operace s vývody brány se používají 2 registry. Jednotlivé bity bran mohou mít nastaveny různé funkce podle nastavení bitů v registrech příslušných periferií či v kombinaci s nastavením jednotlivých bitů ve směrovém registru brány. Různé vývody jednotlivých bran jsou různě složité a to podle zastávané funkce. Ve výsledku jsou si ale všechny dosti podobné a proto vysvětlení činnosti bude provedeno na jednom nejjednodušším vývodu brány D.

70 Pokud výstupy z klopných obvodů mají úroveň DDDn = L a PORTD = L, pak je tranzistor zavřen. Umožňuje číst stav vývodu. Vstupní hodnota z vývodu prochází přes SKO, kde je signál natvarován (zbaven případného rušení) a přes budič se zapisuje do registru PIND. Pokud je DDDn = L a PORTD = H, pak přes tranzistor teče proud. Tento tranzistor nahrazuje vlastně řízený rezistor a jeho hodnota je dána tloušťkou izolační vrstvy mezi řídící elektrodou a ostatní částí tranzistoru. Pokud je na řídící elektrodě vhodné napětí, tranzistor se chová jako rezistor jehož hodnota odporu v sepnutém stavu je v rozmezí 35 k  až 120 k .

71 Zapojení jednoho vývodu brány D

72 Řízení brány DDDnPORTDnI/OFunkce LLvstupVelká impedance LHvstupPřipojen zdroj napětí přes odpor, zajišťuje úroveň H HLvýstu p Úroveň L HHvýstupÚroveň H

73 Pokud je výstup Q portu D (DDDn = H) na úrovni H, je následek takový, že je tranzistorem odpojeno napětí ze vstupu a současně aktivován budič. Protože výstup Q z registru PORTDn je propojen s budičem, pak budič jen „výkonově“ zesílí signál a ten se stává signálem výstupním vlastně zesíleným signálem PORTDn. Data která jsou zapsána do registru PORTD lze zpětně přečíst, tj. přečíst naposledy zapsaná data. Totéž platí i o registru DDDn.

74 Výstupy mají v úrovni L velký výkon, takže může každý vývod sepnout až 20 mA, celkem však brána nesmí sepnout více než 100 mA. Celkový sepnutý proud všech bran dohromady v daném okamžiku nesmí být větší než 200 mA. Výstupy mají v úrovni H jen velmi malý výkon, takže je vhodné jejich posílení externími rezistory.

75 Brány PA, PC Brána PA je obousměrná 8bitová multiplexovaná datová a adresová (nižší řády adresy) brána. Brána PC je obousměrná 8bitová datová brána. Pokud je třeba adresovat vnější paměť, slouží pro vyšší řády adresy.

76 Brána PB Brána PB je obousměrná 8bitová datová brána. Její další funkce jsou : PB0 – vstup čítače 0 PB1 – vstup čítače 1 PB2 – vstup analogového komparátoru + PB3 – vstup analogového komparátoru - PB4 – Slave Select kanálu SPI (SS) PB5 – MISO (výstup) kanálu SPI PB6 – MOSI (vstup) kanálu SPI PB7 – hodinky kanálu SPI

77 Brána PD Brána PD je obousměrná 8bitová datová brána. Jako další funkce jsou : PB0 – RxD – přijímač sériové linky PB1 – TxD – vysílač sériové linky PB2 – INT 0 – vnější přerušení 0 PB3 – INT 1 – vnější přerušení 1 PB4 – bez další funkce PB5 – Output Compare 1A (výstupní registr 1A) PB6 – čtecí signál paměti PB7 – zapisovací signál paměti

78 Další signály Mimo signály jednotlivých bran jsou vyvedeny ještě následující signály : ALE - Zápisový impuls do registru nižších řádů adresy ICP - Input Capture (záchytný registr) OC1B - Output Compare 1B (výstupní komparátor 1B) RESET- Nulování procesoru

79 Čítače/časovače Procesory jsou vybaveny většinou 1 až 4 čítači/časovači. Velmi často jsou vybaveny jedním 8bitovým a jedním 16bitovým čítačem/časovačem. Čítač čítá vnější události přivedené na vstup T0 (T1) na bráně PB. Časovač pak čítá vnitřní hodinovou frekvenci. Pokud jsou čítány vnější impulsy, pak musí každý stav trvat alespoň 1 periodu hodinového cyklu oscilátoru, při čemž se obsah čítače zvětšuje s každou náběžnou hranou. Maximální měřená frekvence vnějšího signálu může být nejvýše ½ frekvence oscilátoru při střídě 1:1.

80 Záchytný registr (Input Capture) umožňuje zachycení okamžitého stavu časovače. Zachycení probíhá při aktivaci ICP. Obsah výstupního komparátoru se porovnává s obsahem časovače. Při shodě se výstup OC tohoto obvodu vynuluje, nastaví či případně změní svou logickou úroveň na opačnou. Pokud je nastaven speciální program výstupního komparátoru (Output Capture), pak lze na vývodu OC generovat signál pulsně šířkové modulace (PWM).

81 Čítač/časovač 0 Čítač/časovač 0 čítá jen vpřed, při čemž je možno jeho obsah číst, případně do něj zapisovat předvolbu (doplněk = počtu pulsů).

82 Obvod AT90S8535 U obvodu AT90S8535 pak je i jiný význam signálů : AGND - analogová zem AREF - referenční napětí A/D převodníku AUcc - napájecí napětí A/D převodníku

83 Po zápisu do registru TCNT0 je možno začít čítání s náběžnou hranou po okamžiku zápisu. Protože 8bitový čítač/časovač při daných frekvencích nemá velký dělící poměr, má předřazen ještě děličku s možností výběru dělícího poměru v krocích 1, 8, 64, 256 a 1024.

84 Blokové schéma děličky předřazené čítači/časovači

85 Pro řízení dělícího poměru jsou určeny registry TCCR0 a TCCR1 (Timer/Counter 0 Control Register, Timer/Counter 1 Control. Příznak přetečení je umístěn v registru TIFR (Timer/Counter Inerrupt Flag Register) a povolení či zakázání běhu čítače/časovače se realizuje v registru TIMSK (Timer/Counter Interrupt Mask Registr). Podrobný popis obou těchto registrů je v kapitole Přerušovací systém procesoru.

86 Registr TCCR0 Tento registr slouží pro výběr hodinové frekvence čítače/časovače 0. bit76543210 TCCR0 ----- CS02CS01CS00 CS02 (CS12) CS01 (CS11) CS00 (CS10) Význam 000Zastavení čítání 001Hodinky clk 01 0 Hodinky clk/8 011Hodinky clk/64 100Hodinky clk/256 101Hodinky clk/1024 110Externí vstup 0 – čítání na spádovou hranu 111Externí vstup 0 – čítání na náběžnou hranu

87 Čítač/časovač 1 Čítač/časovač 1 je vícefunkční obvod. Jeho funkce jsou :  klasický 16bitový čítač/časovač, který pracuje obdobně jako čítač/časovač 0,  má 16bitovou jednotku záchytného registru s komparátorem. To znamená, že je porovnáván obsah čítače/časovače1 s obsahem registru Output Compare Registr a při dosažení shody je generováno přerušení,

88  zachycení stavu čítače v okamžiku, kdy se mění stav na vývodu do aktivní úrovně. Tento stav je výhodný v případě, že je například obsluhováno jiné přerušení s vyšší prioritou, nebo je přerušovací systém zamaskován. V tom případě se do záchytného registru (Capture Registr) zapíše okamžitá hodnota a generuje se žádost o přerušení. Obslužný program přerušení pak čte hodnotu (časový údaj) ze záchytného registru, čímž eliminuje vzniklá nejrůznější zpoždění.  generování signálu PWM. V tomto případě pracuje čítač/časovač1 jako obousměrný čítač, který čítá nejprve vzestupně a po dosažení hodnoty TOP sestupně. Tyto hodnoty určují jednak rozlišení PWM, jednak frekvenci opakování.

89 Jako zdroj hodinového signálu slouží výstup z předřazené děličky CK (viz předchozí tabulku) nebo vnější signál z vývodu T1. Předřazená dělička pak umožňuje generovat časy od  s do jednotek sekund. Pokud se používá vnější hodinový signál, pak vzhledem k tomu, že je vzorkován hodinovými pulsy, je jeho největší frekvence rovna nejvýše ½ frekvence hodinovek procesoru.

90 16bitový čítač je složen ze dvou 8bitových registrů TCNT1H a TCNT1L. Rozsah čítání je od 0 do 65535. Po dosažení maximální hodnoty dojde k přetečení na hodnotu 0 a může se generovat přerušení.

91 Činnost čítače/časovače zajišťují registry TCCR1A a TCCR1B. Přerušení je realizováno registry TIFR a TIMSK (kapitola Přerušovací systém procesoru). Čítač/časovač 1 obsahuje navíc funkci výstupního komparátoru (Output Compare) a komparačního registru OCR1A (OCR1) s výstupem na vývod OC1. Procesory AT90S8515 a AT90S8535 mají dva 16bitové komparační registry s označením OCR1A a OCR1B. Pokud pracuje časovač, pak nemá automatické nastavení doplňku (jako například u procesoru řady 8051 mód 2). Proto je nezbytné provést vždy opakovaně nový zápis tohoto doplňku po každém přetečení časovače.

92 Čítač/ časovač 1

93 Ačkoliv je procesor 8bitový, má čítač/časovač 16bitový. Z tohoto důvodu pak pracuje s 1 B hodnotami. Pokud se musí provést čtení či zápis do těchto registrů najednou, pak využívá dočasný registr TEMP, který může používat pro práci s následujícími registry :  TCNT1H, TCNT1L,  OCR1AH, OCR1AL (OCR1H, OCR1L),  OCR1BH, OCR1BL,  ICR1H, ICR1L.

94 Pokud se s těmito registry pracuje, musí být zakázáno přerušení, jinak dochází k práci a nekorektními daty. Pokud se zapisuje do čítače/časovače 1, pak se data určená pro horní registr (TCNT1H) zapíší do registru TEMP. Při zápisu dolního bytu (TCNT1L) se data přepíší do dolního bytu, tak i z registru TEMP do horního bytu čítače/časovače 1. Pokud se provádí čtení, pak se musí nejprve přečíst dolní byte (TCNT1L) a současně se obsah horního bytu uloží do registru TEMP. Následné čtení horního bytu (TCNT1H) se vlastně čte z registru TEMP.

95 Výstupní komparátor Obsah registrů 16bitového čítače (TCNT1H, TCNT1L) je porovnáván s obsahem 16bitového komparačního registru (OCR1AH,OCR1AL případně OCR1H, OCR1L). Pokud jsou jejich hodnoty stejné, pak se aktivuje některý vývod OC1 (OC1A), případně OC1B.

96 Vstupní záchytný registr Pomocí tohoto registru lze zachytit okamžité hodnoty čítače, které by z různých důvodů nebyly přístupné a vznikala by chyba. V popisu funkcí čítače časovače byl již uveden.

97 Volně běžící čítač 16bitový čítač Je to vlastně 16bitový čítač, který neustále čítá nahoru a to od hodnoty $0000 do hodnoty $FFFF. Dalším pulsem dojde k přetečení a lze generovat přerušení. Čítač je realizován párem 8bitových registrů TCNT1H a TCNT1L.

98 Řídící registr A čítače/časovače 1 - TCCR1A Tento registr slouží pro nastavení módu pulsně šířkové modulace a výstupu komparátoru. bit76543210 TCCR1A COM1A1COM1A0COM1B1 COM1B0 -- PWM11PWM10 COM1A1, - Compare Output Mode 1A. Určují činnost výstupních vývodů v případě shody při komparaci v čítači/časovači 1. COM1A0 - Činnost výstupních vývodů ovlivňuje vývod OC1A a proto se musí nastavit řídící bit směru do H. COM1B1 - Compare Output Mode 1B. Určují činnost výstupních vývodů v případě shody při komparaci v čítači/časovači 1. COM1B0 Činnost výstupních vývodů ovlivňuje vývod OC1B a proto se musí nastavit řídící bit směru do H. PWM11, - Řídí činnost čítače/časovače. PWM10

99 Nastavení činnosti výstupních vývodů při dosažení shody COM1X1COM1X0Význam 00Čítač/časovač 1 je odpojen od výstupu OC1X 01Překlopí výstup OC1X = H 10Vynuluje výstup OC1X = L 11Nastaví výstup OC1X do H

100 Nastavení módu PWM PWM11PWM10Význam 00Mód PWM není povolen 01Mód 8bitový PWM 10Mód 9bitový PWM 11Mód 10bitový PWM

101 Řídící registr B čítače/časovače 1- TCCR1B bit TCCR1B 76543210 ICNC1ICES1 -- CTC1CS12CS11CS10 Tento registr slouží pro výběr hodinové frekvence pro čítač/časovač 1a mód záchytného registru (Input Capture) a výstupu komparátoru (Output Compare). ICNC1 - Input Capture1 Noise Canceler je ovládací vstup omezovače šumu. Je-li ICNC1 = L je vypnuto omezování šumu. Vstup je vzorkován při změně hrany na ICP podle ICES1. Je-li ICNC1 = H provádí se filtrování tak, že se za nezašuměný signál považuje takový, u něhož jsou 4 následující vzorky stejné. ICES1 - Input Capture1 Edge Select. Je-li ICES1 = L – vzorkování na spádovou hranu, je-li ICES1 = H – vzorkování na náběžnou hranu. CTC1 - Clear Timer/Counter1 on Compare Match. Je-li CTC1 = H je čítač/časovač1 vynulován při hodinovém cyklu následujícím po shodě v komparátoru. Je-li CTC1 = L, pak čítač/časovač pokračuje v čítání i po dosažení shody dále. CS12 CS11 CS10 - Tyto bity určují zdroj signálu či dělící poměr předřazené děličky frekvence - tab. 2.4

102 Registry OCR1A a OCR1B Komparační registry OCR1AH a OCR1AL čítače/časovače1 obsahují hodnotu průběžně porovnávanou s s okamžitou hodnotou tohoto čítače/časovače. V případě shody se na vývodech OC1 (OC1A) realizuje aktivace výstupu nastavením příznaků COM1A1 a COM1A0. Komparační registry OCR1BH a OCR1BL čítače/časovače 1 obsahují hodnotu průběžně porovnávanou s s okamžitou hodnotou tohoto čítače/časovače. V případě shody se na vývodech OC1B) realizuje aktivace výstupu nastavením příznaků COM1B1 a COM1B0. Upozornění. Při zápisu se nejprve zapisuje OCR1AH (OCR1BH), při čtení pak nejprve OCR1AH (OCR1BL).

103 Registr ICR1 V okamžiku aktivace vývodu ICP je okamžitý stav čítače/časovače 1 zapsán do registrů ICR1H a ICR1L (vstupní záchytný registr čítače/časovače 1).

104 Mód pulsně šířkové modulace (PWM) V tomto módu je zablokována funkce Output Capture. Pulsně šířková modulace je realizována tak, že čítač čítá vzestupně, až dosáhne maximální hodnoty (TOP) a poté začne čítat sestupně a zase naopak. Hodnota čítače se průběžně porovnává se zapsanou hodnotou v registru OCR1A (OCR1B). Po dobu, kdy je hodnota čítače nižší než zapsaná hodnota, je na výstupu OC1A (OC1B) generován šířkově modulovaný puls. Proto se nejprve referenční hodnota při zápisu do komparačních registrů OCR1AH, OCR1AL (OCR1BH, OCR1BL) uloží do dočasného registru TEMP. Vlastní zápis do komparačních registrů se realizuje až v okamžiku, kdy čítač dosáhne maximální hodnoty (TOP) a tím se zabrání nesynchronizovanému zápisu a případnému poruchovému pulsu (glitch).

105 Pokud je proveden nesynchronní zápis nové hodnoty do registru OCR1A (OCR1B), pak může vzniknout nežádoucí výstupní impuls, který nemá definovanou šíři (glitch). Z toho důvodu lze zapsat novou hodnotu do záchytného registru, kterou procesor přepíše do registru OCR1A (OCR1B) ve vhodný okamžik a zabrání poruchovému pulsu.

106 Generování pulsně šířkové modulace (PWM)

107 Registr TCCR1A bit TCCR1A 76543210 COM1A1COM1A0COM1B1COM1B0 -- PWM11PWM10 PWM11, PWM10 - Řídí činnost čítače/časovače.

108 Nastavení modulátoru PWM PWM11PWM10RozlišeníFrekvenceMaximální hodnota čítáníVýznam 00 --- Mód PWM není povolen 018 bitůf č1 /510255 ($00FF)Mód 8bitový PWM 109 bitůf č1 /1022511 ($01FF)Mód 9bitový PWM 1110 bitůf č1 /20461023 ($03FF)Mód 10bitový PWM

109 Výběr módu PWM pro OC1A (OC1B) COM1A1 (COM1B1) COM1A0 (COM1B0) OCR1Výstup OC1 (OC1A) Funkce 0X -- Výstup je odpojen 10$0000LNuluje se při shodě čítání nahoru. Nastaví se při MaxHshodě čítání dolů. 11$0000HNuluje se při shodě čítání dolů. Nastaví se při MaxLshodě čítání nahoru.

110 Logika odstraňování šumu ze vstupního signálu V případě, že je vstupní signál silně rušen, pak se provádí filtrování vstupního signálu. Jestliže je zapnut potlačovač šumu, pak je za správný stav považován takový stav, kdy postupně všechny 4 vzorky na vstupním vývodu ICP mají shodnou hodnotu. Následkem toho je aktivován příznak ICNC1 v registru TCCR1B.

111 Sériový kanál UART je sériový plně duplexní univerzální asynchronní přijímač/vysílač. Jeho vlastnosti jsou :  délka znaku je 8 nebo 9 bitů,  detekce chyb přenosu : ztráta znaku, chyba znaku, falešný start bit,  3 druhy přerušení : dokončení vysílání, dokončení příjmu, prázdný datový registr,

112  filtrace šumu u přijímače,  vlastní generátor přenosových rychlostí,  velká řada přenosových frekvencí. Při použití 9bitové komunikace lze snadno oddělit data od povelů.

113 Vysílání dat Nastavením bitu TXEN = H se povoluje vysílání a vývod TxD (PD1) pracuje zcela nezávisle na nastavení bitu DDRD1. Je-li bit TXEN = L, pak lze vývod používat jako každý jiný I/O vývod. Vysílání se spouští zápisem dat do registru UDR. Poté se data přenáší do vysílacího posuvného registru a to :  okamžitě, pokud je posuvný registr prázdný,  až po vyprázdnění posuvného registru, to je se zpožděním.

114 Spolu s přenosem dat vysílacího registru se nastavuje příznak UDRE a start bit. Nastavení příznaku UDRE signalizuje, že do registru UDR je možno zapsat další znak. V případě potřeby přenosu znaku o délce 9 bitů (CHR = H) je třeba nejprve provést zápis devátého bitu do TXB8 a následně provést zápis prvých 8 bitů do registru URD. Následuje přenos dat do vysílacího registru jak z registru UDR, tak i z TXB8.

115 S počátkem vysílání je na vývodu TxD jako prvý start bit a poté bity v pořadí LSB – MSB. Po odvysílání znaku je vyslán stop bit. Pokud nejsou připravena další data a byl po dobu 1 hodinového vysílacího cyklu na vývodu TxD stop bit, pak se nastaví příznak (TxC) oznamující, že vysílání je kompletní. Jak bylo již výše zmíněno, s počátkem přenosu se nastavuje příznak UDRE = H. Pokud nejsou k dispozici pro vysílání další data, zůstává příznak nastaven až do zápisu dalších dat.

116 Vysílač UARTu

117 Příjem dat Přijímač vzorkuje signál na vstupu RXD frekvencí 16x vyšší než je přenosová rychlost. Je-li linka ve stavu H, pak identifikovaná změna signálu do stavu L je brána jako start bit. Jestli to není náhodná porucha je posuzováno pomocí vzorků 8 až 10. Jestliže alespoň 2 vzorky ze 3 (majorita 2 ze 3) jsou ve stavu H, pak se nejedná o start bit. Pokud se jedná o telegram, pak se i vzorkují všechny ostatní bity a opět jsou rozhodující vzorky 8 až 10. Podle majority je odvozována hodnota bitu a předávána do posuvného registru. Podobně je posuzován i stop bit. V případě identifikace signálu L se nastavuje příznak FE.

118 Vzorkování přijímaných dat

119 Data se přenáší z přijímacího posuvného registru do registru UDR a nastaví se příznak RxC. Registry stejného jména UDR jsou vlastně dva a rozlišují se tak, že se do jednoho zapisuje a z druhého čte. Pokud je délka znaku 9 bitů, pak je při přenosu dat do datového registru UDR naplněn i bit RXB8 a to tímto devátým bitem. V případě, že procesor neodebere včas data z registru UDR a ta jsou přepsána dalším znakem, pak se nastaví příznak ztráty znaku OR. V programu by měla být vždy část, která vždy před začátkem čtení znaku testuje zdali nedošlo ke ztrátě znaku. Případě ztráty znaku musí procesor žádat o nové vysílání zprávy (realizuje programátor).

120 Při nastavení RXEN = L je příjem telegramů blokován a vývod lze použít jako běžný vývod s funkcí I/O. Pokud je RXEN = H, pak je přijímač připojen na vývod RxD a nastaven tak, že je zcela nezávislý na nastavení registru DDRD (konkrétně DDRD0).

121 Řízení UARTu se provádí pomocí 4 registrů a to :  UDR, který slouží jako datový registr,  USR, který slouží jako stavový registr,  UCR, který slouží jako řídící registr,  UBRR, který slouží jako registr řídící přenosovou rychlost.

122 Přijímač UARTu

123 Registr UDR Je realizován dvojicí registrů se stejnou adresou, stejně jako u řady procesorů 8051. Zapisuje se do vysílacího registru a čte se z přijímacího registru.

124 Registr USR bit USR 765 4 3210 RXCTXCUDREFEOR --- RXC - UART Receive Complete. RXC = H, je-li přenesen znak z přijímacího registru do registru UDR. Je-li v registru UCT nastaven příznak RXCIE = H, pak se po příjmu znaku vyvolá přerušení. Bit RXC se nuluje po čtení registru UDR. Nedojde-li ke čtení, generuje se přerušení po jeho obsluze znovu. TXC - UART Transmit Complete. TXC = H po vyslání stop bitu a oznamuje, že lze vložit další data. Je-li TXCIE = H a dojde k nastavení TXC = H, vyvolá se přerušení. TXC je nulováno hardwarově vykonáním obslužného programu. UDRE - UART Data Register Empty. V okamžiku přenesení dat do vysílacího registru je UDRE = H a oznamuje možnost zápisu dalších dat do vysílače. Je-li UDRIE = H, pak UDRE = H vyvolá přerušení. Obslužný program přerušení musí provést zápis do UDR. Pokud tomu tak není, dojde k opětné aktivaci obslužného programu. FE - Framing Error. Je-li FE = H, pak oznamuje, že místo stop bitu = H je L! Bit je automaticky nulován je-li rámec v pořádku. OR Overrun. Je-li OR = H došlo ke ztrátě znaku, protože byl předchozí neodebraný byte přepsán novými daty. Nuluje se čtením z UDR.

125 Registr UCR RXCIE - RX Complete Interrupt Enable. Povolení přerušení po dokončení příjmu. Je-li RXCIE = H vyvolá nastavení RXC = H. TXCIE - TX Complete Interrupt Enable. Povolení přerušení po dokončení vysílání. Je-li TXCIE = H vyvolá se nastavení TXC = H, což následovně vyvolá přerušení odpovídající dokončení znaku. UDRIE - UART Data Register Empty Interrupt Enable. Povolení přerušení při vyprázdnění datového registru. RXEN - Receiver Enable. Povoluje příjem. Je-li RXEN = L, nelze nastavit příznaky FE, OR a RXC. TXEN - Transmitter Enable. Povoluje vysílání. Pokud v průběhu vysílání je nastaveno TXEN = L, není probíhající přenos přerušen. CHR9 - I-bit Charakters. Délka přenosu je 9 bitů. 9 bit je čten z RXB8 a zapisován do TXB8. Tento bit může sloužit jako paritní nebo další stop bit. RXB8 - Receive Data Bit 8. Je-li CHR9 = H, je devátý bit přijat. RXB8 je vlastně 9 bit znaku. TXB8 - Transit Data Bit 8. Je-li CHR9 = H, pak v TXB8 je 9 bit znaku, který se bude vysílat. bit UCR 76543210 RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8

126 Registr UBRR Tento registr ovládá přenosovou rychlost dle vzorce : Baud =f 0 /16.(UBRR+1) kde f 0 je frekvence krystalu. UBRR je nastavitelný od 0 do 255 pro procesory AT90S2313, AT90S8515 a AT90S8535. Pro procesor AT90S4433 mají 12bitový registr složený z UBRRH a UBRRL.

127 Nastavení UBRR pro různé kmitočty a z toho vyplývající chyba v % Baud1 MHz%2 MHz%4 MHz%8 MHz% 2400250,2510,21030,22070,2 4800120,2 250,2510,21030,2 960067,5 120,2250,2510,2 1440037,883,7162,1 340,8 1920027,867,5 120,2250,2 2880017,83 83,7162,1 38400122,927,867,7 120,2 5760007,81 3 83,7 115200084,307,81 37,5

128 Je však nutno podotknout, že pro některé frekvence, které zde nejsou zobrazeny je chyba při všech přenosových rychlostech nulová. Jsou to : 1.8432 MHz, 3.6864 MHz, 7.3728 MHz, 9.216 MHz a 11.059 MHz. Dělením frekvence 11.059 MHz lze získat frekvence pro monofonní hudební nástroj.

129 Sériový kanál SPI Sériový kanál SPI (Seriál Peripheal Interface) se používá pro programování vnitřních pamětí (ISP) a též pro komunikaci při běhu programu pro většinu procesorů fy ATMEL (ovládání periferních obvodů). Jejich vlastnosti jsou :  3vodičový synchronní přenos dat (MOSI, MISO, SCK)  volitelná funkce Master nebo Slave,  4 programovatelné rychlosti,  duplexní provoz,  volba sledu bitů (MSB – LSB nebo LSB – MSB),  příznak konce přenosu,  příznak kolize přenosu,  ukončení činnosti módu Idle po příjmu dat v módu Slave.

130 Blokové schéma SPI

131 Zápis dat do datového registru SPI spustí hodinový generátor tohoto bloku procesoru pracujícího v módu Master (vývod PB7 – SCK). U obvodu pracujícího v módu Slave je pak zdrojem hodinových pulsů obvod v módu Master. Data se vysouvají z posuvného registru přes výstup MOSI (Mater Out Slave In – vývod PB5). Tato data vstupují do obvodu Slave. Po přenosu bytu se generátor hodin zastaví a v registru SPSR nastaví příznakem SPIF konec přenosu. Pokud je však v registru SPCR nastaven příznak SPIE, je generován požadavek na přerušení.

132 Propojení master- slave na sběrnici SPI Princip propojení mezi procesory Master a Slave je na spodním obrázku.

133 Z obrázku je vidět, že data z registru Master se nasouvají do registru Slave a z registru Slave data do registru Master (sériová výměna bytu).

134 Pokud je nastaven vývod SS = H (Slave select), není brána aktivní a vývod MOSI se požívá jako každý jiný vstupní či výstupní vývod. Pokud je nastaven SS = L je vybrán daný obvod SPI jako Slave.

135 Formát přenosu SPI CPHA = L a DORD = L Existují 4 módy přenosu dat díky kombinacím fází a polarity SCK vzhledem k datům.

136 Formát přenosu SPI CPHA = H a DODR = L

137 Kanál SPI je u procesorů ovládán 3 registry a to :  SPCR, což je řídící registr pro řízení formátu a rychlosti přenosu,  SPSR, což je stavový registr pro kolizi přenosu a příznaky ukončení,  SPDR, což je datový registr pro vstupní a výstupní data.

138 Pomocí registru SPCR lze nastavit 4 módy přenosu dat vzhledem k sériovým datům CPHACPOLFunkce 00Data jsou vzorkována náběžnou hranou SCKCPOL určuje stav při přenosu 01Data jsou vzorkována spádovou hranou SCKSCK = CPOL = L, SCK = CPOL = H 10Data jsou vzorkována spádovou hranou SCKCPOL určuje stav při přenosu 11Data jsou vzorkována náběžnou hranou SCKSCK = CPOL = L, SCK = CPOL = H bit SPCR 76543210 SPIESPEDORDMSTRCPOLCPHASPR1SPR0 SPI Enable. Je-li SPE = H je povoleno SPI a vývody PB4 až PB7 slouží jako signály SS, MOSI, MISO a SCK. SPIE - SPI Interrupt Enable. Je-li SPIE = H a I = H je povoleno přerušení od SPI kanálu. SPE - DORD - Data Order. Určuje pořadí bitů při přenosu. Je-li DORD = H, pak přenos začíná bitem LSB, v obráceném případě bitem MSB. MSTR - Master/Slave Select. Je-li MSTR = L, je procesor nastaven jako Slave a obráceně. CPOL - Clock Polarity. Je-li CPOL = H, je v klidovém stavu SCK = H. Je-li CPOL = L, je v klidovém stavu SCK = L. CPHA - Clock Phase. Určuje fázi hodin a řídí spolu s CPOL mód přenosu dat.

139 Nastavení frekvence SCK SPR1SPR0f SCK f pro f 0 = 8 MHz 00f SCK /4 2 MHz 01f SCK /16500 kHz 10f SCK /64125 kHz 11f SCK /25662,5 kHz SPR1 - SPI Clock Rate Select. Volí se jimi přenosová rychlost SCK u procesoru Master SPR0

140 Registr SPSR bit SPSR 76543210 SPIFWCOL ------ SPI Interrupt Flag. Je-li SPIF = H, pak indikuje konec přenosu. Je-li v témže okamžiku I = H, pak se generuje přerušení. Obdobně se nastaví SPIF = H, je-li vstup SS = L a je-li SPI v módu Master. SPIF - WCO L - Write Collision Flag. WCOL = H v případě, že během přenosu dat se provede zápis do datového registru kanálu SPI. Zápis nezpůsobí chybu, ale indikuje se neúspěch. Pokud se čte obsah registru SPSR, pak dojde k automatickému vynulování příznaku. To znamená, že čtení v průběhu přenosu vede k chybnému přenosu dat.

141 Příklad přenosu z obvodu Master. Registr SPCR je nezbytné příznaky v registru SPCR nastavit následovně : SPIE=H - povoluje přerušení po vyvolání bytu SPE=H - aktivuje se kanál SPI DORD=L - vysílá se jako první bit MSB MSTR = H - procesor pracuje jako Master CPOL = H - fáze signálů CPHA = L - fáze signálů SPR1 = L - frekvence přenosu je f o /128 SPR0 = L Zápis hodnoty do registru SPDR způsobí start vysílání.

142 Směr vývodů kanálu SPI v závislosti na zvoleném režimu Směr Vývod MasterSlave MOSI definováno uživatelemvstup MISO vstupdefinováno uživatelem SCK definováno uživatelemvstup SS definováno uživatelemvstup

143 Analogový komparátor Některé procesory nemají AD převodník. V řadě případů postačí i méně přesné metody převodu. K tomu je vhodný jednoduchý analogový komparátor, který obsahuje dva vstupy (neinvertující + a invertující -). K řízení se používá registr ACSR.

144 Registr ACSR bit ACSR 76543210 ACD-ACOACIACIEACICACIS1ACIS0 ACD - Analog Comparator Disable. Nastavení ACD = H – realizuje odpojení analogového komparátoru, což snižuje spotřebu. Pokud se provádí změna tohoto bitu, musí být zakázáno přerušení analogového komparátoru nastavením ACIE = L v registru ACSR. ACO - Analog Comparator Interrupt Flag. Nastavením ACO = H se realizuje přímé propojení s výstupem komparátoru. ACI - Analog Comparator Interrupt Flag. ACI=H se nastavuje v případě, že výstup komparátoru generuje přerušení definované bity ACI0 a ACI1. Pokud je ACIE = H a I = H, pak se provede obslužný podprogram Analog Comparator. Pokud se provede odpovídající vektor přerušení, je ACI hardwarově vynulován, jinak se musí vynulovat zapsáním H do příznaku. ACIE - Analog Comparator Interrupt Enable. Přerušení analogového komparátoru je aktivováno je-li ACIE = H a I = H. Je-li ACIE = L je přerušení zakázáno. ACIC - Analog Comparator Input Capture Enable. Je-li ACIC = H, pak umožní funkce Input Capture zapnutí čítače/časovače1 analogovým komparátorem. ACIS0, ACIS1 - Analog Comparator Interrupt Mode Select. Těmito bity se nastavuje mód přerušení (blíže kapitola Přerušovací systém procesoru).

145 Hlídací obvod Watchdog Použití hlídacího obvodu je založeno na předpokladu, že po jeho spuštění se předpokládaný interval hlídání neprotáhne přes daný rozsah, pak se opět programově daný hlídací obvod vynuluje. V případě nežádoucího například zacyklení však nedojde k vynulování (vypnutí) hlídacího obvodu a ten následovně nuluje procesor. Tento obvod je vlastně časovač, který je odstartován buď po nulování, nebo při běhu programu. Jeho časová konstanta se nastavuje buď programem, nebo se svazuje s hodinovými pulsy procesoru. Pokud skončí časový limit, pak časovač vyvolá automaticky nulování za předpokladu, že hlídací obvod mezi tím není vynulován.

146 Blokové schéma obvodu Watchdog

147 Řídící registr hlídacího obvodu WDTCR bit WDTCR 76543210 --- WDTOEWDEWDP2WDP1WDP0 WDTOE - Watchdog Turn-off Enable. WDTOE = H slouží pro vynulování bitu WDE, WDTOE = L není povolena činnost Watchdog. WDE - Watchdog Enable. WDE = H je povolena činnost Watchdog WDP2, - Tyto bity slouží pro nastavení dělícího poměru děličky frekvence a tím vlastně pro nastavení WDP1, doby cyklu obvodu. WDP0

148 Vliv bitů WPD0 až WPD2 na dobu cyklu WDP2WDP1 Počet cyklů [v k] oscilátoru WDT Typický Time-out při Ucc= 5 V 0001615 ms 0013230 ms 0106460 ms 0111280,12 s 1002560,24 s 1015120,48 s 11010240,97 s 11120481,9 s

149 Přerušovací systém procesoru Procesory mohou mít až 34 zdrojů přerušení (v základní řadě jen maximálně 16). Adresy jak je vidět z následující tabulky jsou u těchto procesorů uspořádány za sebou a to od počátku paměťového systému. Tomuto uspořádání odpovídá i jejich priorita. Přerušení je povoleno tehdy, pokud je logický součin bitu I ve stavovém registru SREG a bitu povolení přerušení v řídícím registru zdrojové periferie roven H. Každé návěstí je automaticky nulováno hardwarově po spuštění obslužného programu. Odezva na přerušení trvá 3 hodinové pulsy stejně jako návrat z obslužného podprogramu. Do zásobníku se ukládá jen návratová adresa. Ostatní uložení je třeba realizovat softwarově.

150 Minimální čas potřebný k odezvě na žádost o přerušení jsou 4 hodinové cykly, kdy se ukládá obsah programového čítače (PC) do zásobníku a nuluje se maska přerušení tj. I = L. Návrat z obsluhy přerušení (RETI) trvá 4 hodinové cykly, kdy se obnovuje hodnota PC ze zásobníku a nastavuje se I = H. Běh programu pokračuje pak od dané adresy.

151 Poznámka. Vektor přerušení je většinou realizován relativním skokem RJMP na podprogram obsluhy. RJMP je ale instrukce 2cyklová a pokud byla žádost o přerušení realizována v době zpracování vícecyklové instrukce, pak se tato instrukce musí nejprve dokončit a poté realizovat obsluhu přerušení, což znamená větší časový prostoj.

152 Vektory přerušení základní řady Č. 1200231323434433 85158535Popis 1000 RESET – inicializace systému 2001 INT0 – vnější přerušení 0 3-002- INT1 – vnější přerušení 1 4-----003 TIMER2COMP – shoda čítače 2 s OCR2 5-----004 TIMER2OVF – přetečení čítače/časovače 2 6-003- 005 TIMER1 CAPT – zachycení obsahu čítače 1 7----004006 TIMER1 COMPA – shoda čítače 1 s OCR1A 8----005007 TIMER1 COMPB – shoda čítače 1 s OCR1B 9-004- -- TIMER1 COMP 10-005- 006008 TIMER1 OVF – přetečení čítače/časovače 1 11002006002006007009 TIMER0 OVF – přetečení čítače/časovače 0 12---00700800A SPI, STC – sériový přenos je dokončen 13-007-00800900B UART,RX – příjem telegramu je dokončen 14-008-00900A00C UART,URDE – prázdný registr dat UARTu 15-009-00A00B00D UART,TX – vysílání telegramu je dokončeno 16---00B00C00E ADC – ADC převod je dokončen 17---00C-00F EE_RDY – paměť EEPROM je připravena 1800300A-00D-010 ANA_COMP – analogový komparátor

153 Vnější přerušení INT0 a INT1 Vnější přerušení se realizuje pomocí vstupů INT0 a INT1, které reagují i v případě, že jsou tyto vývody nakonfigurovány jako výstupy. Z toho vyplývá, že takto lze generovat softwarové přerušení, které lze navíc spouštět :  buď náběžnou nebo spádovou hranou podle nastavení (registr MCUCR),  maskovat vnější přerušení (registr GIMSK),  zaznamenat požadavek aktivace přerušení (registr GIFR).

154 Registr MCUCR MCUCR (Microcontroler Unit Control Register) obsahuje řídící bity pro funkce procesoru. bit MCUCR 76543210 SRESEWSESMISC11ISC10ISC01ISC00 ISC11, ISC10 - Ovládají vstup INT1 ISC01, ICS00 - Ovládají vstup INT0

155 Citlivost vstupu INT0 (INT1) ISC01 (ISC11) ISC00 (ISC10) Popis 00Vstup INT0 (INT1) se aktivuje úrovní L 01nepoužívat 10Vstup INT0 (INT1) reaguje na spádovou hranu signálu 11Vstup INT0 (INT1) reaguje na náběžnou hranu signálu Při nastavení úrovňového vstupu vnějšího přerušení musí úroveň L trvat do dokončení právě prováděné instrukce (max. 4 hodinové cykly). Úrovňový vstup generuje přerušení do té doby, dokud je na vývodu úroveň L. Při nastavení vnějšího přerušení na hranu signálu, pak impuls musí trvat minimálně 1 hodinový cyklus!

156 Registr GIMSK bit GIMSK 76543210 INT1INT0 INT1 - Povoluje či zakazuje aktivaci přerušení vnějším vstupem INT1 INT0 - Povoluje či zakazuje aktivaci přerušení vnějším vstupem INT0 Procesory AT90S1200 a AT90S2343 nemají vývod INT1.

157 Registr GIFR Pomocí tohoto registru se zaznamenávají požadavky vnějšího přerušení na obsluhu v případech, kdy je přerušení zakázáno odstavením masky (GIMSK), nebo globálním zákazem přerušení (I = L). bit GIFR 76543210 INTF1INTF0 INTF1 - Zaznamenává se požadavek přerušení vnějším vstupem INT1. INTF0 - Zaznamenává se požadavek přerušení vnějším vstupem INT0. Je-li požadavek úrovňový, pak se aktivace přerušení nezaznamenává.

158 Přerušení od čítačů/časovačů Masky přerušení jsou v registru TIMSK, příznaky přerušení pak v registru TIFR. Všechny příznaky jsou hardwarově nulovány s počátkem programu obsluhy přerušení. Nulovat je lze i nastavením příznaku na úroveň H. Přerušení od čítače/časovače 0 má 1 vektor přerušení a to při přetečení (TOV0).

159 Přerušení odvozované od čítače/časovače 1 má 3 přerušovací vektory :  vektor přetečení (TOV1),  vektor shody obsahu čítače/časovače 1 s obsahem komparačního registru (OCF1A, OCF1),  vektor zachycení obsahu čítače v záchytném registru (ICF1). Přerušení od čítače/časovače 2 má 2 přerušovací vektory:  vektor přetečení (TOV2),  vektor shody obsahu čítače/časovače 2 s obsahem komparačního registru (OCF2).

160 Řídící registr TIMSK Procesor\bit 76543210 AT90S1200 TIMSK ------ TOIE0 - AT90S2313 TIMSKTOIE1OCIE1A -- TICIE1 - TOIE0 - AT90S2343 TIMSK ------ TOIE0 - AT90S4433 TIMSKTOIE1OCIE1 -- TICIE1 - TOIE0 - AT90S8515 TIMSKTOIE1OCIE1AOCIE1B - TICIE1 - TOIE0 - AT90S8535 TIMSKOCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1 - TOIE0

161 - Povolení přerušení od čítače/časovače 0 TOIE1 - Povolení přerušení od čítače/časovače 1 TOIE2 - Povolení přerušení od čítače/časovače 2 OCIE1A, OCIE1 - Povolení přerušení při shodě obsahu TCNT1H S OCR1AH současně TCNTL1 s OCR1AL (OCR1H, OCR1L) OCIE1B - Povolení přerušení při shodě obsahu TCNT1H, TCNT1L S OCR1BH, OCR1BL. OCIE2 - Povolení přerušení při shodě obsahu TCNT2 s OCR2 TICIE1 - Povolení přerušení při zápisu hodnoty TCNT1 do ICR1H a TCNT1L do ICR1L.

162 Registr TIFR Procesor \bit 76543210 AT90S1200TIFR ------ TOV0 - AT90S2313TIFRTOV1OCF1A -- ICF1 - TOV0 - AT90S2343TIFR ------ TOV0 - AT90S4433TIFRTOV1OCF1 -- ICF1 - TOV0 - AT90S8515TIFRTOV1OCF1AOCF1B - ICF1 - TOV0 - AT90S8535TIFROCF2TOV2 ICF1 OCF1AOCF1BTOV1 - TOV0 - Příznak přetečení od čítače/časovače 0 TOV1 - Příznak přetečení od čítače/časovače 1. V módu PWM při průchodu nulou (kdy se mění směr čítání) se nastavuje TOV1 = H. TOV2 - Příznak přetečení od čítače/časovače 2. V módu PWM při průchodu nulou (kdy se mění směr čítání) se nastavuje TOV1 = H. OCF1A, (OCF1) - OCF1A = H při současné shodě obsahu registrů TCNT1H s OCR1AH a TCNT1L s OCR1AL (OCR1H, OCR1L) OCF1B - OCF1B = H při současné shodě obsahu registrů TCNT1H s OCR1BH a TCNT1L s OCR1BL OCF2 - OCF2 = H při shodě obsahu TCNT2 s OCR2 ICF1 - ICF1 = H při zápisu hodnoty TCNT1 do ICR1H a TCNT2 do ICR1L.

163 Přerušení od UART - Registr USR bit USR 76543210 RXCTXCUDREFEOR --- RXC - RXC = H, je-li přenesen znak z přijímacího registru do registru UDR. Je-li v registru UCT nastaven příznak RXCIE = H, pak se po příjmu znaku vyvolá přerušení. Bit RXC se nuluje po čtení registru UDR. Pokud nedojde ke čtení, generuje se přerušení po jeho obsluze znovu. TXC - TXC = H po vyslání stop bitu a oznamuje, že lze vložit další data. Je-li TXCIE = H a dojde k nastavení TXC = H, vyvolá se přerušení. TXC je nulováno hardwarově vykonáním obslužného programu. UDRE - V okamžiku přenesení dat do vysílacího registru je UDRE = H a oznamuje možnost zápisu dalších dat do vysílače. Je-li UDRIE = H, pak UDRE = H vyvolá přerušení. Obslužný program přerušení musí provést zápis do UDR. Pokud tomu tak není, dojde k opětné aktivaci obslužného programu.

164 Registr UCR bit UCR 76543210 RXCIETXCIEUDRIERXENTXENCHR9RXB8TXB8 Obr. 2.80 Registr UCR Obr. 2.80 Registr UCR UDRIEPovolení přerušení při vyprázdnění datového registru. -

165 Přerušení od SPI - registr SPCR bit SPCR 76543210 SPIESPEDORDMSTRCPOLCPHASPR1SPR0 SPIE - Je-li SPIE = H a I = H je povoleno přerušení od SPI kanálu.

166 Přerušení od analogového komparátoru - registr ACSR bit ACSR 76543210 ACD - ACOACIACIEACICACIS1ACIS0 ACI - ACI=H se nastavuje v případě, že výstup komparátoru generuje přerušení definované bity ACI0 a ACI1. Pokud je ACIE = H a I = H, pak se provede obslužný podprogram Analog Comparator. Pokud se provede odpovídající vektor přerušení, je ACI hardwarově vynulován, jinak se musí vynulovat zapsáním H do příznaku. ACIE - Přerušení analogového komparátoru je aktivováno je-li ACIE = H a I = H. ACIS1, ACIS0 - Těmito bity se nastavuje mód přerušení.

167 Přerušení od A/D převodníku - registr ADCSR bit ADCSR 76543210 ADENADSCADFRADIFADIEADPS2ADPS1ADPS0 ADIE - Jestliže ADIE = H a I = H, je na konci převodu aktivováno přerušení.

168 Přerušení od paměti EEPROM - registr EECR Procesor\bit 76543210 AT90S1200 EECR ------ EEWEEERE AT90S2313 EECR - ---- EEMWEEEWEEERE AT90S2343 EECR ----- EEMWEEEWEEERE AT90S4433 EECR ---- ERIEEEMWEEEWEEERE AT90S8515 EECR ----- EEMWEEEWEEERE AT90S8535 EECR ---- ERIEEEMWEEEWEEERE ERIE - Pokud jsou bity EERIE = H a I = H je přerušení povoleno. To se generuje v okamžiku, kdy EEPROM je připravena na zápis dalšího bajtu.

169 Režim sníženého příkonu Režim sníženého příkonu lze realizovat podle typu procesoru ve 2 až 3 módech a to :  Idle, což je režim nečinnosti,  Power-down, což je režim sníženého napájecího napětí,  Power Save, což je režim snížené spotřeby.

170 Režimy sníženého příkonu Procesorbit 76543210 AT90S1200 -- SESM -- ISC01ISC00 AT90S2313 -- SESMISC11ISC10ISC01ISC00 AT90S2343 -- SESM -- ISC01ISC00 AT90S4433 -- SESMISC11ISC10ISC01ISC00 AT90S8515SRESEWSESMISC11ISC10ISC01ISC00 AT90S8535 - SESM1SM0ISC11ISC10ISC01ISC00 Proto, aby se přešlo do režimu sníženého příkonu je nezbytné nastavit SE = H (MCUCR) a poté realizovat instrukci SLEEP. Režim se nastavuje bity SM nebo SM1 a SM0. Proto, aby se přešlo do režimu sníženého příkonu je nezbytné nastavit SE = H (MCUCR) a poté realizovat instrukci SLEEP. Režim se nastavuje bity SM nebo SM1 a SM0. SM1SM0Režim 00Idle 01Nepoužívat 10Power-down 11Power Save

171 Proto, aby se přešlo do režimu sníženého příkonu je nezbytné nastavit SE = H (MCUCR) a poté realizovat instrukci SLEEP. Režim se nastavuje bity SM nebo SM1 a SM0. Pokud je povoleno přerušení, pak se tímto přerušením aktivuje procesor. A to tak, že nejprve provede obsluhu přerušení a poté pokračuje instrukcí za instrukcí SLEEP. V případě nulování předá procesor řízení na vektor $0000.

172 Mód Idle V tomto módu se jádro procesoru zastaví, ale aktivní zůstávají čítač/časovač, kanál SPI, UART, A/D převodník, analogový komparátor, přerušovací systém a Watchdog. Po aktivaci se procesor přepíná do normálního režimu.

173 Mód Power-down V tomto módu je zastaven čítač/časovač, vnější oscilátor, kanál SPI, UART, A/D převodník, analogový komparátor. Aktivní zůstávají jen přerušovací systém a Watchdog. Po přechodu do režimu sníženého režimu lze ještě snížit napájecí napětí až na 2,7V a tak dále snížit odběr. K aktivaci procesoru může dojít jen vnějším nulováním a přerušením jen úrovňovými vstupy INT0 a INT1. Protože nepracuje vnější oscilátor, musí být vnější přerušení INT0 a INT1 nastaveno jako úrovňové. Poté se procesor přepne do normálního režimu.

174 Mód Power Save Je to mód obdobný režimu Power-down, až na to, že pokud pracuje čítač/časovač 2 asynchronně (je tak nastaven), pak zůstává v činnosti i v režimu sníženého příkonu a je to vlastně jediný aktivní čítač/časovač. Aktivuje se stejně jako Power-down a navíc i čítačem/časovačem 2.

175 Inicializace Obvod RESETu má 3 zdroje přerušení :  automatické nulování po připojení napájení POR (Power-on Reset),  externí nulování vývodem RESET na který je připojen signál s úrovní L po dobu delší 50ns,  Watchdog reset, který je aktivován po vypršení doby obvodu Watchdog. Při nulování jsou všechny I/O registry nastaveny na jejich počáteční hodnoty (ne vždy 00H) podobně jako u procesorů řady 8051 a program začíná adresou $0000.

176 Provedení obvodu RESET

177 Registr MCUSR Stavový registr nulování MCUSR podává informace o zdroji nulování bit MCUSR 76543210 ------ EXTRFPORF EXTRF - External Reset Flag. Po automatickém nulování není hodnota definována. Do H se nastavuje externím nulováním. Watchdog tento příznak nemění. PORF - Power-on Flag. Do H se nastavuje automatickým nulováním po připojení napájení. Watchdog tento bit nemění

178 A/D převodník A/D převodník obsahují jen některé typy procesorů (například AT90S8535, podle kterého bude další popis). Je realizován tak, že má na vstupu analogový multiplexor, na který je připojen vlastní 10bitový A/D převodník pracující metodou postupné aproximace. Má zaručenou nelinearitu ±0,5 LSB a absolutní přesnost ± 2 bity při maximální rychlosti 15.000 převodů za sekundu. Převodník získává požadovanou frekvenci vydělením hodinové frekvence vlastní děličkou frekvence. Řídící frekvence se musí pohybovat v rozmezí 50 kHz do 200 kHz. Z toho pak vyplývá doba převodu v závislosti na frekvenci od 260 μs do 65 μs. Při snížené přesnosti lze zvýšit řídící frekvenci až na 2 MHz. Navíc obsahuje obvod pro potlačování šumu. Výsledná hodnota převodu 0000H odpovídá AGND a hodnota 3FF pak A ref – 1 LSB.

179 Převodník pracuje ve dvou módech :  s jedním převodem, kdy je každý převod inicializován uživatelem,  volně běžící, kdy je převodník pravidelně vzorkován a obnovuje data v ADC datovém registru. Výsledek je uložen v datovém registru a to ADCH a ADCL. Čtení musí začít registrem ADCL a ukončit registrem ADCH. To proto, aby se zajistilo přečtení dat patřících ke stejnému převodu. Při čtení ADCL je totiž blokován registr ADCH proti zápisu. Jinak by mohlo dojít k jeho přepsání novou hodnotou a výsledek by byl ztracen. V okamžiku přečtení i ADCH je přístup k registru ADC (ADCL, ADCH) obnoven.

180 A/D převodník obsahuje vzorkovací obvod (obvod S/H – Sample/Hold) spojený se zesilovačem. Zesilovač udržuje vstupní napětí po dobu převodu na dostatečně stabilní úrovni. Převodník kvůli možnému rušení má oddělené napájecí napětí AUcc a zvláštní analogovou zem AGND. Analogová zem AGND smí být spojena se zemí procesoru v jediném bodě (kvůli rušení a offsetu vstupního napětí). Napětí na AUcc nesmí mít odlišnou hodnotu od napájecího napětí procesoru o více než ±0,3V (Ucc ±0,3V).

181 A/D převodník

182 Registr ADCSR bit ADCSR 76543210 ADENADSCADFRADIFADIEADPS2ADPS1ADPS0 ADEN - Je-li ADEN = H, zapíná převodník spuštěním předřazené děličky. Vypnutím A/D převodníku se předčasně ukončí převod. ADSC - Nastavením ADSC = H se spustí s následnou náběžnou hranou převod módu volného běhu. V módu jednoduchého převodu je nezbytné vždy každý převod aktivovat. První nastavení bitu ADSC = H po zapnutí převodníku způsobí provedení rozšířeného převodu, který nastaví inicializaci. Po dokončení převodu je bit hardwarově vynulován. Programové nulování nemá vliv na průběh právě probíhajícího převodu. ADFR - ADFR = L je nastaven mód jednoduchého běhu, ADFR = H je nastaven mód volného běhu ADIF - ADIF = H se nastaví při dokončení převodu a zápisu do ADCH:ADCL. Jestliže ADIE = H a I = H, provede se podprogram přerušení odpovídající ukončení převodu. Nastavení ADIF = L se provede hardwarově po aktivaci podprogramu obsluhy přerušení. Nastavení ADIF lze provést i programově. ADIE - Jestliže ADIE = H a I = H, je na konci převodu aktivováno přerušení. ADPS2, ADPS1, ADPS0 - Provádí volbu pracovní hodinové frekvence pro převodník.

183 Předřazená dělička ADC ADPS2ADPS1ADPS0Dělící poměr Pro f osc = 8 MHz [kHz] 00024.000 0012 01042.000 01181.000 10016500 10132250 11064125 1 1 112862,5

184 Schéma předřazené děličky

185 Registr ADMUX bit ADMUX 76543210 ----- MUX2MUX1MUX0 MUX2 - Těmito bity se vybírá připojení analogového vstupu na převodník. Při změně MUX1 adresy se tato změna neprojeví dokud není dokončen převod! MUX0

186 Řízení připojení vstupů k ADC MUX2MUX1MUX0Připojený vstup 000ADC0 001ADC1 010ADC2 011ADC3 100ADC4 101ADC5 110ADC6 111ADC7 Upozornění! Je třeba zachovat posloupnost čtení obou registrů v pořadí ADCL a ADCH.

187 Ochrana analogových vstupů procesoru Vstupy procesoru jsou chráněny diodami, které nejsou výkonové. Proto rezistor Ro zabraňuje poškození vstupu v případě, že vstupní napětí je větší než AUcc, nebo nižší než AGND. Kondenzátor C F pak potlačuje vysokofrekvenční rušení.

188 ADC časový diagram, rozšířený převod (mód s jedním převodem)

189 ADC časový diagram, jediný převod

190 Časový diagram, volně běžící ADC

191 Potlačovač šumu Procesor mimo vlastního obvodu A/D převodníku obsahuje potlačovač šumu, který umožňuje provádět převodování i během režimu sníženého příkonu (mód Idle). To proto, že rušení vlastním procesorem bude sníženo na nejnižší možnou míru. Pro činnost funkce potlačovače šumu je třeba dodržet následující podmínky :  Zajistit zapnutí A/D převodníku, navolit jednoduchý mód převodu, povolit přerušení při dokončení převodu a to nastavením : ADEN = H, ADSC = L, ADFR = L a ADIE = L.

192  Zapnout mód Idle. Po jeho aktivaci začne převodník pracovat.  Pokud nedojde k jinému přerušení před ukončením převodu, pak obslužný program od převodníku způsobí ukončení módu Idle (aktivuje jádro) a lze sejmout převedenou hodnotu z registrů ADCH:ADCL.

193 Technika snížení šumu Protože uvnitř procesoru vzniká při strmých hranách pulsů elektromagnetické rušení, které má vliv na přesnost převodníku, pak se musí použít dále uvedená technika pro snížení šumu:  Je třeba, aby analogová část byla oddělena od části digitální. To je oddělena analogová zem, která může být spojena se zemí digitální jen v jediném bodě.  Vodiče analogových signálů musí být jednak co nejkratší a jednak co nejvíce vzdáleny od digitálních signálů.  Napájecí napětí je vhodné připojit přes LC člen, kde se doporučuje L = 10μH a kapacita C ≥M1.

194  Použít potlačovač šumu.  Pokud musí být některé vývody brány A (u procesoru AT90S8535) jako číslicové, pak je třeba, aby se v průběhu převodu jejich stav neměnil.

195 Programování procesorů AVR Procesory AVR firmy Atmel obsahují speciální funkce pro ochranu, programování a značení. Jsou to funkce :  paměťové zámky,  propojky,  signatura.

196 Paměťové zámky Procesory AVR mají 2 paměťové zámky pro paměť programu (Flash) a paměť EEPROM. Nejdůležitější z nich je třetí ochrana bránící kopírování pracně vyvinutého programu. Aktivní jsou v tomto případu nuly. Je to vlastně obdoba ochranného bitu u procesorů 8751. LB1LB2Funkce 11Ochrana není aktivní 01Zákaz programování pamětí, ověřování je povoleno 00Zákaz programování pamětí, ověřování je zakázáno

197 Propojky ProcesorSPIENFSTRTRCENBODLEVELBODENCKSEL2.0 AT90S1200 +-+--- AT90S2313 ++---- AT90S2343 +-+--- AT90S4433 +--+++ AT90S8515 ++---- AT90S8535 ++---- SPIEN - Je-li nastaveno SPIEN = H, zakazuje se sériové naprogramování. FSTRT - Nastavuje rozběh procesoru. Je-li FSTRT = H je rozběh pomalý, v opačném případě je rozběh zrychlený. RCEN - Provádí volbu oscilátoru. Je-li RCEN = L, používá se zabudovaný oscilátor, v opačném případě pak vnější krystalový oscilátor. BODLE VEL - Slouží pro výběr úrovně detektoru výpadku napájení. BODEN - Ovládá se jím detektor výpadku napájení.. Je-li BODEN = H, není detektor aktivní. CKSEL 2..0 - Pomocí 3 bitů se provádí nastavení zpoždění mezi nulováním a praktickým rozběhem oscilátoru, protože tento může být při rozběhu nestabilní.

198 Je však nutno říci, že propojky lze naprogramovat jen pomocí paralelního programátoru. Navíc ne všechny procesory mají všechny propojky.

199 Signatura Výrobce podle 3 bytů indikuje procesor následovně : první byte má hodnotu $1E, což je označení firmy Atmel, druhý byte určuje velikost paměti Flash, třetí byte procesor. Procesor$0000$0001$0002 AT90S1200$1E$90$01 AT90S2313$1E$91$01 AT90S2343$1E$91$03 AT90S4433$1E$92$03 AT90S8515$1E$93$01 AT90S8535$1E$93$03

200 Paralelní programování Paralelní programování je komplikované, ale lze s ním naprogramovat řadu věcí, například propojky, což jinak nejde. Problém je v tom, že se procesor musí naprogramovat v přípravku a následně vložit buď do patice nebo zapájet na desku. Proto je celá aplikace poměrně složitá. Podrobný popis postupu lze získat na www.atmel.com a popis procesorů (například AT90S8515) pak pod názvem „8-bit AVR Microcontroller with 8 Kbyte In-Systém Programmable Flash.www.atmel.com

201 Zapojení pro paralelní programování procesoru AVR

202 Sériové programování Sériové programování procesorů AVR řady AT90 přímo v aplikaci je novější metoda, která jednak nevyžaduje demontáž součástky z desky a jednak lze funkci zařízení postupně inovovat tzv. „za chodu“. Při návrhu desky je potřeba počítat s touto možností a provést několik jednoduchých úprav v návrhu. Jak bylo již dříve řečeno, má rozhraní SPI vývody :  SCK, což jsou hodinové pulsy systému,  MOSI, což je sériový vstup,  MISO, což je sériový výstup.

203 Podmínkou programování za použití této sběrnice je, že RESET = L. Poté musí procesor dostat instrukci Povolení programování (Programming Enable Instruction). Jako další sekvence je Smazání obsahu čipu (Chip Erase), kterým se nastaví veškeré programové a datové paměti do stavu $FF. Navíc se paměť EEPROM nemusí před zápisem mazat, protože má vlastní mazací cyklus. Při programování musí být v činnosti buď připojený krystal, nebo zdroj vnějšího kmitočtu na vývodu XTAL1.

204 Sériové programování procesoru AVR

205 Pro programování a ověřování sériového naprogramování se doporučuje následující postup : 1.Připojit napájení, nastavit RESET = L a SCK = L. 2.Časovat minimálně 20 ms a následovně vyslat instrukci Povolení programování na vývod MOSI (PB5). 3.Aby sériové programování pracovalo, musí být komunikace synchronní. Je-li synchronní, pak bude druhý byte Povolení programování v průběhu zápisu 3 bytu vrácen zpět (echo). Pokud tomu tak není, je možno přidat jeden puls SCK a znovu vyslat instrukci Povolení programování. Pokud se nepodaří získat echo ani na 32 pokus, je obvod vadný!

206 4.Pokud je realizována instrukce Smazání čipu, pak se musí vyčkat po dobu t WD-ERASE, než se může pokračovat dále. 5.Paměti Flash i EEPROM se programují byte po bytu instrukcí Zápis (Write), která obsahuje data včetně jejich adresy. Jak bylo již výše zmíněno, je paměťové místo v paměti EEPROM před zápisem nových dat nejdříve automaticky smazáno. Pro detekci bezvadného zápisu do paměti Flash nebo EEPROM lze použít tzv. datový pooling. 6.Každé místo v paměti lze ověřit zpětným čtením za použití instrukce Čtení (Read). 7.Po naprogramování je třeba nastavit RESET = H. 8.Po programování je možné již vypnout napájení.

207 Instrukční soubor sériového programování Formát instrukce Instrukcebyte 1byte 2byte 3byte 4Popis Povolení programování1010110001010011xxxxxxxx Aktivuje programovací rozhraní Smazání čipu10101100100xxxxxxxxxxxxx Smaže paměti Flash a EEPROM Čtení paměti programu0010H000xxxxaaaabbbbbbbb00000000Čtení H dat o z paměti Flash z adresy a:b Zápis paměti programu0100H000xxxxaaaabbbbbbbbiiiiiiiiZápis H dat i do paměti Flash z adresy a:b Čtení paměti EEPROM10100000xxxxxxxabbbbbbbb00000000Čtení dat o z paměti EEPROM z adresy a:b Zápis paměti EEPROM11000000xxxxxxxabbbbbbbbiiiiiiiiZápis dat i do paměti EEPROM z adresy a:b Zápis zámku10101100111xx21xxxxxxxxx Zápis zamykacích bitů. Nastavení bitů 1, 2 = L. Čtení signatury00110000xxxxxxxxxxxxxxbb00000000Čtení signatury obvodu

208 a - Vyšší řády adresy i -Vstupní data (vývod MOSI) b - Nižšší řády adresy x - libovolné H - H = 0 – nižší byte, H = 1 vyšší byte 1 - Zámkový bit 1 o - Výstupní data (vývod MISO) 2 - Zámkový bit 2

209 Sériové programovací pulsy

210 Časování sériového programování


Stáhnout ppt "Řady mikrokontrolérů AVR. Firma Atmel vyrábí mikrokontroléry (dále jen procesory) ve 3 řadách a to :  Základní, která je charakteristická tím, že má."

Podobné prezentace


Reklamy Google