Jste zde

Programátor PIC

Výčet funkčních a postavitelných návodů na výrobu programátoru PICů. Zpřehledňuje orientaci mezi

mnoha návody na WEBu.

Připravujme několik dalších příspěvků, ve kterých budou figurovat mikropočítače PIC. Proto považuji za nutné zveřejnit alespoň nějaké schéma jednoduchého programátoru. Nic v tomto článku nepochází z mé hlavy, pouze kopíruji od jiných autorů, ale myslím si, že je nutné zveřejnit jednoduchého průvodce současnou znětí polofunkčních odkazů, která v této oblasti panuje v mezinárodním internetu.

 


Možností, jak postavit programátor PIC je v podstatě mnoho. Kupříkladu PARALLAX to řeší použitím dalšího PIC jako řídícího IO, existuje ale i celá řada dalších jednoduchých možností. Asi nejjednodušší programátor PIC 16C84 (což je v zásadě vhodný IO pro ladění apod., neboť má program uložený v paměti EEPROM) je na této stránce . Pravdou je, že těchto zapojení existuje několik velmi podobných typů, ale všechny využívají (a kolikrát i překračují) mezní hodnoty programovacích či napájecích napětí, proto nejsou 100% spolehlivé a nefungují zdaleka na všechny typy obvodů. Obdobné schéma zapojení je na této adrese: http://www.ebar.dtu.dk/~c888600/newpic.htm

 



Další možností je zapojení, které se jeví jako asi jedno z nejpoužívanějších (využívá je kupříkladu EPIC a spousta dalších programátorů vesměs podobných jako vejce vejci). Používá paralellní port (tedy jeho 4 výstupní a jeden vstupní pin) a externí napájecí adaptér. Schéma je kupříkladu na této adrese: http://www.geocities.com/SiliconValley/Peaks/9620/ Obsahuje poměrně rozpracovaný programátor (s možností programovat mnoho typů PIC, či používat různě zapojené programátory)..

Zde jsou pak odkazy na dva programátory:

Oba dva pracují s předchozím zapojením, jen je nutné místo IO 74LS05 použít IO 74LS07. PICX má trošku problémy s načítáním souborů (obvykle funguje napsat do OPEN FILE celé jméno souboru, pak stisknout ENTER a CANCEL), P16PRO mě zase trošku zlobil při programování pojistek, ale celkově se dá říci, že oba dva programy fungují. Není potřeba žádná instalace, pouze se rozbalí a zkopírují do prázdného adresáře. V balíku P16PRO je dokonce návrh desky plošných spojů programátoru.

 



Dalším zajímavým softwarem pro práci s PIC je překladač a simulátor od firmy PARALLAX , který hojně používám pro tvorbu svých programů (ke stažení také ZDE). Výhodou tohoto překladače je, že má celou řadu makroinstrukcí, které nahrazují některé poněkud krkolomé a nepřehledné instrukce standartního assembleru sadou jednoduchých a známých instrukcí. Kupříkladu možnosti napsat MOV reg1,reg2 či kopírování bitu do jiného bitu apod. značně usnadní práci. Samozřejmě je nutné si dávat pozor na to, že za některých okolností instrukce naruší další registr (kupř W), či obsahuje více než jeden byte, takže instrukce využívající SKIP BYTE se následovně mohou chovat nedefinovaně, pokud je za nimi uvedená makroinstrukce. Detailnější popis všech možností assembleru v angličtině je ZDE

Simulátor je další užitečný program, který usnadní život. Umožnujě definování vstupních souborů, měření času, nastavování break pointů, používání WDT a další. Jeden bug jsem v něm ale objevil. Pokud se nechá u některých typů procesoru běžet program bez zobrazování údajů, za nějaký čas se vykonávání zastaví a už dále nepokračuje (musí se stopnout a znovu obnovit). Není to ale nikterak vážná chyba. 

Samozřejmě že se při ladění ještě vyplatí mít kromě simulátoru kupříkladu jeden PIC 16C84, na reálné odladění. Plný koš vypálených, ale nefunkčních obvodů by asi jinak nebyl dobrou vzpomínkou.

 


Nebudu zde rozvádět způsoby programování a instrukce PIC, to opravdu není obsahem tohoto článku, ale jenom na závěr uvedu několik možných záludných chyb, se kterými jsem se během své praxe setkal, a které se špatně hledají. (týká se samořejmě assembleru PARALLAX):

  • PIC 16C57 a 16C84 mají posunutou paměť RAM (57=8,84=12) pokud se bude používat 84 na oddladění a nezmění se hodnota adresy prvního byte RAM, PIC bude brát poslední 4 registry jako RAM a bude to velmi záludně padat.
  • Pozor na CLR C a CLRB C, první je nesmysl, ale programátor to zbaští. Další správnou možností kromě CLRB C je CLC
  • Pozor na mřížku při kopírování konstanty do registru. Bez mřížky to programátor bere jako adresu registru (což je sice taky blbost, ale neupozorní na to)
  • Pozor na registry, co leží v horní části paměti. Musí se nejprve nastavit RP1 a pak zpět RP0, viz kupř. registr OPTION
  • Pozor na definici typu PIC (XT,LP ....., WDT ON....)
  • Vstupy jsou CMOS, čili i pro jednoduché tlačítko se musí použít pomocný rezistor (vyjma pull up funkce kupř 84), jinak bude stav vstupu nedefinovaný
  • Pozor na překročení maximální paměti RAM

 

Hodnocení článku: