+ All Categories
Home > Documents > Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je...

Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je...

Date post: 17-Feb-2020
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
16
Mikrokontrolery Úvod do obvodů Atmega 328 a PIC16F88 Texty sestavili Petr Nejedlý a Lukáš Čížek, 4EA, 2013
Transcript
Page 1: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

MikrokontroleryÚvod do obvodů Atmega 328 a PIC16F88

Texty sestavili Petr Nejedlý a Lukáš Čížek, 4EA, 2013

Page 2: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová
Page 3: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Atmega 328Vlastnosti a funkce:Flash 32KbyteMax. Frequence 20MhzSRAM 2KbyteEEPROM 1024 byte2x 8bit časovač/čítač 1x 16bit časovač/čítačSledovač reálného času6x PWM kanály6x 10bit ADCProgramovatelné Synchronní / asynchronní sériové rozhraní USART

Master/Slave SPI rozhraní -sériové periferní rozhraní synchroní režim USARTI2C multi-masterová počítačová sériová sběrnice 2vodičováWatchdog timer počítačová periferie, která resetuje systém při jeho zaseknutíVnitřní oscilátorexterní interupty 24

1

Page 4: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Mikroprocesory AVR je možné programovat jak paralelně, tak i sériově a to přímo v systému. Při paralelním programování se využívá toho, že obvod je navržen tak, aby po připojení programovacího napětí na určitý pin obvodu se provede přepnutí vývodů z normálního režimu I/O portů na adresové a datové vývody vnitřní paměti. Pak je možné do paměti paralelně zaznamenat data. Po naprogramování se obvod opět přepne zpět. Nevýhoda tohoto programování je, že je nutné mikroprocesor odpojit od jakýchkoliv obvodů a umístit ho do programátoru. Toto nevýhoda odpadá při sériovém programování. Při tomto programování mikroprocesor zůstává v aplikaci a pomocí několika signálů připojených na programátor ho lze jednoduše naprogramovat. Využívá se převážně signálů MOSI, MISO, SCK a RESET. Tomuto programování se říká ISP.

2

Page 5: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Skládá se ze 32 stejných 8bitových registrů, které mohou obsahovat jak data, tak i adresy. Vzhledem k

propojení registrů s ALU (aritmeticko logická jednotka) provede ALU za jeden hodinový cyklus jednu

operaci.

Mikroprocesory AVR využívají koncepci Harwardské architektury. To znamená, že mají oddělenou

paměť pro program a pro data.

3

Page 6: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Způsoby komunikace s okolím:

SPI (Serial Peripheral Interface) je sériové periferní rozhraní. Používá se pro komunikaci mezi

řídícími mikroprocesory a ostatními integrovanými obvody.Komunikace je realizována pomocí společné sběrnice. Adresace se provádí pomocí zvláštních vodičů, které při logické nule aktivují příjema vysílání zvoleného zařízení (piny SS nebo CS).

Průběh komunikacePro komunikaci Master nastaví log. 0 na SS zařízení, se kterým chce komunikovat.Pak začne generovat hodinový signál na SCLK a v té chvíli vyšlou obě zařízení svoje data, přičemž MOSI (Master Out, Slave In) je vždy Master výstup, Slave vstup a MISO (Master In, Slave Out) je Master Vstup, Slave výstup.Jakmile jsou data vyslána, může komunikace dále pokračovat:Master dále dodává hodinový signál, hodnota SS se neměnínebo může být ukončena: Master přestane vysílat hodinový signál a nastaví SS do log. 1.Délka vyslaných dat je buď 8bit (Byte) a nebo 16bit (Word).

4

Page 7: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

I2Cje multi-masterová počítačová sériová sběrnice vyvinutá firmou Philips, která je používána k připojování nízkorychlostních periferiíUmožňuje propojení až 128 různých zařízení s pomocí pouze dvou obousměrných vodičů. Jeden tvoří hodinový signál SCL (Synchronous Clock) a druhý datový kanál SDA (Synchronous Data).Každá stanice připojená na I2C má přidělenou 7 bitovou adresu. Po zachycení podmínky START porovnávají všechny obvody svou adresu s adresou, která je vysílána na sběrnici. Zjistí-li některý z obvodů shodu, je vysílání určeno právě jemu a musí přijetí adresy potvrdit bitem ACK. Potom přijímá nebo vysílá další data.Každý vysílaný byte a vyslaná adresa je následována vysláním jednoho bitu ACK. Vysílající stanice jej vysílá v úrovni H. Přijímající stanice potvrzuje přijetí tím, že v době vysílání ACK připojí SDA na úroveň L. Pokud vysílající stanice nedostane potvrzení příjmu, ukončí vysílánípodmínkou STOP.

