Blokové schéma mikro kontrolérů ATMEGA, paměťové oblasti dat Flashcards
Jaké může mít pouzdro.
QFN64
LQFP100
SO20
DIP28
Mikrokontrolér ATMEGA
AVR procesory jsou RISC procesory postavené na Harvardské architektuře (mají oddělenou paměť pro program a data)
RISC - Reduced Instruction Set Computer (procesory s redukovaným souborem instrukcí), (elementární operace procesoru, např.: čtení z paměti, zápis do paměti, podmíněný skok, načtení adresy, odčítání, volání podprogramu, bitový posun vlevo, vložení znaku)
Hlavní vlastností RISC procesorů:
redukovaná sada instrukcí (malý instrukční soubor)
v každém strojovém cyklu by měla být dokončena jedna instrukce (pozor, to neznamená, že její vykonání trvalo jeden stroj. cyklus)
délka (počet bitů) všech instrukcí je stejná
mikroinstrukce jsou hardwarově implementovány na procesoru
využívá se zde techniky řetězení instrukcí
Větší množství registrů
Skládají se ze 32 stejných 8bitových registrů, které mohou obsahovat jak data, tak i adresy.
Přístup do registrového pole je možný vjednom strojním cyklu. To znamená, že lze v jednom strojním cyklu vykonat jednu aritmeticko-logickou operaci.
Oba operandy (zdrojová nebo cílová data) jsou načteny, operace provedena a výsledek zapsán zpět do registrového pole. To vše vjednom strojním cyklu.
CISC
vstupem jsou strojové instrukce a data z paměti
z výstupu se data ukládají zpět do paměti
každá instrukce tedy musí projít celým obvodem a dokud se neuloží výsledky, nelze začít provádět instrukci následující.
budeme potřebovat pro vykonání jedné instrukce 6 cyklů
RISC
Zřetězené zpracování
Nástrahy
hazardy datové i strukturální
Datové hazardy, když některá rozpracovaná instrukce potřebuje mít k dispozici data předchozí instrukce, a ta ještě nejsou k dispozici.
Strukturální hazardy můžeme charakterizovat zjednodušeně jako problém omezených prostředků procesoru (jedna sběrnice)
problémy s plněním fronty instrukcí.
reakce na skokové instrukce
• Tato technika dává procesorům AVR velký výpočetní výkon proti například procesorům řady 8051, které pro některé instrukce potřebují 32 až 40 strojních cyklů.
Programové a datové paměti
32 kB paměti typu Flash pro program
1024 B datové paměti EEPROM pro ukládání dat
2 kB statické paměti RAM pro registry, oblast I/O a data
JTAG rozhraní, použitelné pro
Programování Flash, EEPROM, Fuses a Lock Bits
Ladění (debugging) programu
Boundary Scan – technika dovolující sledování a nastavení úrovní na I/O bez přídavných periferií pouze za podpory vývojového prostředí
Periferie:
Dva 8-bitové čítače/časovače
Jeden 16-bitový čítač/časovač
Hodiny reálného času se samostatným oscilátorem
Čtyři PWM výstupní kanály
8-kanálový, 10-bitový A/D převodník
TWI (2-vodičová sériová sběrnice)
SPI sběrnice (Serial Peripheral Interface)
Sériová komunikace typu USART
Programovatelný Watchdog časovač se samostatným oscilátorem na čipu
Analogový komparátor
32 programovatelných I/O linek
Fuses, česky by se dalo říct pojistky, slouží k základnímu nastavení Atmelu. Řídí se s nimi zdroj hodin a základní “životní” funkce čipu. Také si jejich špatným nastavením můžete Atmel zablokovat.
Tři fuses byty: “Low byte”, “High byte”, “Extended byte”
Flash
32 kB v systému reprogramovatelnou Flash paměť
Pro uložení programu
instrukce jsou 16 nebo 32bitové a kvůli tomu je organizace paměti 16kB x 16bitů minimálně 10 000x reprogramovatelná
Program Counter (PC, programový čítač , čítač instrukcí) speciální registr, jehož účelem je adresovat instrukce strojového kódu v operační paměti. Jeho velikost 14 bitů
ATmega32 k adresaci 16 KB adres paměti programu potřebuje 14 bitů
SRAM
tvořena statickými buňkami (Static RAM)
obsahuje pole 32 obecně použitelných registrů (R0 – R31)
obsahuje pole 64 vstupně/výstupních registrů pro řízení periferií a blok volně použitelné paměti (2kB)
EEPROM
(Electrically Eraseable Programable ROM)
i po vypnutí napájení si uchová svá data mnoho let (používá se tedy pro uchování určitých dat, např. nastavení předvolených stanic autorádia, konfiguračních parametrů různých přístrojů apod.)
Zápis do této paměti je časově podstatně delší než zápis do SRAM (asi 8,5 ms/1 byte), pro přístup k této paměti se používají speciální registry mikrokontroleru. Počet přeprogramování je min. 100 000 x.
Registry
Registry jsou nejmenší a nejrychlejší paměti, které na čipu najdeme. Jejich funkce je velice důležitá, protože pomocí některých z nich probíhá řízení celého čipu a jeho periferií. Patří mezi ně následující registry:
status and control – pomocí kterých probíhá řízení čipu a jeho periferií a získávání zpětné vazby z nich. Mohou to být například registry na řízení časovačů, uspávání čipu a další.
I/O registry – slouží k řízení vstupně-výstupních operací. Ovládání digitálních pinů.
program counter – uchovává adresu instrukce programu, která má být provedena. Je to tedy jakési ukazovátko do paměti Flash, které říká, jaká část programu se zrovna provádí.
instruction register – je do něj nahrána instrukce z paměti Flash s adresou, která je aktuálně uložena v program counter registru.
GPR – general purpose registers
Ukazatele (Pointry)
k nepřímému adresování paměti 3 ukazatele (X, Y, Z)
Nepřímé adresování
Při nepřímém adresování je do ukazatele vložena 16bitová adresa paměťové buňky, se kterou chceme pracovat.
Při blokovém zpracování dat (přesun bloku dat, prohledávání bloku dat, …) se do ukazatele vloží počáteční adresa bloku, po provedení patřičné instrukce se pouze inkrementuje (zvýší o 1) nebo dekrementuje (sníží o 1) obsah ukazatele a tím pracujeme s následující buňkou paměti.
Tuto inkrementaci či dekrementaci obsahují některé speciální instrukce a provádějí ji automaticky před (predekrement) přístupem do paměti nebo po (postinkrement) přístupu do paměti v rámci zpracování přesunu a není tedy potřebná další instrukce pro modifikaci obsahu ukazatele, čímž se značně urychlí běh programu.
Vstupně/výstupní registry (I/O Memory)
Tyto registry jsou uloženy v datové paměti mikrokontroleru od adresy $0020 až $005F (64 buněk). Slouží k řízení zabudovaných periferií a jádra mikrokontroleru (čítačů/časovačů, přerušovacího systému, komunikačních rozhraní SPI, TWI, USART, EEPROM, A/D převodníku, obsahují též stavový registr a registr SP…)
Stavový registr (SREG)
Tento registr je umístěn v I/O oblasti
jednotlivé bity je možné číst i měnit buď přímo, nebo lze použít speciální instrukce typu set/reset bit
je osmibitový
Zapojení pouzdra DIP 40
Všechny 8 bitové I/O porty (PA až PD) jsou obousměrné, umožňují připojit vnitřní zvyšující (Pull Up) rezistory.
Maximální výstupní proud jednotlivých pinů je 40 mA, což umožňuje přímé připojení LED, celkový odebíraný proud z I/O portů nesmí překročit 400 mA, podrobnější informace jsou uvedeny v katalogovém listu (datasheet)
Většina pinů portů má alternativní použití pro speciální periferie. Pokud se tyto piny použijí, nemohou se dále použít jako obecné I/O. Význam alternativního použití je popsán stručně v tabulce.
AD převodník – multiplexor - analogové vstupy označené (A0 – A5)
analogový vstup umožňuje 10 bitový, 6 kanálový AD převodník, který je součástí mikrokontroleru Arduina.
dokáže převádět napětí v rozsahu 0 až 5 V na digitální číslo (typ: unsigned int)
napětí na analogovém pinu můžeme dostat pomocí vzorce, kde x je hodnota, kterou získáme příkazem
Aritmeticko-logická jednotka
Tuto jednotku na obrázku najdeme pod zkratkou ALU (arithmetic logic unit). Stará se o matematické operace (+, -, …), bitové operace, umí počítat jednotkové a dvojkové komplementy a další.
Když se podíváme do blokového schématu čipu, zjistíme, že jako vstupy ALU používáme GPR registry • příklad se součtem dvou hodnot v registru: add R1 R2.
Dekodér instrukcí
V obrázku instruction decoder. Je speciální kus hardwaru, který se stará o to, aby byly v procesoru zapojené všechny komponenty, které jsou potřebné pro provedení aktuální instrukce. Funguje tak, že se podívá do instruction register, kde najde instrukci, která se má provést, a podle toho aktivuje patřičné řídicí signály v procesoru.