Programletöltés bemutatása néhány napjainkban népszerű mikrovezérlő családra

Innen: HamWiki
A lap korábbi változatát látod, amilyen HG2ECZ (vitalap | közreműködések) 2010. július 31., 12:32-kor történt szerkesztése után volt. (ARM Cortex ...)
Ugrás a navigációhoz Ugrás a kereséshez

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.

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:
    1. 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.
    2. 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.
    3. 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ő

PicProg.png

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.