MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Ð Û Å«Æ ±²³ µ ¹º»¼½¾ Ý Vývojový kit pro výuku programování mikrokontrolérů IPLOMOVÁ PRÁCE Bc. Martin Čech Brno, jaro 03
Prohlášení Prohlašuji, že tato diplomová práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj............................... Martin Čech 7. května 03 Vedoucí práce: RNr. Zdeněk Matěj ii
Poděkování Na tomto místě bych rád poděkoval RNr. Zdeňku Matějovi za vedení a poskytnutí rad při vytváření diplomové práce. ále panu prof. Václavu Přenosilovi a Masarykově Univerzitě za poskytnutí materiálních a finančních prostředků pro realizaci navržených prototypů. iii
Shrnutí Tato práce se zabývá návrhem univerzálního vývojového kitu pro výuku programování různých typů mikrokontrolérů. Věnuje se popisu jednotlivých vytvořených modulů s mikrokontroléry a periferiemi, popisuje propojovací rozhraní, zdůvodňuje volby použitých komponent a uvádí podklady, ze kterých lze tento kit vytvořit. Práce dále uvádí přehled mikrokontrolérů Microchip PIC a Atmel AT- Mega a obsahuje popis principů fungování některých periférií. Součástí práce je také knihovna funkcí pro mikrokontrolér PIC8F5K0, umožňující ovládání jednotlivých komponent a výukové tutoriály pro seznámení uživatele s kitem. Abstract This paper describes the design of a universal development kit for teaching programming of microcontrollers of various types. It describes the created individual modules with microcontrollers and peripherals, describes the connection interface, justifies choices of the components and provides materials for creating this kit. The paper also provides an overview of Microchip PIC and Atmel ATMega microcontrollers and describes the operation principles of some peripherals. It also includes a library of functions for PIC8F5K0 microcontroller, which allow controling of individual components and instructional tutorials to familiarize users with the kit. iv
Klíčová slova vývojová deska, mikrokontroléry PIC, mikrokontroléry AVR, PIC8F6K0, ATmega6PA, maticová klávesnice, LC displej, sedmi segmentový displej v
Obsah Úvod....................................... 3 Přehled mikrokontrolérů............................ Mikrokontroléry PIC............................ 5.. PIC8F............................... 5.. PIC8F6K0........................... 6..3 Vývojové prostředí MPLab a programátor PICkit...... 7.. Programování ICSP....................... 8. Mikrokontroléry AVR............................ 9.. ATMega6PA.......................... 9.. Programování JTAG....................... 0 3 Přehled vývojových desek.......................... 3. Arduino................................... 3. UNI-S6.................................. 3 3.3 Platformy jednotlivých výrobců...................... Popis vývojového kitu a jeho komponent................. 5. Celkový pohled............................... 5.. Propojovací konektory...................... 6. Segmentový displej............................. 7.3 Maticová klávesnice............................. 8. LC displej................................. 9 5 Konstrukce zapojení a implementace knihoven.............. 5. Modul základní desky............................ 5.. PIC................................. 5.. ATMega.............................. 3 5. Modul napájecí desky............................ 5.3 Modul LE diod.............................. 5 5. Modul tlačítek................................ 6 5.5 Modul 7 segmentovky............................ 7 5.6 Modul klávesnice.............................. 7 5.7 Modul LC displeje............................ 8 6 Výukové tutoriály............................... 30 6. Tutorial - LE diody........................... 30 6. Tutorial - tlačítka............................. 3 6.3 Tutorial 3-7 segmentový displej...................... 3 6. Tutorial - maticová klávesnice...................... 3 6.5 Tutorial 5 - LC displej........................... 36 7 Závěr....................................... 37 A atové soubory.................................
B Cenová kalkulace jednotlivých modulů.................. C Schéma modulu základní desky s mikrokontrolérem PIC........ Schéma modulu základní desky s mikrokontrolérem ATMega..... 5 E Zdrojová deska................................. 6 F IO moduly.................................... 7 G Moduly displejů................................ 8 H Schéma konektorů základní desky..................... 9
Kapitola Úvod Při vytváření programu pro mikrokontrolér je programátor postaven nejen před úkol vytvoření programu pro samotnou architekturu, tak jak je tomu u běžného programování na architektuře PC, ale musí taky řešit hardwarovou stránku věci, tj. vytvoření okolního prostředí vlastního mikrokontroléru, které tento ovlivňuje a z kterého získává vstupy. Pro začínajícího programátora je tento krok často velmi obtížný a před řešením samotného jádra problému tak musí řešit zdánlivě podružné úkoly, jako je zapojení MCU do funkčního elektronického obvodu, s čímž souvisí také jeho testování, nákup součástek atp. Nejen pro začínajícího programátora je pak užitečné, když má k dispozici nástroje, které ho tohoto problému alespoň částečně zbaví a umožní mu tak rychlejší přístup k řešení skutečného problému. Vývojové desky slouží právě takovému účelu. Obsahují základní komponenty pro chod mikrokontrolérů a další podpůrné obvody či periférie. Uživatel programátor se tak může po případné rychlé konfiguraci desky zaměřit přímo na vývoj softwaru pro mikrokontrolér. V ideálním případě je pak takto vyrobená zkušební deska použitelná také ve finálním řešení. Toho se však dosahuje velmi obtížně, nebot desky se snaží nabídnou co nejširší škálu periférií a možností pro rychlý vývoj a tak jsou často zbytečně velkých rozměrů a pro praktické použití obsahují komponenty, které nejsou třeba. Cílem této práce je vytvořit vývojový kit, který skloubí oba tyto principy. Umožní jednak rychlý vývoj softwaru začínajícím i pokročilým uživatelům nabídnutím širokého portfolia periférií, ale zároveň poskytne řešení snadno použitelné v koncovém zařízení, a to za rozumnou cenu. 3
Kapitola Přehled mikrokontrolérů Ve světě existuje nepřeberné množství různých druhů mikrokontrolérů od různých výrobců. Cílem této kapitoly není podat vyčerpávající přehled různých typů mikrokontrolérů a provést jejich srovnání, jako spíš popsat ty, které jsou dále použity pro vývojový kit. Při seznamování s různými druhy mikrokontrolérů se můžeme setkat s pojmy rodina či řada mikrokontroléru. Členem jedné rodiny jsou mikrokontroléry založené na stejném jádru s různými velikostmi pamětí a periférií. Výrobci často mívají těchto rodin ve svém portfoliu více a v každé z nich je pak mnoho různých členů tak, aby byly pokud možno co nejvíce splněny zákazníkovi specifické požadavky. Se vzrůstající vybaveností či lepším jádrem se zvyšuje také cena výsledného obvodu a je tedy nutné volit vhodný typ vždy s ohledem na všechny aspekty. Zde vybrané mikrokontroléry, PIC a AVR, jsou jedny z nejběžnějších a celosvětově nejvíce používaných, a je tedy vhodné při výuce zahrnou právě tyto, jelikož je pravděpodobné, že se s nimi uživatelé kitu setkají i ve své praxi. Volba zde uvedených (a v kapitole dále blíže popisovaných) konkrétních typů byla provedena s ohledem na poměr cena/výkon. Výkonem je myšlena co možná nejširší škála poskytovaných periférií tak, aby uživatel kitu měl možnost seznámit se s běžně používanými perifériemi, a dále co největší množství poskytované paměti, aby nebylo na uživatele kladeno omezení v důsledku jejího nedostatku. á se předpokládat, že začínající programátor nebude příliš dbát na efektivitu svého výsledného kódu (a tedy ani velikost kódu popř. použitých dat a algoritmů), jako spíše na funkčnost samotnou. Rozhodující požadavky pro výběr konkrétního typu mikrokontroléru, použitelného jako základ vývojového kitu, jsou tyto: vyšší výkon (zástupci vyšších/vybavenějších řad) alespoň čtyři 8-bitové I/O porty (celkem 3 I/O pinů) SPI, I C a UART rozhraní A převodník s alespoň dvěmi kanály co nejvyšší množství paměti (programové i datové) rychlost CPU alespoň 6 MHz podpora HW debugování
. PŘEHLE MIKROKONTROLÉRŮ cena max. 00 Kč za kus. Mikrokontroléry PIC Mikrokontroléry PIC (Peripheral Interface Controller) firmy Microchip Technology Inc. jsou k dispozici v 8, 6 i 3 bitových variantách. Zde se budu dále zabývat pouze 8-bitovými variantami, jelikož jejich architektura je pro výuku nejjednodušší a uživatel se s nimi dokáže seznámit rychleji, než s jejich vícebitovými variantami. 8 bitové PIC jsou RISC procesory s harvardskou architekturou paměti, jedním akumulátorem (W-Working), pevně daným umístěním reset a interrupt vektorů a pamět ově mapovanými periferiemi [6]. Podle [0] je můžeme rozdělit do základních skupin: Baseline, do které spadají rodiny PIC0, PIC a PIC6, je základní řadou pro ty nejmenší aplikace. Má -bitovou šířku instrukčního slova a úrovňový hardwarový zásobník. Nemají obsluhu přerušení a svou cenou patří k těm nejlevnějším, tzv. low-cost. Mid-range je střední třída s -bitovou šířkou instrukčního slova a 8 úrovňovým hardwarovým zásobníkem. Oproti nižší řadě nabízejí vyšší taktovací frekvence až 0 MHz, obsluhu přerušení a více periférií. Spadají sem taktéž zástupci rodiny PIC0, PIC a PIC6, ovšem jejich vybavenější varianty. Enhanced Mid-range s rodinami PICFXXX a PIC6FXXX, jsou vylepšenými variantami mid-range skupiny. K vylepšením patří redukce velikosti kódu, zvýšení propustnosti, lepší pipelining, zjednodušené mapování registrů a až 6 úrovňový hardwarový zásobník. PIC8 architektura je nejvyšší řadou 8 bitových MCU pro náročné aplikace. Má 6-bitovou šířku instrukčního slova, 3 úrovňový zásobník, úrovně (priority) přerušení a také 8x8 hardwarovou násobičku. Tento typ je optimalizovaný pro programování v jazyce C a jsou zde k dispozici periférie jako ethernet kontrolér, USB či CAN sběrnice... PIC8F Řada PIC8F představuje nejvyšší typovou řadu osmibitových mikrokontrolérů firmy Microchip. Její zástupci dosahují výkonu až 6 MIPS při taktu 6 MHz. ále umožňují použití napájecího napětí v rozmezí.8v - 5.5V, až 8KB programové, KB datové RAM a KB EEPROM paměti. Kromě standardních SPI, I C a UART komunikačních rozhraní nabízí některé typy také USB a IEEE 80.3. Jsou k dispozici v pouzdrech s 8-00 vývody, podle počtu periférií a GPIO, a to jak ve variantě IP, vhodné pro zapojení např. do nepájivého pole, tak ve variantě QFN a QFP, vhodné pro SM montáž. Celkem nabízí výrobce 0 procesorů řady PIC8F. 5
. PŘEHLE MIKROKONTROLÉRŮ.. PIC8F6K0 Pro účely této práce byl na základě výše uvedených požadavků zvolen mikrokontrolér PIC8F6K0, zástupce kompatibilních procesorů PIC8F K0/ K0, jejichž parametry a rozdíly jsou v tabulce. Model Pamět programu Pamět dat Komunikační rozhraní I/O 0-bit A/(ch) Flash(B) Počet instrukcí SRAM(B) EEPROM(B) SPI I C USART PIC8F3K0 8K 096 5 56 5 PIC8FK0 6K 89 768 56 5 PIC8F5K0 3K 638 536 56 5 PIC8F6K0 6k 3768 3936 0 5 PIC8F3K0 8K 096 5 56 36 PIC8FK0 6K 89 768 56 36 PIC8F5K0 3K 638 536 56 36 PIC8F6K0 6k 3768 3936 0 36 Tabulka.: Parametry mikrokontrolérů rodiny PIC8F K0/ K0 PIC8F6K0 pracuje s napájecím napětím,8 V - 3,6 V. ostupné jsou 3 varianty pouzder, 0 vývodové PIP a vývodové TQFP a QFN, s vývody dle obrázku.. Na výběr je z 0 režimů oscilátoru, kde bez použití externího zdroje hodin Obrázek.: PIP a TQFP pouzdra PIC8F6K0, převzato z [3] lze s využitím vnitřního PLL obvodu a interního 6 MHz oscilátoru dosáhnout taktovací frekvence až 6 MHz (na tomto taktu dosahuje výpočetní výkon 6 MIPS). Mezi další vlastnosti mikrokontroléru dále patří 5 I/O portů označených jako A E, kde porty A mají každý šířku 8 pinů a port E pouze 3 3 externí přerušení a programovatelné interrupt-on-change přerušení 6
. PŘEHLE MIKROKONTROLÉRŮ sériový port s podporou SPI a I C, EUSART modul podporující standardy RS3 a RS85 desetibitových A/ převodníků analogové komparátory capture/compare/pwm modul osmibitový a 3 šestnáctibitové timery technologie nanowatt XLP podporující deep sleep režim pro nízkou spotřebu MCU In-Circuit System Programming (ICSP) a In-Circuit ebug (IC) přes piny..3 Vývojové prostředí MPLab a programátor PICkit Ze stránek výrobce MCU lze zdarma stáhnout prostředí pro vývoj, simulaci a programování jménem MPLAB IE. Výhodou použití tohoto prostředí je to, že je všechno tzv. all-in-one. Lze zde jak psát kód, a to at už v assembleru či v C, tak také simulovat jeho provádění na integrovaném simulátoru. ále je tu možnost přímého nahrání kódu do procesoru a jeho HW debugování. K tomuto účelu je ale potřeba použít jeden z podporovaných programátorů/debuggerů jejichž seznam lze nalézt v []. Překladač jazyka assembler a linker jsou součástí prostředí samotného, stejně tak jako překladač MPLAB C8 C Compiler. Ten je vhodný pouze pro překlad kódu na řadu PIC8, pro jiné typy je potřeba překladač doinstalovat. Není nutné použít překladač od Microchipu, lze použít také překladače jiného dodavatele, např. ty od firmy HI-TECH Software (http://www.htsoft.com/), které jsou v prostředí přímo podporovány. Ve verzi Lite, dostupné zdarma, jsou jistá omezení, např. ve větší velikosti výsledného kódu, ale jinak se jedná o plnohodnotný překladač. K dispozici jsou také volně šiřitelné překladače jako např. sdcc (http://sdcc. sourceforge.net/). Jedním z podporovaných programátorů/debuggerů je také PICkit, což je programátor firmy Microchip. V současné době již firma tento produkt nevyrábí a dala volně k dispozici jeho firmware i podklady pro výrobu. Je tedy možné tento programátor dle schématu uvedeného v [] sestavit, nahrát výše zmíněný firmware a získat tak plnohodnotný programátor/debugger. Seznam podporovaných součástek lze získat ze stránek výrobce, PIC8F6K0 je jedním z podporovaných typů. Tento programátor lze sehnat za cenu okolo 760 Kč. Při použití schématu a vlastního sestavení je pak cena mnohem nižší. Této problematice se věnuje kapitola 5... Upravené schématické zapojení programátoru je v příloze C.. cena z www.farnell.com 7
. PŘEHLE MIKROKONTROLÉRŮ.. Programování ICSP ICSP je způsob, jakým nahrát vytvořený program do mikrokontrolérů PIC. Jedná se o metodu, kdy programování zařízení je umožněno přímo v obvodu, tedy v takové konfiguraci, kde je mikrokontrolér zapojený v cílové aplikaci a není nutno jej dávat do speciálních programátorů. Popsat jakým způsobem toto programování probíhá, z pohledu samotných programovacích signálů, je nad rámec této práce. Kompletní popis lze nalézt v []. Zde se zaměřím především na uživatelský pohled na tento způsob programování. Možnosti programování jsou dvě, vysokonapět ové a nízkonapět ové. U prvního je třeba na jeden z pinů mikrokontroléru přivést napětí V, které jej přepne do programovacího režimu. Je zde jasná nevýhoda, a to v nutnosti získat toto vysoké napětí, které je často třeba generovat ze zdroje 5 V (většinou z USB). U nízkonapět ového programování lze do programovacího režimu vstoupit i bez V, je však třeba jeden programovací pin navíc, a tak není tento režim podporován všemi typy MCU (hlavně těmi menšími). V závislosti na podporovaném režimu je každé MCU vybaveno 5 resp. 6 piny, přes které programování probíhá: PGC neboli ICSP Clock je synchronizační hodinový signál komunikace. Na tomto pinu je dle [] potřeba dodržet maximální frekvenci 5 MHz. PG neboli ICSP ata je datový signál pro komunikaci. Přes tento pin je přenášen samotný program a také instrukce pro verifikaci či vyčtení vnitřních pamětí mikrokontroléru. Tento pin je obousměrný a je třeba využít třístavového vstupně/výstupního prvku na programovacím zařízení. MCLR neboli VPP je resetovací pin, který kromě uvedení zařízení do resetu slouží také pro uvedení do programovacího režimu. Na tento pin je třeba přivést napětí V při vysokonapět ovém programování. Pří návrhu obvodu je třeba toto vysoké napětí neopomenout a oddělit jej od zbytku obvodu tak, aby nezpůsobilo nesprávnou činnost celého systému, nebo v nejhorším případě jeho zničení. PGM tvoří spolu s M CLR dvojici pinů, která při využití nízkonapět ového programování uvede MCU do programovacího režimu. I některé mikrokontroléry z vyšších řad tento pin však nemají a jediným možným způsobem programování je tak vysokonapět ové. V a VSS jsou piny pro připojení provozního napětí a země, které musí být přítomny po celou dobu programování. Vhodný programátor umožní detekovat, zda je napájení přivedené z obvodu, v němž je mikrokontrolér připojen. V opačném případě toto napájení zajistí. Samotný přechod do vysokonapět ového programovacího režimu je proveden ve třech krocích. Nejdříve se přivede napájení na piny VSS a V. V druhém. vysoké napětí je zde myšleno v porovnání ke standardnímu napětí nutnému pro běh mikrokontroléru, které je 5 V popř. 3,3 V či méně 8
. PŘEHLE MIKROKONTROLÉRŮ Obrázek.: Pouzdra mikrokontroléru ATmega6PA, převzato z [] kroku se přivede vysoké napětí na pin MCLR a nakonec se piny PGC a PG drží v úrovni log. 0 po specifikovanou dobu. Následně je umožněno smazání obsahu čipu, přenos samotného programu a naprogramování vnitřních pamětí a případná verifikace takto naprogramovaného mikrokontroléru. Celková doba programování se pohybuje v řádu sekund až minut, dle typu programátoru a velikosti vnitřních pamětí MCU.. Mikrokontroléry AVR AVR je rodina mikrokontrolérů společnosti Atmel. Stejně jako u PICů se zde dají nalézt 8, 6 i 3 bitový zástupci. Opět se jedná o RISC procesory s hardvardskou architekturou. ají se rozdělit do několika tříd pro všeobecné použití a kromě toho je k dispozici množství různých typů pro specifické použití (řízení baterií, automobilový průmysl atd... ) [3]. tinyavr jsou nejnižší řadou určenou především pro aplikace vyžadující nízkou spotřebu a málo periférií. okáží pracovat už od operačního napětí 0,7 V. Jsou velmi malé, s nízkým počtem pinů (8-3) a také velmi levné. megaavr je vyšší řadou s větším výpočetním výkonem až 0 MIPS. Obsahují již snad všechny myslitelné periférie, vč. USB, CAN ale i LC kontroleru. Kvůli většímu počtu periférií mají větší rozměry a více pinů (8-00). Někteří zástupci této řady již umí komunikovat přes JTAG rozhraní a program může být přes toto rozhraní i odladěn. Oproti tinyavr má hardwarovou násobičku a více paměti (programové i datové). AVR Xmega jsou řadou nejpokročilejší s 8 i 6 bitovými jádry. Přínosem oproti nižším řadám jsou A/A převodníky s rozlišením až bitů, MA kontrolér pro přímý přístup jejich periférií k paměti, více úrovní přerušení, modul šifrování aj... ATMega6PA Jako vhodný mikrokontrolér typu ATMega byl na základě výše uvedených parametrů zvolen ATmega6PA. Může pracovat na frekvenci až 0MHz s výpočetním výkonem až 0 MIPS ( MIPS na Hz[]). Této frekvence však nelze dosáhnout vnitřními oscilátory, ty jsou schopny pracovat na max. frekvenci 8 MHz. Pro vyšší je potřeba připojit externí oscilátor. Pracovní napětí mikrokontroléru se musí pohybovat v rozmezí,8 V - 5,5 V. Variant pouzder je více, vývodové QFP, QFN popř. MLF a také 0 pinové PIP pouzdro. Zapojení vývodů je dle obrázku.. ATMega6PA je zástupcem kompatibilních procesorů ATMega PA, které se vzájemně liší různými velikostmi pamětí. Jednotlivé parametry této rodiny jsou 9
. PŘEHLE MIKROKONTROLÉRŮ shrnuty v []. Vybraný model má 6KB programové FLASH paměti, KB paměti RAM a 5B paměti EEPROM. alší vlastnosti ATMega6PA jsou osmibitové porty označené jako PA - P programovatelné interrupt-on-change přerušení na všech portech 8 desetibitových A převodníků dva nezávislé USART moduly, jeden SPI a I C capture/compare/pwm moduly (6 kanálů pro PWM) osmibitové a šestnáctibitový timer rozhraní JTAG pro programování a on-chip debugování.. Programování JTAG Mikrokontroléry AVR lze oproti mikrokontrolérům PIC programovat více způsoby: Program and ebug Interface (PI), Tiny Programming Interface (TPI) a awire jsou možnosti programování pro 3 bitové, Xmega a tinyavr zařízení. Možností je použít také bootloader, ten je však třeba nejprve do zařízení naprogramovat a až poté jej lze využít. Tyto možnosti jsou zde pouze proto, aby byl výčet úplný a dále se jimi zabývat nebudu. Vysokonapět ové paralelní programování využívá nejvíce vodičů a vysoké napětí V. Pro použití přímo v obvodu je nevhodné právě kvůli těmto parametrům, hodí se však jako poslední záchrana čipu při nesprávném nastavení fusebits[6]. Přílišné množství vodičů je odstraněno při použití vysokonapět ového sériového programování, což je obdoba, využívající menší počet vodičů, vhodná zvláště pro tinyavr, které mají malé množství pinů. In-System programování (ISP) je velmi používaná metoda, obdoba ICSP programování u PICů. Také využívá pouze několik málo pinů a umožňuje programovat čip v obvodu. Oproti ICSP u PICů navíc nepotřebuje napětí V, programování probíhá přes interní SPI modul uvnitř mikrokontroléru. K ISP je třeba šesti pinů: MISO, MOSI, SCK,, VCC a RESET. ebugwire je rozhraní velmi kompaktní, pro programování je potřeba pouze tří pinů,, VCC a RESET. Tento programovací režim ale není ve většině zařízení továrně povolen, je potřeba jej nejdříve povolit nastavením fuse bitů přes ISP nebo jiné rozhraní. JTAG je rozhraní navržené spíš pro debugování než pro programování, některé megaavr mikrokontroléry však podporují programování tímto rozhraním, konkrétně přes čtyři piny TCK, TMS, TI a TO. Ke korektní funkci jsou pak ještě potřeba piny VCC a []. 0
. PŘEHLE MIKROKONTROLÉRŮ Z výše uvedených je nejuniverzálnějším rozhraním JTAG. Umožňuje nejen programování, ale také debugování, a to přes rozumný počet pinů. Je zde sice potřeba nastavit fuse bit, stejně jako u ebugwire rozhraní, ale narozdíl od něj je pro JTAG tento fuse bit nastaven přímo výrobcem u většiny mikrokontrolérů, vč. AT- Mega6PA []. Programování přes JTAG probíhá pomocí 6 výše zmíněných pinů. TCK, TMS, TI a TO jsou piny standardního JTAG rozhraní, signály VCC a jsou napájení a zem, které musí být během programování i debugování přítomny. Signál ntrst JTAG rozhraní není v zařízení použit. Programování probíhá pomocí sady instrukcí, jejichž kompletní přehled lze nalézt např. v [].
Kapitola 3 Přehled vývojových desek Vývojových desek, poskytujících podporu pro vývoj aplikací pro mikrokontroléry, je na dnešním trhu celá řada. Můžeme se setkat jak s jednoúčelovými deskami určenými pro vývoj specifické úlohy, které jsou osazeny právě pouze obvody nutnými pro tento specifický úkol, tak i s deskami obecnějšími, určenými především pro výuku a seznámení se s platformou jako takovou, které mají naopak hromadu periférií. Některé desky naopak obsahují pouze mikrokontrolér a sadu pinů, které umožní jednodušší přístup k MCU při vývoji, popř. ještě také několik LE diod, které indikují stav pinů. Ruku v ruce s vybaveností těchto vývojových kitů pak jde jejich rozměr a především cena. V této kapitole jsou uvedeny některé vývojové kity, které jsou k dostání na trhu. Opět se nejedná o kompletní přehled, to by ani nebylo možné vzhledem k množství dostupných desek. Vždyt téměř každý výrobce mikrokontrolérů pro svůj produkt nějakou podporu ve formě vývojové platformy nabízí. Zde uvedené kity jsou ty, v jejichž provedení jsem nalezl inspiraci pro vývoj kitu popisovaného v této práci. Jsou zde uvedeny jejich nedostatky a pozitiva oproti mnou navrženému řešení. 3. Arduino Arduino je vývojová platforma založená na MCU ATMega firmy Atmel []. Jejím účelem je poskytnout jednoduše použitelný HW a SW pro vývoj produktů využívajících MCU. Primárním cílem platformy není vyučovat programování mikrokontrolérů, jako spíš poskytnout nástroj pro řešení projektů. Pro programování lze využít speciální Arduino programovací jazyk a také vývojové prostředí, tento jazyk podporující. Jednoduchost tohoto jazyka umožňuje vývoj programů i pro uživatele, kteří nemají předchozí znalosti s programováním mikrokontrolérů. Uživatel jazyka je odstíněný od problémů spojených s programováním na konkrétní platformě (zde ATMega). Z tohoto hlediska je tedy platforma vhodná pro první seznámení s principy programování mikrokontrolérů. Použití speciálního jazyka sice není podmínkou, MCU lze programovat také přes standardní Atmel ISP rozhraní a tedy vytvářet program v nativním formátu, za použití nástrojů výrobce MCU, avšak tato možnost je spíše vedlejší možností než hlavním cílem. Nespornou předností Arduina je jeho snadná rozšiřitelnost pomocí tzv. shieldů, což jsou desky, obsahující různé periférie, které jsou lehce připojitelné k hlavní desce obsahující MCU. íky open-source filozofii má tento produkt velkou uži-
3. PŘEHLE VÝVOJOVÝCH ESEK vatelskou základnu a spoustu předpřipravených tutoriálů pro rychlé seznámení s platformou. Začínající programátor může předpokládat, že jeho problém již někdo dříve řešil a může si toto řešení prostudovat a získat tak návod, jak postupovat. Výhody/nevýhody + open-source a velká uživatelská základna + vhodné pro začínající MCU programátory (vlastní programovací jazyk) + rozšiřitelnost pomocí shieldů + kompaktní rozměry a modularita nemožno použít jiný typ mikrokontroléru zaměřeno především na použití Arduino programovacího jazyka dražší základní deska s MCU, $ za verzi Arduino UNO, existují však i levnější varianty 3. UNI-S6 UNI-S6 je vývojová deska společnosti MikroElektronika. Jedná se o vývojový kit, který podporuje 8 různých architektur mikrokontrolérů [5]. Toto řešení se snaží nabídnout především širokou škálu periferních zařízení, od tlačítek přes displeje až po externí paměti. K přístupu k perifériím používá jedno společné rozhraní pro všechny architektury. Toho dosahuje použitím tzv. mikroboards. Přístup tohoto řešení je opačný oproti Arduinu, kde je základem deska s MCU, na kterou se dají přidávat další periférie. Zde je základem rozměrově velká základní deska s periferiemi, ke které se připojují výše zmíněné mikroboards s osazeným mikrokontrolérem. Na základní desce jsou kromě různých periférií vyvedené také porty MCU, a je tedy možné provést rozšíření o další zařízení. Výrobce k tomuto účelu nabízí řadu rozšiřujících desek. MikroBoards slouží také k programování osazeného MCU. Zde již není k dispozici speciální programovací jazyk, používá se standardních nástrojů (překladačů) výrobce dle zvoleného typu mikrokontroléru. Pro naprogramování osazeného MCU obsahují mikroboards vždy speciální mikrokontrolér, který plní funkci programátoru. Pro nahrání programu do flash paměti vývojového MCU je tak třeba použít speciální software od firmy MikroElektronika. Výhody/nevýhody + spousta periferii již při nákupu základní desky + podpora řady mikrokontrolérů + vzorové projekty pro použití periférií pro každou architekturu 3
3. PŘEHLE VÝVOJOVÝCH ESEK nutnost použít speciální software pro nahrání firmwaru do MCU velké rozměry základní desky, samotné mikroboards však kompaktní cena 9 $, která je navíc jen za základní desku, všechny rozšiřující desky i mikroboards je třeba dokoupit extra mnoho nastavovacích jumperů, které mohou uživatele mást nejedná se o open-source projekt, vytváření nových periférií a rozšiřování o novou funkcionalitu je zcela v rukou výrobce 3.3 Platformy jednotlivých výrobců Téměř každý výrobce mikrokontrolérů dodává ke svým produktům také nějakou formu vývojového kitu. Je zřejmé, že takový vývojový kit obsahuje pouze MCU daného výrobce. Často se jedná o pouhé desky s mikrokontrolérem a konektory pro jednodušší připojení periférií, které si uživatel dodá sám. Některé desky však mohou obsahovat řadu periférií, které často bývají také produktem výrobce MCU. Výhody/nevýhody + podpora výrobcem MCU + některé základní kity lze objednat jako vzorek (tedy zadarmo) možnost jednoho či více mikrokontroléru, ale stejného výrobce (a tedy často i architektury) ukončení podpory výrobku jakmile výrobce začne propagovat nový typ mikrokontroléru
Kapitola Popis vývojového kitu a jeho komponent. Celkový pohled USB konektor Základní deska ICSP/ISP konektor Konektor Periferní deska LC, klávesnice, pameti, USB atd... Konektor Periferní deska LC, klávesnice, pameti, USB atd... Konektor Programátor Napájecí deska MCU Power konektor baterie power konektor USB konektor Obrázek.: Blokové schéma jednotlivých modulů a jejich propojení Z důvodu dosažení univerzálnosti kitu (nezávislosti na použité architektuře MCU) je pro realizaci zvolen modulární přístup, tedy takový, kde jednotlivé subsystémy jsou rozděleny do samostatných komponent a uživatel sám si pak vybere pouze ty, které jsou pro něj zajímavé a jednoduše je spojí v jeden funkční celek. Na obrázku. je tento přístup znázorněn. Základem celého kitu je vždy deska s MCU. Tato obsahuje kromě vybraného mikrokontroléru také programátor, který umožní nahrání programu. ále programátor slouží jako debugger, což je zvláště pro výuku velmi užitečná věc. Každá tato deska také umožňuje programování přes standardní rozhraní daného mikrokontroléru (u PIC je to např. ICSP) externím programátorem. Tato možnost je zde zachována z toho důvodu, aby uživatel zvyklý na svůj vlastní programátor, měl možnost jej pro svůj komfort stále používat. íky vlastnímu programátoru přímo na desce však není nutné dokupovat ke kitu často drahé programátory popř. debuggery. Na modulu je dále propojovací rozhraní(konektor), které má stejnou podobu pro všechny typy základních desek bez ohledu na použité MCU. íky stejnému rozhraní je možné připojit různé typy periferních desek k desce základní vždy stejně. Výstupem této práce jsou základní desky: s 8 bitovým MCU PIC (viz kapitola 5..) firmy Microchip a 8 bitovým MCU ATMega firmy Atmel (viz kapitola 5
. POPIS VÝVOJOVÉHO KITU A JEHO KOMPONENT 5..). Ovšem lze vytvořit další základní desky s jinými typy architektur a tyto také použít. Stačí propojit výstupní piny nového MCU s piny propojovacího rozhraní (konektoru) a osadit programovací obvod. Základní modul je možné použít zcela samostatně, kde napájení je přivedené přes USB sběrnici. Pro toto použití je na modulu LE dioda a také tlačítko. Tyto slouží především pro prvotní seznámení se s modulem, otestování jeho funkčnosti, popř. pro otestování, že se podařilo nahrát program do MCU a spustit jej. To bývá prvním a často obtížným krokem pro uživatele, kteří se s programováním mikrokontrolérů ještě nesetkali. Nebylo by vhodné zatěžovat je nutností připojit další periférie, aby si vůbec mohli ověřit, že správně pochopili postup pro vývoj programů. Při samostatném použití je možné odebírat maximální proud 500mA (dáno USB sběrnicí). Proto lze k základní desce připojit napájecí desku, která obsahuje konektor pro připojení externího napájení a také konektory pro připojení baterií v případě, že by uživatel chtěl kit použít jako nezávislou entitu, např. pro řízení motorů nějaké pohyblivé platformy. Pokud je však použito pouze tolik periférií, že napájení přes USB na základní desce je dostačující, není nutné nic řešit. Periferní desky jsou vybaveny konektorem pro jednoduché připojení na základní desku. Každá periferní deska dále umožňuje připojení dalších periferních desek stejným způsobem jako deska základní. Pokud tedy uživatel použije několik periférií najednou vznikne tzv. tower kit, kde jsou jednotlivé moduly postupně skládané na sebe. Je zřejmé, že ty moduly, které vyžadují interakci s člověkem, jako např. displej nebo klávesnice, musí být úplně nahoře, aby bylo možné je zpřístupnit... Propojovací konektory Jednotlivé moduly jsou vzájemně propojeny konektory typu dutinky popř. kolíku s roztečí,5 mm. Ze spodní strany každé desky, at už periferní nebo základní, jsou vždy dutinkové konektory (samice). Z horní strany pak kolíkové (samec). Takto je možné desky vzájemně spojovat na sebe. Výjimku z tohoto pravidla tvoří napájecí deska, která bude vždy tvořit nejnižší patro a z toho důvodu má pouze kolíkové konektory. Na základní desce jsou dva dvojřadé kolíkové konektory x30 pinů. Tj. celkem 0 pinů kde pin je využit pro rozvod napájecího napětí 5 V, pin pro napájecí napětí 3,3 V a jako společná zem. ále je na konektoru šest 6-bitových obecných portů (GPIO), jejichž využití a nevyužití záleží pouze na zvoleném MCU a připojených perifériích. Tento počet je dostačující pro většinu 8 a 6 bitových mikrokontrolérů. MCU s více vývody lze použít také, jen některé z pinů nebudou v kitu použity. Naopak MCU s méně vývody nevyužije všechny obecné porty konektoru. Kromě toho obsahuje konektor ještě sadu pinů, jejichž použití je rezervované pro standardní komunikační sběrnice, SPI, I C, UART a USB. Opět platí, že pokud MCU nepodporuje danou sběrnici pak konektor není připojen. Některé z GPIO portů jsou dále vyvedené také na dvojřadý konektor x6 pinů. ůvodem je to, že některým perifériím tento počet pinů stačí a není tak nutné 6
. POPIS VÝVOJOVÉHO KITU A JEHO KOMPONENT k periferní desce pořizovat velký konektor, který je jednak dražší, a také zabírá více místa. Také komunikační sběrnice jsou vyvedené na konektoru tohoto typu. Schématické znázornění konektorů je v příloze H.. Segmentový displej Segmentový displej ( segmentovka ) je zobrazovací zařízení pro zobrazení číslic, ale i písmen, v závislosti na počtu segmentů. Nejběžnějšími jsou 7-segmentové a 6-segmentové. Každý segment je tvořen jednou LE diodou a rozsvícením či nerozsvícením jednotlivých segmentů lze získat potřebný tvar. Na 7-segmentových displejích lze zobrazit arabské číslice 0-9, na 6-segmentových pak také všechny velké písmena arabské abecedy. Struktura 7-segmentovky je zobrazena na obr... Kvůli úspoře vývodů jsou obvykle anody popř. katody všech segmentů spojeny a vyvedené na jeden společný vývod (COM) a zbylý vývod každého segmentu je vyveden na samostatný vývod (a-f). Chceme-li rozsvítit daný segment, je nutné přivést potřebné napětí na vstupy tak, aby dioda uvnitř segmentu byla zapojena v propustném směru. Při zapojení se společnou katodou to odpovídá přivedení napětí (obvykle +5V) na některý ze vstupů a-f a společné země na vstup COM. Při zapojení se společnou anodou je pak orientace napětí opačná, +5 V na COM a zem na a-f. g f a b g f a b f a b f a b g g e c e c d d COM e d c COM Obrázek.: Struktura 7-segmentových displejů, zapojení se společnou katodou a anodou. e d c Připojení jednoho zobrazovače (jedné číslice) k MCU lze provést několika způsoby. Prvním z nich je zapojení tzv. přímo, tj. připojením každého zobrazovacího segmentu na samostatný výstup mikrokontroléru a přímo rozsvěcet/zhasínat jednotlivé segmenty. Tento způsob vyžaduje, aby počet výstupů byl stejný jako počet vstupů displeje, tedy 7 pro jednu číslici. alším z možných způsobů je použití dekodéru BC/7 segment. Takto se počet 7 nutných výstupů redukuje pouze na (číslo v BC kódu). Při použití více číslic však i v druhém zapojení úměrně narůstá 7
. POPIS VÝVOJOVÉHO KITU A JEHO KOMPONENT množství nutných pinů, a proto se používá tzv. časového multiplexního řízení. Zobrazovací prvky (jednotlivé číslice) se rozvěcují jeden po druhém tak, že v daný okamžik svítí vždy pouze jeden a na něm pouze ty segmenty, které dohromady tvoří požadovanou číslici. Předpokládáme-li, že 50 snímků za vteřinu je lidským okem vnímáno jako plynulý pohyb, pak pokud bude přepínání dostatečně rychlé, člověk nepostřehne změnu. Takto je potřeba 7 (popř. ) pinů pro řízení jednotlivých segmentů a na každou číslici, který řídí její rozvěcení/zhasnutí. Tento pin je připojen na vývod COM. Při použití např. číslic je tak potřeba pinů, použijeme-li BC dekodér pak pouze 8. Kromě výše popsaných zapojení lze použít i specializované obvody, které obsahují jistou logiku pro zobrazení číslice a komunikace s nimi probíhá přes sériovou linku popř. paralelní rozhraní. ále lze použít speciální latch registr, který bude předřazený BC dekodéru a do kterého se jednou zapíše požadovaná hodnota a není tak nutné obnovovat hodnoty na vstupu displeje. Zástupcem takového obvodu, který kombinuje BC dekodér s registrem je např 53. Více o těchto zapojeních viz. [9]. Konkrétní způsob realizace zapojení je v kapitole 5.5,.3 Maticová klávesnice Maticová klávesnice není nic jiného než sada několika tlačítek. Typickou vlastností je zapojení této sady do matice. Jednotlivé tlačítka nejsou připojeny k MCU každé zvlášt, připojeny jsou řádky a sloupce tlačítkové matice. Toto uspořádání omezuje počet obsazených GPIO mikrokontroléru z n nutných pro přímé zapojení na n. Z toho plyne, že použití maticového zapojení je vhodné pro 9 a více tlačítek (matice 3x3). Snížení počtu nutných pinů si však bere jako daň složitější programovou obsluhu, než v případě přímého připojení tlačítek. Jelikož jsou tlačítka uspořádána do matice, lze každé tlačítko identifikovat pomocí řádkového a sloupcového vodiče. Budeme-li uvažovat, že sloupcové vodiče jsou výstupy z MCU a řádkové vodiče naopak vstupy je princip detekce následující:. Na všechny sloupcové vodiče je přivedena log. 0.. Provede se procházení jednotlivých sloupců, v každém kroku je na jeden ze sloupcových vodičů přivedena log., ostatní zůstanou v log. 0. 3. Pro každý aktivovaný sloupcový vodič se sleduje hodnota řádkových vodičů. Pokud se na některém z nich objeví log., je tlačítko příslušející aktivnímu sloupci a detekovanému řádku aktivní. Pro korektní funkci je nutné na řádkové vodiče připojit snižovací (pull-down) odpory. Alternativně je možné připojit zdvihové (pull-up) odpory a místo log. přivádět na sloupcové vodiče postupně log. 0 a detekovat výskyt log. 0 na řádkových vodičích. Jelikož u mechanické klávesnice nezáleží na polaritě zapojení, lze obě předchozí varianty použít také s prohozením řádkových a sloupcových vodičů, kdy jsou logické úrovně přiváděné na řádky a odečítány ze sloupců. Jsou 8
. POPIS VÝVOJOVÉHO KITU A JEHO KOMPONENT zde tedy celkem možné způsoby zapojení klávesnice, které jsou ekvivalentní, co se funkčnosti týče. alším problémem který vzniká nejen u maticových klávesnic, ale u mechanických tlačítek jako takových, jsou zákmity. K těm dochází vlivem mechanické konstrukce kontaktů při přechodu z resp. do klidové úrovně. Při jediném sepnutí tlačítka uživatelem dojde k několika zákmitům mezi stavy sepnuto/rozepnuto a mikrokontroléru se tak jeví, že tlačítko bylo stisknuto opakovaně. Tyto jevy lze odstranit softwarově nebo hardwarově. Popis ošetření obou způsobů, stejně tak jako schématické znázornění zapojení a obsluhy klávesnice jsou v [9]. Způsob zapojení a ošetření zákmitů na modulu klávesnice je řešeno v kapitole 5.6.. LC displej Znakové LC displeje jsou tvořeny maticí bodů z tekutých krystalů a řízené řadičem H780 od firmy HITACHI nebo jeho jiným funkčním ekvivalentem. Takové jsou k dostání v mnoha různých provedeních od mnoha různých výrobců. Jednotícím prvkem je však právě zmíněný řadič, který obsluhuje jednotlivé body na displeji. Komunikace s ním probíhá pro všechny typy těchto displejů po stejném typu sběrnice a z pohledu komunikace je tak nepodstatné, jak je řešeno samotné zobrazení znaků. Tento princip zjednodušuje obsluhu displeje v mikrokontroléru a oproti řešení bez řadiče poskytuje značnou úsporu vodičů a vstupně/výstupních pinů. Zobrazení a organizace znaků může být různá. Lze nalézt displeje s jedním, dvěma či více řádky a s osmi, šestnácti ale i s čtyřiceti znaky na řádek. Pro všechny tyto typy probíhá komunikace stejným způsobem avšak pro každý displej je vhodné podívat se ještě do katalogového listu výrobce kvůli specifickým požadavkům na zobrazení. Můžeme se např. setkat s displeji, které se chovají tak, jako by měli větší počet řádků s nižším počtem znaků. Konkrétním případem tohoto chování je displej WH60A společnosti WINSTAR. Ačkoliv se jedná o řádkový 6 znakový displej, chová se jako řádkový displej s osmi znaky na řádek. Tento aspekt je třeba zohlednit při komunikaci s displejem. Jedná se však pouze o zápisy na jiné místo v paměti RAM displeje, komunikační rozhraní jako takové je stejné. Výše zmíněná pamět RAM má šířku 8 bitů a slouží pro uložení aktuálně zobrazovaných dat, její obsah je zobrazován na displeji. Každému uloženému číslu 00h až FFh odpovídá jeden zobrazovaný znak. Samotná podoba znaků je pak uložena v pamětech CGROM a CGRAM. V CGROM jsou znaky dle použité znakové sady, tvar těchto znaků nelze měnit a jsou dány výrobcem. Konkrétní tvary znaků a jejich adekvátní kódy je třeba opět vyhledat v katalogovém listu výrobce. Znaky uložené v paměti CGRAM naopak měnit lze a je možné zde uchovat max. 8 znaků. Toho lze využít pro znaky specifické pro českou abecedu (ty s diakritikou), bohužel její velikost není dostačující k uložení všech znaků a je proto nutné průběžně je měnit podle potřeby zobrazení. Samotná komunikace s displejem probíhá pomocí čtyř nebo osmibitové datové 9
. POPIS VÝVOJOVÉHO KITU A JEHO KOMPONENT sběrnice a několika signálů řídicí sběrnice. Čtyřbitový režim šetří počty vývodů MCU, každý byte však musí být do displeje poslán nadvakrát po půlslovech a komunikace je tak zhruba dvakrát pomalejší než při použití plné šíře. Řídicí sběrnici tvoří 3 signály, RS, R/W a E. Signál RS určuje, zda jsou přes datovou sběrnici přenášena data nebo instrukce. Instrukcí je celkem 9, např. vymazání displeje, posun kurzoru atd. Jejich kompletní přehled lze nalézt v [9]. Signál R/W určuje, zda data do displeje zapisujeme nebo z něj čteme. Režim čtení slouží pro čtení aktuální pozice kurzoru nebo vyčtení uložených vlastních znaků. Tento režim však není nutné využívat, veškeré stavové informace lze mít uloženy uvnitř MCU (a většinou tomu tak i bývá). Signál E(enable) udává, kdy jsou data platná a má je řadič přečíst. Platnost dat určuje sestupná hrana signálu. Kromě vodičů datové a řídicí sběrnice jsou na displeji ještě jiné vodiče. Význam všech vodičů je shrnutý v tabulce 5.3 popř. v knize [9]. 0
Kapitola 5 Konstrukce zapojení a implementace knihoven V této kapitole jsou podrobně rozebrány konstrukční specifika jednotlivých navržených modulů a také je zde popsána knihovna fikit, která vznikla pro ovládání periferních desek. Knihovna fikit není knihovnou jako takovou, jedná se spíše o sadu funkcí ve zdrojových souborech fikit.c a fikit.h, které je třeba přidat do každého projektu a je pak možné funkce zde implementované používat. Tento způsob je zvolen s ohledem na jednoduchost použití není třeba hledat nastavení ve vývojovém prostředí, které by knihovnu při překladu přilinkovalo. Navíc je kód viditelný pro uživatele kitu a ti tak mají možnost jej volně měnit. Pro návrh všech částí vývojového kitu byl využit vývojový systém Eagle. Ten umožňuje vytváření jak schémat navržených obvodů, tak i desek plošných spojů. Z takto vytvořených podkladů lze vytvořit fyzickou realizaci PS. Systém Eagle obsahuje knihovny se spoustou součástek, některé z použitých však v knihovnách nalézt nelze. V takových případech byly nové součástky navrženy a přidány do knihoven. Všechny desky jsou navrženy jako dvojvrstvé, a to především z důvodu úspory ceny při jejich výrobě. Obecně u výrobců platí pravidlo, čím více vrstev, tím větší cena. Takto navržené desky lze navíc vyrobit v domácích podmínkách, takže kdokoliv, kdo by chtěl kit využít, si jej může podle přiložených podkladů vyrobit. Při návrhu zapojení desek jsem vycházel především z katalogových listů pro jednotlivé součástky. Systém také umožňuje vytvářet 3 modely navržených desek. Tato funkčnost není součástí základní verze, jedná se o plugin, který doplní Eagle o knihovny vzhledů součástek a spojů. Pomocí tzv. user language programu, což je skript napsaný ve formátu specifickém pro systém Eagle, je vygenerován textový soubor s příkazy pro kreslící systém POV-Ray. Samotný skript byl vytvořený komunitou kolem systému Eagle 3. Vytváření modelů se hodí především před samotnou výrobou desek, lze si takto ověřit např. správné rozvržení součástek, viditelnost potisků či různé jiné detaily, jako je tvar výsledné desky atp. Zmíněné zdrojové soubory knihovny fikit, stejně tak jako schémata a výrobní podklady pro všechny PS jsou součástí přiložených souborů. Schémata lze navíc nalézt v příloze této práce.. www.cadsoft.de. www.povray.org 3. www.matwei.de
5. Modul základní desky 5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN 5.. PIC Základní deska s mikrokontrolérem PIC je osazena konkrétním typem PIC8F6K0, popsaným v kapitole... Použita je varianta v pouzdře PIP, a to z toho důvodu, aby bylo možné jednoduše vyměnit procesor za jiný, pinově kompatibilní, např. PIC8F60 nebo jiný, který má i USB rozhraní. Pro účely výměny by bylo nejvhodnější umístit MCU do zkušební aretační patice s páčkou. Takto by bylo možné vyměnit procesor bez starosti z ohnutí pinů v důsledku vytahování procesoru z patice. Její cena je však příliš vysoká, a proto byla jako vhodná patice zvolena obyčejná IL patice pro 0 pinová pouzdra IP. Na desce je zhotoven programátor PICKIT. Návrh vychází ze schématu [], avšak jedná se o upravenou verzi. Především nejsou osazeny paměti, které umožňují originálnímu programátoru programování stiskem jednoho tlačítka. V mém návrhu se vychází z předpokladu, že programování se bude vždy provádět z PC a následně zůstane program uvnitř FLASH paměti mikrokontroléru. Programování přes PICKIT řídí mikrokontrolér PIC8F550, firmware pro něj je volně přístupný ze stránek firmy Microchip. Na desku je třeba osadit tento mikrokontroler s již nahraným firmwarem, jelikož zde chybí ICSP konektor pro programování tohoto procesoru. Změnu firmwaru lze po prvním nahrátí provádět již přímo přes USB port, avšak prvotní programování musí být provedeno externím programátorem. alší změnou oproti originálu je použití jiného typu operačního zesilovače, který generuje napětí během programování. V originálním schématu je použit OZ MCP600U který je nahrazen ekvivalentním typem TLC7. ůvodem této změny je nedostupnout originálu v době návrhu. Ostatní komponenty odpovídají originálu. Takto navržený programátor lze používat zcela stejně, jako originální programátor, tedy také pro debugování z prostředí MPLab. Kromě programování přes USB konektor a programátor PICKIT (byl použit USB.0 konektor typu B) je zde možnost programování externím programátorem přes konektor RJ a standardní ICSP konektor. Tyto konektory jsou standardy pro programátory od Microchipu a je tak možné použít jakýkoliv programátor, který má jedno z těchto rozhraní (např. IC nebo PICKIT3). esku je možné provozovat ve standalone režimu, kdy se k napájení všech komponent, a to vč. připojených periferních modulů, použije její USB konektor. K výběru tohoto režimu je třeba jumpery propojit konektory JP a JP, označené jako Standalone. Pokud propojky nejsou spojeny, je třeba připojit externí zdroj napájení, např. modul napájecí desky 5., ke konektoru power connector. Kromě těchto propojek je zde ještě důležitá propojka nazvaná power select. Ta vybírá napětí pro mikrokontrolér mezi 3, 3 V a 5 V a je třeba ji zapojit dle aktuálně použitého MCU. Pro PIC8F6K0 musí být tato propojka v pozici 3, 3 V. Napájení mikrokontroléru během programování je dodáváno vždy skrze PIC- KIT programátor, tedy z USB portu (a to at už je zvolen standalone režim nebo není). Programování tak není závislé na tom, zda je či není obvod již napájen. Toto napájení je dodávané i během debugování a případně lze v MPLab zvolit,
5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN zda obvod napájet přes PICKIT či nikoliv. Přítomnost programovacího napětí je indikováno žlutou led diodou. Pokud je toto napájení aktivní, nelze přistupovat k portům RB6(PGC) a RB7(PG) přes konektory desky. Tyto porty jsou využívány pro programování a debugování přes PICKIT, a proto vždy, když má být obvod debugován musí být žlutá led dioda aktivní. alší indikační diody slouží jako indikátory přítomnosti napětí z USB portu(zelená) a právě probíhajícího programování/debugování (červená smd). Analogový multiplexor 7HC053 je zde kvůli odpojení portů RB6 a RB7 od zbytku obvodu, tj. i od připojených modulů, v průběhu programování a debugování, aby tyto neovlivňovaly zde připojené periferie. Také přepíná mezi programovacím napětím a napětím neprogramovacím, tedy tím, kterým je MCU napájen, pokud nesvítí žlutá led. Pro připojení modulů s periferiemi k desce slouží konektory typu a typu (viz. kapitola..). Celkem je deska osazena šesti konektory typu po okrajích desky a jedním konektorem typu. Pro otestování funkčnosti je na desce červená LE, připojená k portu RC přes IP switch (musí být v pozici ON pro přístup k LE) a také tlačítko, připojené k portu RB0. Na těchto prvcích lze otestovat funkčnost naprogramovaného MCU bez připojených ostatních periferií. Otvory v desce jsou nachystány pro přišroubování distančních sloupků. Ty jsou nutné kvůli spodnímu konektoru, kterým se deska připojuje k napájecí desce. Bez použití distančních sloupků by deska nestála a takto lze navíc desku k napájecímu modulu přidělat napevno. Obrázek 5.: 3 model modulu základní desky s mikrokontrolérem PIC8F6K0 5.. ATMega U této základní desky je použit mikrokontrolér ATMega6PA, popsaný v kapitole... Opět je zde zvolena varianta v 0 pinovém pouzdře PIP. Návrh desky vychází z desky pro mikrokontroléry PIC (5..) a i ze zobrazených 3 modelů je patrné, že jsou si desky velmi podobné. Tato podobnost vychází z univerzálnosti celého kitu, rozhraní musí být na základních deskách vždy stejné tak, aby šlo periferní moduly připojit vždy stejným způsobem. Jako programátor je osazen klon programátoru AVR JTAG ICE [5], které vyráběla firma Atmel. nes již tento programátor firma nenabízí, místo něj mají 3
5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN v portfoliu novější AVR JTAG ICE mkii []. Verze nepodporuje nejnovější mikrokontroléry, ale použitý typ ATMega6PA podporovaný je a lze jej tímto programátorem programovat i ladit. Originální programátor se k PC připojuje pouze přes linku RS-3. Tento způsob je dnes již nevhodný, u většiny notebooků tento port nelze nalézt a bylo by tak nutné připojovat konvertor USB/RS-3. Z toho důvodu je tento převodník osazen přímo na základní desce ve formě čipu FT3RL [8] výrobce FTI. esku je tak možné připojit pomocí USB konektoru typu B. Samotný programátor se pak sestává z mikrokontroléru ATMega6A, který řídí nahrávání a debugování programu pomocí JTAG rozhraní k vývojovému MCU. Firmware pro programátor je opět nutné nahrát ještě před vložením čipu do obvodu, protože zde není vyveden žádný z programovacích konektorů k tomuto mikrokontroléru. Opět je zde ponechána možnost obejít programování přes výše zmíněný programátor a použít konektory pro připojení externích programátorů/debugerů. efacto standardem u Atmelu jsou konektory x3 a x5 pinů, tzv. konektory pro ploché kabely, které využívá např. i zmíněný AVR JTAG ICE mkii []. Propojky a ostatní součásti desky mají stejnou funkci jako u základní desky s PICem 5.. a stejně je tomu i u konektorů typu a pro připojení periférií. Signalizační diody mají také stejnou funkci, jejich popis lze navíc nalézt i na desce samotné. Oproti desce PIC jsou zde použity analogové multiplexory 7HC053, a to z toho důvodu, že počet pinů, nutných pro programování (a tudíž těch, které je potřeba odpojovat od zbytku obvodu v průběhu programování), je vyšší. Vzhledem k tomu, že použitý mikrokontrolér může pracovat jak s napětím 3,3 V tak s napětím 5 V (rozmezí je,8 V - 5,5 V), propojka pro volbu napětí může být v obou polohách. Obrázek 5.: 3 model modulu základní desky s mikrokontrolérem ATMega6PA 5. Modul napájecí desky Napájecí deska je určena pro dodání napájení základní desce v případě, že není na základím modulu zvolen standalone režim, viz. 5... Přes základní desku je pak dále napájení rozvedeno do ostatních připojených modulů přes konektory typu a. Pro zdroj napájení lze zvolit jednu ze tří možností: USB, externí zdroj a baterie. Volba musí být provedena použitím jumperu, kterým se spojí patřičná propojka na
5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN konektoru power selector. Jako USB konektor je použit konektor USB.0 typu B. Pro připojení 9 V baterie slouží držák, do kterého se baterie vloží. Jako externí zdroj lze využit jednak napájecí souosý konektor o průměru, mm, ale také konektor pro přišroubování kabelů, např. z laboratorního zdroje. Polarita zapojení je naznačena na PS a musí být dodržena. Při volbě napájení z USB lze přes power konektor odebírat napětí 5 V a 3,3 V. U ostatních režimů pak také napětí 9 V za předpokladu, že je toto napájení dodáno na vstup modulu, což je při použití 9 V baterie zajištěno. Při použití externího zdroje je třeba volit takový zdroj, který poskytuje právě toto napětí. Modul je vybaven regulátory napětí pro napětí 5 V a 3,3 V, které mění napětí baterie a případně externího zdroje na napětí použitelné ostatními moduly. Jedná se o regulátory AP7 firmy iodes Inc. [7], které omezují maximální proudový odběr na A. Maximální proudový odběr z modulu odpovídá této hodnotě v případě, že je jako vstup zvoleno externí napájení či baterie. Při použití USB konektoru je maximální proudové zatížení omezeno USB sběrnicí. Na power konektoru jsou dále vyvedeny komunikační signály USB sběrnice, které jsou připojeny pouze pokud je připojen USB kabel k USB konektoru. Tyto signály lze pak využít na základní desce připojením k mikrokontroléru. eska je obsazena ještě několika pasivními prvky. Elektrolytickými kondenzátory pro regulátory napětí, jejichž velikost je volena dle datasheetů k těmto regulátorům, ochrannou diodou pro baterii a LE diodami pro indikaci přítomnosti napětí. Tabulka 5.: 3 model modulu napájecí desky. 5.3 Modul LE diod Modul s led diodami slouží k prvotnímu seznámení uživatele kitu s výstupními porty mikrokontroléru a také jako např. indikátor stavu. Je osazen osmi led diodami v smd pouzdře 0805. Tento počet jsem zvolil jako vhodný pro 8 bitové mikrokontroléry, protože jejich výstupní porty bývají často právě této šířky. Lze jej připojit na kterýkoliv z konektorů typu (viz. příloha H) a zpřístupnit tak jeden z portů. eska je pro tyto účely osazena dvojřadou dutinkovou lištou s roztečí, 5 mm, tak jak je popsána v kapitole... ále je ke každé diodě do série připojen rezistor velikosti 330Ω, který omezuje maximální proud tekoucí diodou na 5mA (napájecí napětí je 5V). Pro umožnění činnosti diod jak s mikrokontroléry 5
5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN pracujícími s napětím 3, 3V tak s těmi, které pracují s napětím 5V, je každá dioda ovládána unipolárním tranzistorem typu N v smd pouzdrech SOT3. Spínáním těchto tranzistorů pak dochází k rozsvěcení/zhasínání dané LE. Odpor R S, mezi drain a source tranzistoru, je dle katalogového listu max. 5Ω, z toho důvodu byl při výše uvedeném výpočtu proudu zanedbán. Schématické zapojení desky je v příloze F. Obrázek 5.3: 3 model desky modulu led diod 5. Modul tlačítek Modul s tlačítky slouží jako jednoduché vstupní rozhraní pro mikrokontrolér. Celkem je na desce osazeno 8 tlačítek s smd kontakty. Tento počet je opět zvolen z důvodů uvedených v kapitole 5.3. Na portu je třeba zvolit napájecí napětí pomocí jumperu mezi volbami 3, 3 V a 5 V. Toto napětí se pak objeví na vstupu mikrokontroléru po stisku tlačítka, je tedy třeba jej volit s ohledem na použitý mikrokontrolér na základní desce. V klidovém stavu nestisknutého tlačítka je na všechny vstupy mikrokontroléru (připojené k modulu konektorem typu ) přiveden potenciál země, tedy log. 0. To zajišt uje snižovací pull-down rezistor, připojený ke každému tlačítku. Proud, který je dodáván po stisku tlačítka, je omezen rezistorem s hodnotou 70Ω na 7 ma nebo 0 ma pro zvolené napětí 3, 3 V nebo 5 V. Schématické zapojení desky je v příloze F, pohled na osazenou desku na obrázku 5.. Tabulka 5.: 3 model desky modulu tlačítek. úroveň log. na výstupních pinech 6
5.5 Modul 7 segmentovky 5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN Jako displej, použitý v tomto modulu, slouží 7 segmentovka se čtyřmi číslicemi s desetinnou tečkou. Zapojení na tomto displeji je se společnou katodou a je určen pro řízení v časovém multiplexu. Konkrétní typ použitého displeje je Kingbright CC56-EWA, stejně však poslouží jakýkoliv jiný displej se stejným zapojením a parametry. Maximální povolený proud segmentem displeje je 30 ma. Pro dodržení tohoto parametru jsou předřazené omezující odpory s hodnotou 80 Ω, které pro použité napájecí napětí 5 V omezí maximální proud na 7 ma. Pro připojení displeje slouží pinů, 7 pro ovládání segmentů a-f, pro katodu každé číslice a jeden pro desetinnou tečku za číslicí. Aby bylo možné displej připojit pomocí jednoho konektoru typu, tedy pomocí maximálně 8 pinů (tj. šířky jednoho portu), je modul osazen dekodérem BC/7 segment v integrovaném obvodu C53B a také dekodérem z v obvodu C555B. První z nich omezí počet pinů ze 7 na pro ovládání segmentů a-f, druhý pak piny společné katody na. Pin ovládající desetinou tečku je připojen přes bipolární tranzistor, který umožní ovládání i procesorům, pracujícím s napětím 3, 3 V. Celkový počet pinu je snížen na 7 a modul lze připojit jedním konektorem. Použité unipolární tranzistory (viz. schéma G) zde slouží pro rozsvícení číslice na základě výstupu z dekodéru z. K ovládání displeje lze využít funkce z knihovny fikit. Nejdříve je třeba vždy inicializovat displej pomocí funkce segment7_init. Ta nastaví PORTB jako výstupní a vynuluje jej. Pokud je displej připojen k jinému portu, je toto třeba změnit v fikit.h souboru. Poté již lze využívat funkci pro zobrazení znaku segment7_disp a dále funkce pro zobrazení celého a desetinného čísla s přesností na jednu platnou číslici. Jedná se o funkce segment7_put_short a segment7_put_float. Obrázek 5.: 3 model desky modulu 7 segmentového displej 5.6 Modul klávesnice Jako maticová klávesnice byla zvolena klávesnice velikosti x tlačítek. V této kombinaci je třeba sloupcových a řádkových vodičů, tedy celkem 8, což je šířka konektoru typu. Samotnou klávesnici tvoří pouze tlačítka zapojená maticově 7
5. KONSTRUKCE ZAPOJENÍ A IMPLEMENTACE KNIHOVEN s konektorem pro připojení. Z toho důvodu byla vytvořena PS tvořící redukci mezi konektorem klávesnice a konektorem typu, na které jsou k vývodům řádků klávesnice připojeny čtyři snižovací odpory velikosti 0 kω. Matice je tedy v zapojení, kdy se na sloupcové vodiče přivádí postupně log. a vyčtení hodnot se provádí z řádkových vodičů(tento způsob popisuje kapitola.3). ůvod pro použití pull-down odporů je ten, že není potřeba řešit, s jakým napětím připojený mikrokontrolér pracuje. Toto by bylo nutné řešit při použití pull-up odporů. Také přivádění log. na daný sloupce je z programátorského pohledu přirozenější, vždyt log. je považována za aktivní úroveň. Obrázek 5.5: 3 model desky modulu maticové klávesnice 5.7 Modul LC displeje Jako displej je použitý dvou řádkový displej s 6 znaky na řádek. Tento konkrétní typ nese označení GM60A a jedná se o levný displej čínského výrobce Xiamen Ocular [7]. Byl zvolen kvůli své nízké ceně a také proto, že byl aktuálně dostupný. Lze jej však nahradit jakýmkoliv pinově kompatibilním displejem. Jeho ovládání je standardní, odpovídající popisu v kapitole.. isplej nabízí šestnácti pinové rozhraní, kde jednotlivé piny jsou zapojeny dle tabulky 5.3. K PS modulu je displej připojen v zapojení čtyř bitové sběrnice. Bity B0-B3 datové sběrnice jsou spojeny se zemí, stejně tak jako R/W pin řídicí sběrnice. Z toho důvodu nelze z displeje data číst, lze do něj pouze zapisovat. Všechny ostatní piny datové i řídicí sběrnice jsou připojeny ke konektoru typu přes bipolární tranzistory. Toto zapojení je zvoleno z toho důvodu, aby bylo možné displej ovládat jak z MCU využívajících 3,3 V úrovně napětí tak z těch, které používají 5 V. Pro regulaci jasu displeje je připojen trimr. Pro regulaci podsvícení je katoda LE diody přivedena k pinu 3 portu B. Tento je na základní desce s mikrokontrolérem PIC připojen k PWM modulu a je tak možné řídit intenzitu podsvětlení nastavením pulsně šířkové modulace. U jiných základních modulů je třeba pulsně šířkovou modulaci generovat softwarově, pokud ovšem není na daném typu MCU také tento pin určen pro PWM modul (u AVR mikrokontroléru tomu tak není). Na desce jsou dále připojeny čtyři tlačítka, které mohou sloužit např. pro listování skrze menu, zobrazené na displeji. Implementace této funkčnosti je ponechána 8