OK1UFC
Kontroléry PIC od Microchip | Poslední aktualizace 2021
Úvod Na jedné ze stránek jsem zmínil použití kontroléru, který jsem vytvořil pomocí desky Arduino nano. Budu upřímný, příliš projektů jsem s Arduinem nerealizoval a mám své důvody: 1. Před Arduinem jsem používal své desky s různými procesory (ATmega8, ATmega88, PIC16F877, ...) a různým způsobem programování, vč. bootloaderů. 2. Většinu přístrojů (měřáky, tunery, spínače) jsem dokázal vyrobit pomocí vynikajících čipů PICAXE. Tato řešení jsem popsal v předchozích článcích a znovu zdůrazňuji výhody: - existence vynikajících programovacích editorů - krásný simulátor kontroléru - jednoduché programování bez nutnosti použít programátor - bohatá sada čipů PICAXE s různým počtem I/O pinů a s vestavěným UARTem pro sériovou komunikaci. 3. Určitá zmlsanost daná historicky. Dávno před Arduinem jsem byl zvyklý na vývojové prostředky, které poskytovaly vysoký komfort při programování, snadnou editaci a hlavně simulátory, pomocí kterých jsem si svůj program snadno vyzkoušel např. ve vlaku nebo na nudné poradě lidí, kteří si neváží času druhých. Proto jsem tady popsal tento jediný příklad, který ukazuje na velice komfortní způsob programování kontrolérů PIC (mám od stejného autora více kompilátorů, také pro AVR) pomocí nástrojů https://www.oshonsoft.com/pic.html Příklad - ovládání dálkového tuneru přes sériový port Můj oblíbený příklad. Dálkově ovládaný tuner je jednoduchý a spolehlivý. Pokud potřebujeme symetrický tuner ke krátkovlnné anténě, stejně si ho musíme vyrobit sami. Aplikace a obsahy pamětí běží na PC a popsal jsem ji mnohokrát. V přístroji běží program v mikrokontroléru, který pouze přijímá data ze sériového portu. Data obsahují 3 bajty, kde jedním bajtem se nastavuje 256 hodnot indukčnosti, dalším 256 hodnot kapacity a posledním konfigurace LC nebo CL. Ve výprodeji firmy Hadex jsem za necelou stokorunu koupil několik čipů PIC 16F877 ve 40 pinovém DIL pouzdru, takže počet pinů na spínání relé mám víc, než dost. Program Program pro mikrokontrolér je jednoduchý. Napsal jsem ho asi za čtvrt hodiny v Basicu a náhled lze stáhnout ve formátu pdf zde. Editor Oshon software má celkem normální hezký editor, dobře se s tím dělá. Editor je přehledný: Vpravo nahoře je tmavé menu, ze kterého lze zdrojový kód přeložit, přeložit a uložit, případně přeložit, uložit a natáhnout do simulátoru kontroléru a ladit.
Simulátor Simulátor, to je parádička. Náhledy do registrů procesoru považujme za samozřejmost. Zaměřme se na hlavní menu. Že se simulace nechá odstartovat, krokovat, zastavit, to také samozřejmě předpokládáme. Podobně, že se nechá celá řada parametrů nastavovat (Options). Nástroje Tady vidíme velice bohaté vybavení - viz vpravo | Zvýraznil jsem si tři z mnoha nástrojů, které jsem použil při odladění svého programu při cestě vlakem.
Softwarový terminál na připojení k UARTu kontroléru. Na UART terminálu si nastavíme, na které špičky připojíme RX a TX linku, nastavíme přenosovou rychlost a můžeme začít komunikovat s mikrokontrolérem. UART terminál je propojený s editorem, takže zrovna prováděný řádek v Basicu je zvýrazněný červeně.
PINy mikrokontroléru potřebuje i začátečník a neprogramátor sledovat z pohledu jejich logické úrovně. Hned vidíme, jak nás program poslouchá. V předchozím obrázku jste si všimli, že jsem do kontroléru poslal 3 bajty dat - FF FF 01 (dekádicky 255 255 001). První bajt mi rozsvítil 8 pinů portu B (RB0 až RB7), druhý bajt mi rozsvítil čtyři piny (bity) portu A (RA0 až RA3). Port A má málo pinů. Proto jsem stejnou hodnotu bajtu poslal taky do portu D a rozsvítil jsem 4 piny RD4 až RD7. Vidíte, nemusel jsem ani přemýšlet o tom, zda budu bity v bajtu nějak posouvat. Prostě jsem nakonfiguroval na každém portu jen 4 piny jako výstupní, viz editor, řádky číslo 26 až 34 a celý bajt jsem šoupnul do obou portů - viz řádky 67 a 68. Ještě jsem šoupnul celý bajt3 do portu C (řádka č. 71), ale jen jeden pin RC0 je konfigurován jako výstupní. Používám ho k přepínání sedmnáctého relé, které nastavuje na tuneru konfiguraci LC nebo CL. Všimněte si, že jsem nepotřeboval žádný I/O expandér a nepoužil jsem žádnou složitou operaci pro práci s bity v bajtech, aby mikrokontrolér za stovku spínal tak, jak má. |
LED Board LED Board je úplně prostá a jednoduchá sonda. Její HW obdobu jsem vyfotil a uvedl jako čtvrtý obrázek na úvodní stránce. Jde o jednoduchý nástroj, který nám někdy zpříjemní ladění. Obsahuje ho i sada nástrojů v simulátoru. Použil jsem ho rovněž při ladění ukázkového programu a sice na zobrazení hodnot 4 bitů portu A a portu D, abych je viděl hezky pod sebou - viz obrázek vpravo. Ostatní nástroje simulátoru Prográmek použitý jako příklad je extrémně jednoduchý. Proto uvedu na obrázku dole příklady dalších užitečných nástrojů: osciloskop, grafický LCD displej, dvouřádkový LCD modul, simulátor snímače teploty se sériovým výstupem, simulátor krokového motoru a prohlížeč hodnot použitých proměnných. |
Závěr 1. Opět jste mohli nahlédnout pod pokličku do mé kuchyně. Amatérské přístroje si bez mikrokontrolérů nedovedu představit. Jsem si vědom toho, že každý dělá s tím, co má k dispozici a čemu věnoval čas k získání dovedností umět s tím dělat. Proto předpokládám, že nemá smysl na amatérských stránkách tyhle věci popisovat, když je jich plný Internet. Mým cílem bylo potřebné aplikace vyřídit rychle, jednoduše a s vysokým komfortem vývoje. 2. Čipy PIC (Microchip) jsou u mě zastoupené tam, kde potřebuji větší počet I/O pinů, oblíbený je PIC16F877A. Čipy PICAXE slouží v celé řadě mých přístrojů. Ve starších přístrojích běží několik ATmega 8 (ATmega88) a v jedné aplikaci ATmega 328, vždy jsem používal AVR kontroléry s bootloaderem. Poznámky 1. Na cestovním notebooku mám nainstalované celkem 3 kompilátory (IDE a simulátory) a každý mi na SSD disku sežere necelých 6 MBajtů: 2. Editor vytváří soubor s příponou .bas, po kompilaci nám kompilátor vytvoří soubor .hex, který vypalujeme do flash paměti mikrokontroléru a dále soubory .asm a .lst. Takže v jednom zkompilovaném projektu najdeme např. takové soubory: 3. Obsah souborů lze znázornit a prohlédnout. Zde jsou odkazy na obsah souborů našeho školního příkladu: bas asm lst a hex. 4. Nejsem programátor. Ani jím nechci a s ohledem na věk ani nemohu být. Proto jsem volil v mých řešeních jednoduchost, časovou nenáročnost a určitý komfort. Přeci jen potřebuji měřit, ovládat, vysílat ....
TU 73, Mira, ok1ufc