HW/IT/Microcontrollers/PIC16F630/manual

“Manual” k programátoru (debuggeru) PICkit 3 od Microchipu

  • Zde se budou objevovat základní manuál, informace a pokroky s prací s tímto programátorem v kombinaci s mikročipem PIC16F630

Základní popis:

  • Jedná se tedy o PICkit 3 In-Circuit Programmer/Debugger, což je zřejmě jejich (Microchipu) nejnovější lowcost-platforma (odkaz na oficiální stránky)
  • Základní výhody, které píšou, že to má:
    • Low cost
    • Minimum dodatečného hardware nutného pro debug
    • Nejsou potřeba drahé sockety nebo adaptéry
  • Dále píšou, že se jedná o zařízení výhradně pro vývoj a výzkum, nikoli komerční použití, což není náš případ
  • Programátor je jednoduché používat ve spojení s MPLAB X Integrated Development Environment (IDE), což je tedy integrované prostředí pro Win i Linux, které výrazně usnadňuje práci s programátorem (zase tak intuitivní to podle mě není ale dají se najít pěkné návody, viz dále)
  • IDE je samozřejmě normálně freeware ke stažení
  • Součástí balení (tedy alespoň toho prozatímního) je programátor PICkit3 společně s USB3 kabelem a něco, čemu říkají “Development kit”, což je vývojová deska, obsahující mikrokontroler PICXXXX [doplnit!!], mimo jiné taky nějaká tlačítka, ledky a display - jedná se o součástku, která se hodí pro naučení se s mikrokontolery a nějaké základní aplikace - řekl bych skoro “na hraní” - pro naši aplikaci je deska nevhodná

Základní ovládání [Mira]:

  • Nejprve jsem tedy nainstaloval IDE na svůj notebook, přičemž IDE má několik součástí (verze se mohou lišit):
    1. MPLAB driver switcher (to zatím netuším k čemu je, ale zdá se, že pro základní provoz nemá většího významu)
    2. MPLAB IPE v3.50 (IPE) - pomocí tohoto se nastavuje spojení mezi programátorem a mikrokontrolerem a může být pomocí toho nahrán/smazán/přečten/ověřen program na mikrokontroler
    3. MPLAB X IDE v3.50 (IDE)- tohle je již samotné programovací IDE - kde tedy může být psán program, předpokládám, že v libovolném jazyce (já to tedy vidím na Cčko - které se ale musím naučit :) ), umožňuje poměrně příjemnou práci, řekl bych, a taky automaticky kompiluje kód do .hex file, čemuž jedinému rozumí mikrokontroler. Ve výsledku, ale může být podle mě použito více věcí, přizpůsobených pro programování mikrokontrolerů, co znáš a v čem už umíš programovat.
  • Abych začal, zkoušel jsem si načíst (proletět) základní dokumentaci, jak k programátoru tak k mikrokontroleru, ale upřímně ze začátku jsem z toho byl spíše zmatený
  • Proto jsem si na webu našel několik zajímavých návodů a tutoriálů, které mi ze začátku pomohly provést úvodní zapojení a základní “hraní” si se soupravou. tohle mi asi pomohlo nejvíce na základní spuštění, ale obecně se toho dá najít spousta.
  • IDE MPLAB se automaticky neinstaluje s Cčkovým kompilátorem, tedy je nutné jej poté manuálně doinstalovat, kompilátor xc8 je jednoduše ke stažení zde

První projekt [Mira]:

  • Jako první projekt jsem zvolil klasickou věc blikání led diod
  • Na začátku je tedy nutné se pomocí programátoru připojit k mikrokontroleru, k čemuž slouží výstup z programátoru, přičemž popis jednotlivých pinů je samozřejmě v datasheetu. Rovněž pro mikrokontroler je potřeba popis pinů znát ale jsou taky dobře dokumentované.
  • Po připojení správných pinů je třeba spustit IPE. V případě kdy programátor rovněž slouží jako napájení pro mikrokontroler, pak je třeba v Settings -> Advanced mode -> Power umožnit toto napájení a nastavit odpovídající napájecí napětí ( 5V pro můj případ použitého čipu). Pak stačí Connect a doufat.
  • Dalším krokem je implementace jednoduchého kódu. V případě, že pracujeme v IDE zmínění v úvodu, pak vytvoříme nový projekt, který nastavíme speciálně pro náš pic čip. Nastavení probíhá v několika krocích, kde volíme typ čipu, platformu pro jeho programování, typ kompilátoru, jméno atd..
  • Součástí projektu by měl být header file, ve které jsou nastaveny parametry pro mikrokontroler - parametry oscilátoru, použití některých pinů a další věci, kterým zatím nerozumím dokonale
  • Součástí zmíněného youtube videa je právě i ukázka jednoduchého kódu, který se samozřejmě musí upravit pro potřeby daného mikrokontroleru, v nastavování jednotlivých pinů mi pomohly nejvíce tyto stránky, ale je toho spousta a stačí opět pouze hledat.
  • Po úspěšné kompilaci a vytvoření odpovídajícího .hex file, je potřeba jej pouze nahrát na připojený mikrokontroler a zapojit odpovídající ledky, nebo jiné věci, kvůli kterým jsme kód psali. Pro nahrání slouží IPE, které po úspěšném připojení mikrokontroleru nabízí funkce Program/Erase/Read/Verify/BlankCheck, které provádějí zmíněnou akci na mikrokontroleru.