Časový diagram

Přenos dat se zahajuje START bitom (S), když je SDA nízká, zatímco SCL zůstává vysoká. Pak, SDA nastaví přenášaný bit zatímco SCL je nízká (modrá) a jsou odebrány vzorky dat (přijaté) při SCL stoupá (zelená). Když je přenos dokončen, je poslaný STOP bit (P) pro uvolnění datové linky, změnou SDA na vysokou, zatímco SCL je trvale vysoký. Aby se zabránilo falešně detekci, je úroveň na SDA změněn na negativní hraně a je zachycen na kladné hrany SCL.

5

Page 8: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

ARDUINO

je open-source platforma založená na mikrokontroleru ATMega od firmy Atmel a grafickémvývojovém prostředí, které vychází z prostředí Wiring

6

Page 9: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Programování v jazyce Wiring

Cíl rozblikat LED připojenou na pin 13

Program:

int led = 13;

void setup() {pinMode(led, OUTPUT);}

void loop() {digitalWrite(led, HIGH);delay(1000);digitalWrite(led, LOW);delay(1000);}

7

Page 10: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

MIKROPROCESORY PIC

Úvodem

Princip funkce a stručný popis bude prezentován na 8 bitovém mikroprocesoru PIC16F88, který spadá mezi nejjednodušší procesory od firmy Michrochip, ale i přes to obsahuje i složitější pokročilé funkce, které může programátor používat.

Procesor PIC16F88 se doporučuje napájet napětím 3,3V až 5,0V. Spotřeba naprázdno (není-li z procesoru odebírán proud z vývodů) se pohybuje do 5mA. Pro taktování lze použít nastavitelný interníoscilátor s frekvencí 31kHz až 8MHz, ale lze připojit i externí krystalový oscilátor s frekvencí až 20MHz. Cena tohoto procesoru se pohybuje kolem 70Kč.

Procesor má 18 vývodů, z nichž dva slouží pro napájení. Uživateli tedy zbývá k použití 16 vývodů, které může konfigurovat podle potřeby. Řada těchto vývodů je použita pro několik různých periferií. Jedná se např. o obsluhu vnějšího přerušení, vstup čítače, režim CCP (PWM), SPI/I2C, analogové komparátory. Jejich podrobnější popis naleznete v příloze na konci

Organizace paměťového prostoru

Mikroprocesory PIC16F88 mají tři oddělené bloky paměti. Jedná se o paměť programu FLASH (56kB), paměť dat RWM (368B) a paměť dat EEPROM (256B). Paměť dat RWM a paměť programu FLASH mají oddělené sběrnice, což umožňuje současně nezávisle na sobě přístup k obou částem paměti, čímž se značně urychlí chod programu. Jsou tedy založeny na harvardské architektuře, která předpokládá oddělenou paměť pro data a řídící program.

Paměť typu EEPROM a paměť typu FLASH je sice přístupná pro zápis i čtení během výkonu programu, ale nelze k ní přistupovat přímo, ale pomocí speciálních funkčních registrů. Je to z toho důvodu, že v této paměti je uložen program a tímto způsobem lze jednoduše zabránit nechtěnému přepsání programu. Speciálními funkčními registry (SFR) lze řídit veškerou činnost mikroprocesoru ajeho periferií. Přepsání této paměti lze zakázat pomocí konfiguračních bitů WRT1 a WRT2.

V paměti RWM se nachází mnoho registrů pro všeobecné použití. Můžeme je adresovat buď přímo a nebo nepřímo FSR a INDF. Paměť dat RWM slouží právě primárně pro ukládání dat, jako např. výsledků programu nebo stavů vstupů.

8

Page 11: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Ovládání vstupů a výstupů procesoru

Blokové schéma vývodu RA0 u procesoru PIC16F88

Jak je vidět, vývod lze programem nastavit na úroveň logické 0 a 1, čímž ho lze použíte jako výstup, ale také ho lze nechat odpojený (stav vysoké impedance) a použít ho jako vstup digitálního nebo analogového signálu. K obsluze vývodů se používají registry PORT a TRIS (PORTA, TRISA - brána PortA a POTRB , TRISB - brána PortB ).

Obdobným způsobem jsou realizovány všechny vývody procesoru. Jen se liší dalšími funkcemi. Pro detaily doporučuji nahlédnout do datasheetu.

Registr PORTX

Registr PORTX je záchytný pracovní registr portu. Obsahuje 8 funkčních bitů. Zápisem do něj se nastaví hodnoty na bráně, čtením z něj získáváme hodnoty na bráně procesoru.

Registr TRISX

9

