Programletöltés bemutatása néhány napjainkban népszerű mikrovezérlő családra
Szinte mindannyian belefutottunk már olyan problémába, amelyet mikrovezérlővel könnyebb lett volna megoldani. Amennyiben már valaki megvalósította a probléma megoldására alkalmas szoftvert és ezt publikálta, akkor általában igen egyszerű dolgunk van. A feladat mindössze a program mikrovezérlőbe történő betöltésére korlátozódik.
Az alábbiakban ehhez próbálunk segítséget nyújtani, hogyan lehet minimális költségből, ingyenes szoftverekkel letölteni a kódot.
Tartalomjegyzék
PIC mikrovezérlő
A PIC mikrovezérlő igen népszerű, a Microchip gyártja és a ChipCad Kft. forgalmazza hazánkban. De több elektronikai bolt készletében is fellelhető némely típus.
Alapjában véve 4 csoportja van, amely további finomabb csoportba sorolható:
- 12 bites utasításszélesség (8 bites adatszélesség)
- PIC10Fxxx - 6 lábú, amelyből 2 táp, a maradék 4 akár digitális vagy analóg I/O is lehet; 256 vagy 512 utasításra alkalmas programmemória és 16-23 byte RAM
- PIC12F5xx
- 14 bites utasításszélesség (8 bites adatszélesség)
- PIC12F6xx - 8 lábú
- PIC16Fxxx - 14 ... 44 láb; hardver szorzás még nincs, 90 byte-os RAM lapok vannak, egyetlen index regiszterrel. Max RAM: 368 byte, ROM: 8 kbyte-ig
- 16 bites utasításszélesség (8 bites adatszélesség)
- PIC18Fxxx - hardver szorzó és lineáris memóriacímzés van benne, 3 indexregiszterrel. RAM: 4 kbyte-ig, ROM: 48 kbyte-ig
- 24 bites utasításszélesség (16 bites adatszélesség)
- PIC24Fxxx
- dsPIC30Fxxx - Digital Signal Controller, azaz mikrovezérlő, amely a DSP alapjait is tartalmazza már (de még csak az alapokat)
- dsPIC33Fxxx - Digital Signal Controller, azaz mikrovezérlő, amely a DSP alapjait is tartalmazza már (de még csak az alapokat)
Ami érdekességük: 8, 10, 12 bites A/D átalakító, PWM generátor, időzítők (timer), belső 1%-os pontosságú RC oszcillátor, akár egy üzemi és egy kisfrekvenciás oszcillátor közt is kapcsolgathatunk - sok-sok energiát megspórolva.
A 12, 14, 16 bites utasításszélességű (8 bites adatszélességű) mikrovezérlők a névleges órajelüket 4-el osztják, és a negyedelt órajelen hajtják végre az utasításokat. A PIC18xxx-ben azonban van már belső PLL-el órajel szorzásra lehetőség.
A 24 bites utasításszélességű új típus belül felszorozza az órajelét, és abból állítja elő a 4 fázist.
Amit tudni kell a program letöltés folyamatáról
A programot napjainkban Flash tárolja, amelybe beleírva megőrzi a kódot, de igény szerint később nagyságrendileg 10.000 alkalommal felül is írhatjuk egy újabbra.
- A program letöltését két lábon, I2C buszon végzi, ahol az egyik láb a CLK, a másik a kétirányú DATA. A vissza irány a chip azonosításához és a betöltött kód ellenőrzéséhez kell.
- A program letöltési üzemmódba léptetés háromféleképp történhet:
- Alacsony feszültségű programozáskor egy erre a célra fenntartható PGM láb tápfeszre történő felhúzásával. Hátrány: egy I/O portot elveszítünk.
- PGM láb helyett az MCLR/Vpp, azaz RESET/Programozó lábon keresztül jelzünk a mikrovezérlőnek. Ez a láb egy 3 állapotú láb, amely L szinten RESET-eli a mikrovezérlőt, H szinten nem csinál semmit. Azonban a tápfeszültég + legalább 7 volt hatására ugyanazt érjük el, mint a PGM láb aktiválásával értünk volna el. Előnye: PGM láb ebben az esetben szabadon felhasználható I/O.
- Bootloader használata: gyárilag vagy a bolt által beletöltött szoftver, amely képes bekapcsoláskor az egyik lábon való jelzés hatására RS232-n keresztül fogadni adatot, amit bele is tölt a mikrovezérlőbe. Hátrány: speciális kód kell hozzá, amely a programmemória bizonyos szeletét, ahol a bootloader található, nem írja felül. Ellenkező esetben a bootloadert csak egyszer tudjuk használni.
- A programozáskor elegendő a két tápfesz láb, a Vpp, a PGC (clock) és PGD (data) lábak bekötése. A programozás nem csak IC programozóban, hanem beforrasztás után, az áramkörben is történhet. Ezt ICSP-nek (In Curcuit Serial Programming) hívják, és igen praktikus.
Alábbiakban bemutatott technika a Vpp lábon ad jelzés a mikrovezérlőnek, hogy programozó módban van.
A legegyszerűbb program letöltő
A fenti programozóáramkör alaplapi RS232 interfésszel működik, USB-RS232 konverteren tapasztalat szerint nem. A rajz alapjában véve ICSP-re van kihegyezve, de ha az IC-be, mint barátunknak küldendő alkatrészbe szeretnénk a kódot letölteni, akkor erre csak egy IC foglalat kell és az ábrán látható forrszem alkalmas az IC programletöltés során szükséges +5V-os tápfeszültségének biztosítására.
Egy dologra célszerű figyelni: a PC földje a PIC +5V-ja, ezért más kábellel az áramkör a programozás közben ne legyen a PC-vel összedugva.
Ingyenes szoftver:
- Jaakko Picprog szoftvere (http://hyvatti.iki.fi/~jaakko/pic/) nagyon jól dolgozik. A 8 bites PIC-típusok 99 %-át viszi, szóval ezek közül szinte mindent. Paraméterezése:
picprog -p /dev/ttyS0 -i amitletolteniakarsz.hex --erase --burn
- Pikdev (http://pikdev.free.fr/) egy integrált szoftver, amely típust Jaakko szoftvere esetleg nem vinne, azt szoktam ezzel megpróbálni.
ATMEL 8 bites AVR mikrovezérlői
Az ATMEL is elég nagy jelentőséggel bíró mikrovezérlő gyártó. Hazánkban sok helyen lehet kapni (Például: http://www.mscbp.hu, http://www.codix.hu, de kisebb üzletekben is)
- ATtiny - belépő szint, egyszerűbb feladatokra. Kis lábszám, kis hatékonyság
- ATmega - igen kedvelt 8 bites széria.
A PIC-ekkel ellentétben itt pipeline-utasításvégrehajtó van, azaz 1 valódi órajel elég egyetlen utasításnak (Vessd össze: fentebb ismertetett PIC az órajelet negyedeli), azaz egy 16 MHz-es AVR egy 64 MHz-es PIC-nek felelne meg.
Memóriacímzése lineáris, maximum 8 kbyte RAM és 256 kbyte ROM-ot tartalmaz. A/D átalakító, PWM generátor, timer, belső RC oszcillátor és még sok egyéb szintén megtalálható benne.
Program letöltése AVR8 mikrovezérlőre
Az ATMEL a fentiekkel ellentétben SPI buszos interfészt ad a programletöltésre. A legegyszerűbb programozó elektronika mindössze drótokat tartalmaz, amelyet a PC alaplapi parallel portjáról hajthatunk meg.
Egyik lehetséges bekötés (bsd = Brian Dean's Programmer):
Parallel port | ATMEL AVR sorozata (ATtiny, ATMEGA) |
---|---|
Pin 7 | AVR RESET |
Pin 8 | AVR CLK (clock bemenet) |
Pin 9 | AVR MOSI (Master Out, Slave IN --> parancsok) |
Pin 10 | AVR MISO (Master In, Slave Out --> Adat visszaolvasás) |
Pin 18 | AVR GND |
Ingyenes szoftver: avrdude (http://download.savannah.gnu.org/releases/avrdude/). Használata például ATMEGA48 esetén:
avrdude -p m48 -c bsd -U flash:w:amitletolteniakarsz.hex:i
A fentiek alapján látható, hogy az ICSP-jellegű (áramkörben programozó) letöltőkábele nagyon egyszerű, pusztán egy 5 eres szalagkábel, végén egy DB25-ös PC parallel portjára dugható csatlakozóval.
32 bites architektúrák - ha kell a teljesítmény
ARM Cortex M0, M3, M4 architektúra
Az ARM architektúra nem egy gyártó, hanem egy szervezet tulajdona, amelyet a fentiekkel ellentétben sok gyártó gyárt. Ezek közül hazánkban könnyen beszerezhető egyrészt az ATMEL SAM-jai, a másik, első blikkre nehezebben tönkretehető típus az NXP lpc21xx. De még van sok-sok más gyártó is. Lásd: http://www.gnuarm.com/ArmDevices_frame.html
Ezek valódi 32 bites, 50-250 MHz-es órajellel működő RISC (1 órajel/utasítás) egychipes processzorok, tehát igen fürgék. JTAG-en keresztül lehet letölteni bele a szoftvert.
- Szoftver letöltése
- JTAG interfészen keresztül, ami teljes mértékű debuggolást is lehetővé tesz.
- PC parallel portját használhatjuk, közvetlen kábel, semmi extra.
- Szoftvernek az OpenOCD javasolható, amely TCP portot nyit a terminálkapcsolatnak debuggoláshoz és program letöltéshez.
AVR32
Az ATMEL cég az ARM-ok mellett saját 32 bites mikrovezérlőt illetve processzort is fejleszt AVR32 néven. A mikrovezérlőben 512 kbyte flash található és 64 kbyte RAM. A processzorában nincs belső programmemória, hanem külső, több MB-os flash memóriát használ, és célszerűen sok MB-os külső RAM-ot. A mikrovezérlőre szokásos módszerrel szokás programot írni, a processzorra általában Linux-ot portolnak.
Ez egy elég friss, de ígéretes mikrovezérlő és processzor család - ha már kell a teljesítmény.