Pokračování [Mira]:

  • Pro naši aplikaci je třeba spínat několik transistorů (ledek) najednou v přesně daném pořadí, takže je třeba kód rozšířit na otevírání více pinů na výstup najednou.
  • Jednoduchou úpravou a rozšířením byl program upraven, aby prováděl požadovanou akci.
  • Věci co je třeba vymyslet nebo opravit
    • Zem, která je připojována zpět na pin mikrokontroleru, je důležité z důvodu stability a zřejmě i prosté funkčnosti složitějších programů připojovat přes poměrně vysoký odpor 5k\(\Omega\), aby docházelo k tečení co nejmenších proudů zpět do mikrokontroleru.
    • Několik ledek najednou jinak nesvítí.
    • Může být také problém v napájení, respektive napájet mikrokontroler pomocí jiného tvrdého a stabilního zdroje 5V, což by mohlo tento problém s kolísavostí napětí na USB.
    • Prozatím bylo spínání transistorů (blikání ledek) prováděno pomocí funkce __dealy_ms(X), která tedy pozdrží vykonávání o Xms, které se ale musejí přepočítat na frekvenci vnitřního oscilátoru, který mám nastaven na 40MHz. Pro praktičtější a hlavně přesnější použití je třeba implementovat nějaký timer, který by pomocí přesného počítání operací otevíral a zavíral výstupní případně vstupní piny.
    • Také je třeba vyřešit, jakým způsobem provádět trigger, nejlepší by asi bylo, aby byl nějaký pin nastaven jako vstup a čekal na příchozí signál (hladina V, kterou umí detekovat??) a po příchodu tohoto napětí by inicializoval sekvenci.

Session 6.4.2017 [Mira]:

  • Otestováno zapojení programátoru do obvodu s vlastním napájením pomocí tvrdého stabilního zdroje proměnlivého napětí nastaveného na 5.04V.
  • Nepovedlo se zapojit programovací obvod tak, aby bylo možné naprogramovat programátor pomocí PICkit3 přímo na místě, vždy byl vyjmut naprogramován jinde a poté přemístěn do obvodu. Tohle doufám půjde nějakým způsobem vyřešit, protože jinak to bude poměrně otravné, ale ne nemožné.
  • Takto otestovaný obvod, hlavně se společnou zemí, byl schopný spínat několik transistorů v libovolném množství i pořadí a problémy se spínáním vymizely.
  • Problémem se však ukazuje něco jiného, a sice jakým způsobem vybíjet kondenzátor pomocí transistorů, nabití kondenzátoru nemá problém a obvod funguje bezchybně, zapojení vypadá řekněme takto (vlevo):

  • S vybíjením kondenzátoru byl problém. Obvod by měl vypadat přibližně takto, přičemž nejsem si jistý, jestli to takto může fungovat, neboť jsme zaznamenali, že po otevření transistoru pro vybíjení kondenzátoru, začal být kondenzátor nabíjen napětím z mikročipu a vybíjení neprobíhalo. Obvod jsme měli sestavený následovně, viz obrázek vpravo.

Session 13.4. a 20.4. 2017 [Mira]

  • Předchozí obvody jsou zřejmě chybně zapojené a nefungovaly by, nicméně nakonec bylo zjištěno, že vůbec nebudou potřeba, neboť ovládání nabíjení a vybíjení kondenzátoru bude prováděno pomocí spínání relé na PaPouchovi
  • Co se týče mikrokontroleru neproběhl z naší strany výrazný pokrok