ATmega328


ATmega328 je jednočipový mikrořadič z rodiny megaAVR navržený firmou Atmel.
Specifikace
[editovat | editovat zdroj]Atmel je 8bitový mikrořadič založený na architektuře AVR RISC, který integruje 32 kiB ISP flash paměti s podporou read-while-write, 1 kiB EEPROM, 2 kiB SRAM, 23 univerzálních vstupně-výstupních vývodů, 32 univerzálních registrů, tři flexibilní čítače/časovače s porovnávacími režimy, vnitřní a vnější přerušení, programovatelný sériový obvod USART, bajtově orientované 2vodičové sériové rozhraní, sériový port SPI, 6kanálový 10bitový A/D převodník (ve verzích TQFP a QFN/MLF 8kanálový), programovatelný watchdog timer s interním oscilátorem, a pět programovatelných režimů pro úsporu energie. Napájecí napětí může být v rozsahu 1,8 až 5,5 voltů. Výkon procesoru odpovídá 1 MIPS (ze anglického Millions Instructions Per Second) při frekvenci 1MHz, což znamená provedení jedné instrukce každou periodu řídícího signálu procesoru.[1]
Klíčové parametry
[editovat | editovat zdroj]| Parameter | Value |
|---|---|
| Typ CPU | 8-bit AVR |
| Výkon | 20 MIPS při 20 MHz[2] |
| Paměť flash | 32 kB |
| SRAM | 2 kB |
| EEPROM | 1 kB |
| Počet vývodů | 28 u verze PDIP, 32 u verze TQFP; QFN/MLF má variantu s 28 i 32 vývody |
| Maximální frekvence |
20 MHz |
| Počet touch channels | 16 |
| Hardware QTouch Acquisition | Ne |
| Maximální počet vstupně-výstupních vývodů | 23 |
| Počet externích přerušení | 2 |
| Rozhraní USB | Ne |
Náhrady
[editovat | editovat zdroj]Možnou náhradou za ATmega328 je „picoPower“ ATmega328P. Úplný seznam ostatních členů řady megaAVR lze nalézt na webových stránkách Atmel.[3]
Použití
[editovat | editovat zdroj]Od roku 2013 se ATmega328 běžně používá v mnoha projektech a autonomních systémech, které vyžadují jednoduché, úsporné a levné mikrořadiče[zdroj?]. K nejrozšířenějším využitím obvodu patří zařízení jednoúčelové průmyslové automatizace, jednoúčelová zařízení (battery management, meteorologické stanice, měřicí zařízení) apod. Velké popularity dosáhl vývojový kit Arduino Uno.
Spolehlivost
[editovat | editovat zdroj]Testy spolehlivosti ukazují, že očekávaná míra selhání uchovávání dat je mnohem menší než 1 PPM za více než 20 let při teplotě 85 °C nebo 100 let při 25 °C.[4]
Programování
[editovat | editovat zdroj]
| Programování signál | Jméno pinu | I/O | Funkce |
|---|---|---|---|
| RDY/BSY | PD1 | O | Vysoká úroveň znamená, že MCU je připraveno pro nový příkaz, jinak je zaneprázdněno. |
| OE | PD2 | I | Output Enable (Aktivní při nízké úrovni) |
| WR | PD3 | I | Write Impuls (Aktivní při nízké úrovni) |
| BS1 | PD4 | I | Výběr bajtu 1 ("0" = nižší bajt, "1" = vyšší bajt) |
| XA0 | PD5 | I | XTAL Action bit 0 |
| XA1 | PD6 | I | XTAL Action bit 1 |
| PAGEL | PD7 | I | Zápis do paměti programu nebo dat (flash a EEPROM) |
| PS2 | PC2 | I | Výběr bajtu 2 ("0" = nižší bajt, "1" = vyšší bajt) |
| DATA | PC[1:0]:PB[5:0] | I/O | Obousměrná datová sběrnice (je-li Output Enable na nízké úrovni, pak výstup) |
Vstup do programovacího módu se děje nastavením vývodů PAGEL (PD7), XA1 (PD6), XA0 (PD5), BS1 (PD4) na napětí 0 V[2] s následným nastavením RESET na 0 V a vypnutím napájení VCC. Pak je na VCC přivedeno napájení o napětí 4,5 – 5,5 V a po prodlevě 60 µs se vstup RESET nastaví na 11,5 – 12,5 V, přičemž tento stav musí trvat nejméně 310 µs.[2] Pak se nastaví XA1:XA0:BS1:DAT = 100 1000 0000 a pošle se impuls o délce trvání alespoň 150 ns na XTAL1 a impuls na nulu na WR. Tím se zahájí výmaz paměti obvodu, jehož ukončení signalizuje obvod uvedením RDY/BSY (PD1) na vysokou úroveň. Nastavit XA1:XA0:BS1:DAT = 100 0001 0000, přivést impuls na XTAL1, a impuls na WR na nulu je příkaz pro zápis do flash paměti.[2] A tak dále.
| Symbol | Kolíky | I/O | Popis |
|---|---|---|---|
| MOSI | PB3 | I | Vstup sériových dat |
| MISO | PB4 | O | Výstup sériových dat |
| SCK | PB5 | I | Hodiny pro sériová data |
Sériová data do MCU jsou taktována vzestupnou hranou, data z MCU jsou taktována sestupnou hranou. Při přivedení napájecího napětí na VCC jsou vstupy RESET a SCK nastaveny na nulu. Po prodlevě alespoň 20 ms je třeba poslat sériové instrukce „povolit programování“ 0xAC, 0x53, 0x00, 0x00 na vývod MOSI. MCU opakuje druhý byte (0x53).[2]
Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku ATmega328 na anglické Wikipedii.
- ↑ ATmega328P [online]. [cit. 2016-07-14]. Dostupné online.
- ↑ a b c d e f g Atmel 8-bit AVR Microcontrollers ATmega328/P Datasheet Complete [online]. [cit. 2016-07-14]. Dostupné online.
- ↑ megaAVR Microcontrollers [online]. Atmel [cit. 2016-07-14]. Dostupné v archivu pořízeném dne 2014-02-14.
- ↑ Atmel 8-bit AVR Microcontrollers ATmega328/P Datasheet Summary [online]. June 2016 [cit. 2016-07-14]. Dostupné online.
Externí odkazy
[editovat | editovat zdroj]
Obrázky, zvuky či videa k tématu ATmega328 na Wikimedia Commons - Dostupné online.