Kdo má už doma programátor, jistě si zkusil některý z prográmků poupravit a nahrát. Někteří pozornější měli možná štěstí a program jim fungoval, tak jak měl. Jiní si museli počkat na dnešní díl. Dnes si totiž krok po kroku nejprve vytvoříme program, zkompilujeme a nahrajeme do procesoru.
Krok první – Hardware
Jak si obstarat programátor jsme si řekli minule. Také jsme si řekli, že pro začátek budeme používat ISP programátor na paralelní port. K programátoru budeme samozřejmě také potřebovat software, kterým ho budeme ovládat. Můžeme použít buď známý PonyProg a nebo také Atmel AVR ISP Parallel Port Programmer. Programuje-li někdo v CodeVision (v C), může využít programovací software implantovaný do vývojového prostředí. My si zvolíme první možnost. PonyProg je velmi rozšířený a po celém světě se těší velké oblibě.
Samotný procesor umístíme do nepájivého kontaktního pole a vyrobíme si propojovací kablík. Propojení bude vždy 1:1. Tedy například MISO procesoru na MISO programátoru stejně tak s ostatními signály. Samozřejmostí je přivedení napájení (5 V). Pro jistotu si popíšeme, co který signál znamená:
- MISO
- Master In Slave Out. Zařízení, které spravuje sběrnici, přijímá data. Zde PC.
- MOSI
- Master Out Slave In. Zařízení, které spravuje sběrnici, data vysílá.
- SCK
- hodinový signál
- RESET
- jistě netřeba představovat – resetuje obvod.
Krok druhý - Software
Po stažení a instalaci PonyProgu jej spusťte. Pro správnou komunikaci s programátorem je nutné nastavit typ a port, na kterém je programátor připojen. Zvolte Setup → Interface setup a nastavte AVR ISP I/O a samozřejmě správný LPT port. Otestujte nastavení tlačítkem Test. Pokud hlásí chybu, je programátor zřejmě nepřipojen nebo je chyba v práci s portem LPT. Ve Windows XP bohužel tento problém nastává velmi často. Tento problém však není neřešitelný. Povíme si jak na to.
Ve správci zařízení zobrazte skrytá zařízení: Zobrazit → Zobrazit skrytá zařízení. V položce Ovladače nepodporující Plug and Play technologii vyberte IOPort a v záložce Ovladač vyberte Spuštění počítače. Restartuje počítač.
Máte-li spuštěný program a nebyla-li nahlášena chyba o nenalezení programátoru, můžeme pokračovat. Nejprve si ale povíme něco o programovacích propojkách.
Programovací propojky
Programovací propojky, nebo-li také fuse bits, slouží k nastavení procesoru, jeho zdroje hodinového signálu, ochran proti přepisu a jiných vlastností, které ještě neznáme. Špatným nastavením těchto propojek můžeme uvést procesor do již nepoužitelného stavu. Proto vždy pečlivě překontrolujte nastavení propojek, než je zapíšete do procesoru.
Kompletní přehled propojek a jejich popis naleznete v katalogovém listu procesoru. My si dnes povíme pouze o propojkách nastavujících hodinový zdroj signálu. Vyrobíme si vlastní blikač.
Programovací propojky nastavující zdroj hodinového signálu
Programovací propojky nastavující zdroj hodinového signlu jsou častou příčinou neúspěchu u programátorů začínajících s procesory AVR. Na diskusních fórech jsou často k nalezení dotazy jak „oživit mrtvé AVRko“. Často je situace způsobena nepozorností. V nastavení zdroje hodin jsou totiž některé kombinace rezervovány, a tak může dojít k nenávratnému zablokování součásky. Z tohoto důvodu je nutné tyto vlastnosti pozorně nastavovat.
V hlavním okně zvolte rodinu procesorů AVR micro a procesor ATmega16, případně jiný… Po kliknutí na Command → Security and Configuration bits… se objeví okno s konfiguračními bity (fuse bits). Načtením zjitíte, jak je procesor zrovna nastaven. My provedeme změnu tak, aby nastavení vypadalo jako na obrázku.
Nastavení uložíme do procesoru. Důležitými pro nás byly bity CKSEL0, CKSEL3 a SUT0. Jimi jsme nastavili Interní RC oscilátor a frekvenci 8 MHz. Teď už jen zbývá nahrát program… a můžeme blikat.
.INCLUDE "m16def.inc"
.LIST
.CSEG ;kódový segment
.DEF REG=R16 ;pracovní registr
.EQU DDR=DDRC ;řízení směru
.EQU PORT=PORTC ;port
LDI REG,$FF
OUT DDR,REG
LDI REG,LOW(RAMEND)
OUT SPL,REG
LDI REG,HIGH(RAMEND)
OUT SPH,REG
LDI REG,$FF
LDI R20,1
SMYCKA: OUT PORT,REG
RCALL CEKEJ
ADD REG,R20
RJMP SMYCKA
;čekací rutina (čeká asi 0,5 s)
CEKEJ:
LDI R17,36
CYK3: LDI R18,150
CYK2: LDI R19,250
CYK1: DEC R19
BRNE CYK1
DEC R18
BRNE CYK2
DEC R17
BRNE CYK3
RET
Program přepíšeme do AVR Studia a přeložíme stiknutím F7. Jestliže program nenahlásí při kompilaci žádnou chybu, můžeme program nahrát do procesoru. To provedete (v PonyProgu) otevřením HEX souboru s vaším programem: File → Open program (FLASH) file…. Před nahráním programu je dobré procesor vymazat volbou Command → ERASE. Poté již jenom Command → Write program (FLASH). A LED připojená na pin PC0 by měla blikat v jednosekundovém intervalu…
Samozřejmostí je, že pokud pracujeme s ISP programátorem, tak musí být procesor napájen. A to buď přímo v aplikaci, nebo přes programátor.