Mikrokontrolery
Úvod do obvodů Atmega 328 a PIC16F88
Texty sestavili Petr Nejedlý a Lukáš Čížek, 4EA, 2013
Nejedlý Petr a Čížek Lukáš
4. EA
Atmega 328
Vlastnosti a funkce:
Flash 32Kbyte
Max. Frequence 20Mhz
SRAM 2Kbyte
EEPROM
1024 byte
2x 8bit časovač/čítač
1x 16bit časovač/čítač
Sledovač reálného času
6x PWM kanály
6x 10bit ADC
Programovatelné Synchronní / asynchronní sériové rozhraní USART
Master/Slave SPI rozhraní -sériové periferní rozhraní synchroní režim USART
I2C
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átor
externí interupty
24
1
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
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
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říjem
a vysílání zvoleného zařízení (piny SS nebo CS).
Průběh komunikace
Pro 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
Nejedlý Petr a Čížek Lukáš
4. EA
I2C
je 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
Nejedlý Petr a Čížek Lukáš
4. EA
ARDUINO
je open-source platforma založená na mikrokontroleru ATMega od firmy Atmel a grafickém
vývojovém prostředí, které vychází z prostředí Wiring
6
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
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 a
jeho 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
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
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 operandy
a specifikovaný cílový registr. Instrukce jsou logicky rozděleny na bytové, bitové a řídící. Přehled všech
instrukcí i s popisem najdete v datasheetu procesoru.
Obecný formát instrukcí procesoru PIC16F88
10
Nejedlý Petr a Čížek Lukáš
4. EA
Blokové schéma procesoru PIC16F88
Zapojení vývodů procesoru PIC16F88 v pouzdru DIP
11
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
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
Nejedlý Petr a Čížek Lukáš
4. EA
14
Download

Mikrokontrolery