Page 12: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Registr TRISX je konfiguračním registrem brány. Obsahuje také 8 bitů. Pokud se do bitu zapíše 1, bude se příslušný vývod chovat jako výstup. Pokud se zapíše do bitu 0, bude se vývod nacházet ve stavu vysoké impedance a bude sloužit jako vstup.

Architektura RISC

Procesory PIC16F88 patří mezi procesory s architekturou RISC (Reduced Instruction Set Computing). To znamená, že mají redukovanou instrukční sadu. Návrh této instrukční sady poté počítá s málo jednoduchými strojovými instrukcemi (např. neexistuje strojová instrukce pro násobení a dělení). Tato architektura umožňuje hardwarovou implementaci mikroinstrukcí přímo na procesoru, čímž se podstatně zvýší výsledná rychlost provádění instrukcí.

Instrukční sada

Instrukční kód má délku 14 bitů. V kódu je obsažen operační znak instrukce, jeden nebo dva operandya specifikovaný cílový registr. Instrukce jsou logicky rozděleny na bytové, bitové a řídící. Přehled všechinstrukcí i s popisem najdete v datasheetu procesoru.

Obecný formát instrukcí procesoru PIC16F88

10

Page 13: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Blokové schéma procesoru PIC16F88

Zapojení vývodů procesoru PIC16F88 v pouzdru DIP

11

Page 14: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

Popis blokového schéma

Jak lze vidět z blokového schématu mikroprocesoru, obsahuje v sobě integrovaný obvod krom procesorové jednotky i další pomocné obvody, jako je např. časovač, USART, AD převodník a komparátor.

S těmito obvody se komunikuje pomocí vnitřní 8 bit sběrnice procesoru, což umožňuje i komunikaci přímo s jednotlivými vývody. Při programování je potřeba zjistit, který vývod má jaké funkce. U vývodu však nemusí být využita pouze jedna funkce, ale lze jich použít víc zároveň, ale ne ve stejném časovém okamžiku, musí se mezi nimi v programu přepínat.

Činnost procesoru:

Z paměti flash, kde je uložen program, je instrukce přesunuta do registru instrukce. Ten ji rozdělí na část s operačním znakem a hodnotami, kterou odešle do multiplexoru MUX, a část s adresou, kterou odešle do paměťového multiplexoru.

Na základě vrácených dat pošle multiplexor MUX data do aritmeticko-logické jednotky ALU, kde se provede daná instrukce. Poté lze data výsledku odeslat po sběrnici nebo dočasně uložit ve střadači W a výsledek opětovně použít v aritmeticko-logické jednotce ALU, čímž se značně zvyšuje rychlost, chceme-li data z předchozích výpočtů použít i ve výpočtech dalších.

Po provedení instrukce se zvýší hodnota v programovém čítači. Tím se vybere následující instrukce.

Vývojové prostředky

Pro vývoj aplikací s procesorem pic je potřeba tzv. programátor. Jedná se o modul, který se připojí k počítači a k procesoru a umožní tzv. vypálit program do procesoru. Rozšířený je např. programátor PicKit2, který má jako jeden z mála programátoru USB rozhraní pro komunikaci s počítačem. Jeho kopie (např. od firmy UST) lze zakoupit od 900 Kč.

Krom programátoru lze použít i převodník na sériovou komunikaci a program nahrávat po sériové lince. Toto řešení však vyžaduje, aby byl v procesoru nahrán bootloader, který umožní nahrání

12

Page 15: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

programu. V tomto případě je nutné v programu zarezervovat místo pro bootloader, jinak by se přepsal při nahrávání.

Je možné zakoupit i vývojové kity. Ty v sobě obsahují jak modul s procesorem, tak programátor a zpravidla přidávají i potřebný software na CD nebo DVD. Jejich cena se pohybuje od 2000Kč.

Pro psaní programů je k dispozici mnoho vývojových prostředí. Přímo firma Michrochip poskytuje software s názvem MPLAB IDE, který ve freeware verzi umožňuje programování procesorů v assembleru a obsahuje i simulátor procesoru. Pro studentské účely je k dispozici zdarma i licence překladače C++.

Mezi nejlepší C++ IDE vývojová prostředí pro procesory PIC patří PCW C Compiler od firmy CCS. Bohužel se jedná o placený program. Jeho licence stojí přibližně 8000 Kč (pro procesory PIC s délkou řídící instrukce 12 a 14 bitů). Licence pro všechny typy procesorů PIC stojí téměř 13 000 Kč.

13

Page 16: Mikrokontrolery - Janoudhidden.janoud.cz/dat/pdf/mikrokontrolery.pdf · Pro studentské účely je k dispozici zdarma i licence překladače C++. Mezi nejlepší C++ IDE vývojová

Nejedlý Petr a Čížek Lukáš4. EA

14


Recommended