A PIC-kwikplus projekt

2009 elején indult el a PIC-kwik projekt, melynek keretében a Microchip kis lábszámú, nagy teljesítményű 16 bites mikrovezérlői közül a PIC24HJ128GP502 és a dsPIC33FJ128GP802 felépítésével és programozásával ismerkedtünk meg. Az azóta eltelt évek során új fejlesztői kártyák jelentek meg, s a PIC-kwik projekt forrásául használt támogatói programkönytár és programgyűjtemény is többször frissitésre került, ezért szükségessé vált az eddig elkészült fejezetek fejezetek felülvizsgálata és átdolgozása. A PIC-kwikplus projekt keretében a támogatott kísérleti áramkörök illetve fejlesztői kártyák körét kibővítettük, s egyúttal áttértünk a támogatói programkönyvtár, a példaprogramok és a bootloder egy újabb kiadására (a www.reesemicro.com oldalról letölthető programcsomag 24-Aug-2011-i kiadását vettük alapul).


Gyakorláshoz, illetve a példák kipróbálásához elsősorban A kísérleti áramkör c. fejezetben ismertetett kapcsolás megépítését ajánljuk (az áramkör próbapanelon is összerakható, vagy a PIC-ador kártya utánépítésével nyomtatott áramkörön is megépíthető). Természetesen lehetőség van arra is, hogy valamelyik támogatott gyári kártyát (mini-Bully, Microstick, Microstick II, 16-bit 28-pin Starter Board, Dangerous prototypes: Web platform),  szerezzük be, s azon futtassuk a programjainkat. Ügyeljünk azonban arra, hogy a gyári kártyák esteleg más típusú (itt részletesen nem tárgyalt) mikrovezérlőt tartalmazhatnak, vagy valamelyik kivezetés foglaltsága miatt egyik-másik bemutatott mintapélda nem futtatható, vagy csak módosításokkal használható. Olvassuk el figyelmesen a támogatott áramkörökre vonatkozó utmutatót!

A PIC-kwikplus projekt mintapéldáinak kipróbálásánál jól használható a Microstick kártyát kiegészítő Microstick Plus kártya, ami USB-TTL soros konverterrel, és számos további perifériával (LED-ek, potméter, analóg hőmérő, feszültségreferencia, rotary encoder, buzzer, nyomógomb, kapacitív érzékelő, CAN busz illesztő, stb.) egészíti ki a mikrovezérlőt, így sok példaprogram hardver építés nélkül kipróbálható.

Megjegyzés

Az első négy fejezethez semmilyen hardverre nem lesz szükségünk, a mikrovezérlő utasításkészletét és a fejezetek mintapéldáit kizárólag az MPLAB fejelesztői környezet szimulátorában fogjuk vizsgálni! Programjainkat csak A kísérleti áramkör c. fejezettől kezdődően futatjuk a mikrovezérlőn.

Néhány szó a kezdetekről

A Microchip 2004-ben indította el a 16 bites mikrovezérlők gyártását (először a dsPIC30, egy évvel később a PIC24F és a dsPIC33, végül a PIC24H családokkal). Megjelenésük óta azonban viszonylag kevés figyelmet kaptak ezek a mikrovezérlők. A PIC24 vezérlőkkel kapcsolatban 2009 elején mindössze  három könyvet találtam (lásd az ajánlott könyvek listáját), ezek közül kettő éppen akkor, tehát 2009-ben jelent meg.

Lucio di Jasio kitűnő könyve [1] az Explorer 16 demó panel  használatát feltételezi, s a Microchip C30 fordítóhoz írt mintaprogramok segítségével mutatja be a 16 bites PIC24F mikrovezérlők lehetséges alkalmazásait.

Kónya László és Kopják József új könyve [2] is az Explorer 16 kártyára épít a PIC24 mikrovezérlők programozását bemutató részben. Attól eltekintve, hogy az Explorer 16 demó kártya elég borsos árú, s a szó szerint 100 lábú mikrovezérlő, és a felületszerelt kártya nem a legalkalmasabb a hobbi célú kipróbálásra, van még egy másik komoly probléma is: a magas lábszámú 16 bites mikrovezérlők gyártását valahol nagyon elszúrhatták, mert az újraprogramozhatósági szám igen alacsony: garantáltan csak 100-szor, illetve 25 fokos hőmérsékleten tipikusan 1000-szer írható újra a programtároló memória. Ez a kísérletezéshez, vagy a hardveres nyomkövetéshez nagyon kevés!

Sokkal jobban sikerült széria (legalább 10000-szer újraprogramozhatók) a PIC24H sorozat 2008-ban kibocsátott, kis lábszámú (28 vagy 44 kivezetés) 16 bites mikrovezérlői, melyek tiszteletre méltó teljesítménnyel (40 MIPS) és  memóriával rendelkeznek (64-128 kilobájt programmemória és 8-16 kilobájt adatmemória), így akár RTOS operációs rendszerek kipróbálására is alkalmasak. Ugyanakkor a kis lábszám miatt könnyen kezelhetőek, így jó szívvel ajánlhatók hobbi célokra is, vagy otthoni tanulásra, a mikrovezérlőkkel való ismerkedésre.
  
Valószínűleg hasonló szempontok vezethették a Mississippi Állami Egyetem oktatóit is, amikor a mérnökhallgatók számára meghirdetett ECE3274 kurzusukon 2008 őszén a PIC24H mikrovezérlőre váltottak, a korábbi években használt PIC18F-ről. A tanfolyam anyaga a kurzus honlapján is elérhető, de az előadások anyagát könyv formájában is kiadták[3], s a kurzushoz, illetve a könyvhöz további információ, példaprogram- gyűjtemény, dokumentáció és video tananyag található a www.reesemicro.com honlapon.

Ami nekem ebben a tanfolyamban megtetszett:

Célkitűzés

Feltett szándékom, hogy amennyire időm engedi, a fenti tanfolyam menetét követve az abból elsajátított ismereteket ezen a honlapon magyar nyelven összefoglaljam, s ezáltal másokkal is megosszam. Az itt közzétett anyagot egyéni tanulásra szántam, ahol sem időkeret sem terjedelmi korlátok nem szabnak gátat a felfedezésnek és az elmélyült kísérletezésnek.

Az alábbiakban megismerkedünk a PIC24H (és a dsPIC33) mikrovezérlők felépítésével, sajátosságaival, építünk egy saját "mikroszámítógépet", s megtanuljuk a főbb perifériák kezelését: I/O port, programmegszakítási rendszer, óra/számláló áramkörök. Kommunikálunk a számítógéppel a soros porton, külső áramkörökkel az SPI és az I2C portokon. Analóg jeleket mérünk az ADC-vel és kimenő analóg jeleket keltünk a DAC segítségével (dsPIC). Ha futja a lelkesedésből, akkor megismerkedünk a DMA használatával, s természetesen a Real Time Operációs Rendszerek (RTOS) világába is ellátogatunk.

Elvárások

Feltételezem, hogy az olvasó legalább elemi jártassággal rendelkezik az elektronika és különösen a digitális elektronika terén. Szükséges, hogy ismerje a számrendszereket (bináris, hexadecimális), s legalább homályos fogalmai legyenek a mikrovezérlők (vagy mikroprocesszorok) felépítéséről, tudja, hogy mit jelent a ROM, RAM, utasításszámláló, veremtár, regiszter, bit, bájt, soros port, vagy hogy mi az a MIPS.

Szerzői jogok

Az itt közzétett tananyaghoz forrásként felhasználtam a Mississipi Állami Egyetem oktatói, R. Reese, B. Jones és J. W. Bruce által írt előadásvázlatokat és programokat: ECE3724 course on microprocessors. Köszönettel tartozom a szerzőknek, amiért jegyzetüket és a kapcsolódó segédanyagokat nyilvánosan közzétették. A jegyzethez további információ, példaprogram gyűjtemény, dokumentáció és video tananyag található a www.reesemicro.com honlapon.

Meg kell jegyezni azonban, hogy a magyar adaptáció nem egyszerű fordítása a fenti jegyzetnek. A szöveget, az ábrákat és a mintaprogramokat szabadon megváltoztattam céljaimnak és szándékaimnak megfelelően.

Az itt közzétett tananyag tetszőleges célra szabadon felhasználható, azonban közzététele és terjesztése csak a szerző írásos beleegyzésével történhet.

A tananyag bárminemű felhasználása a felhasználó saját felelősségére történik!

Kötelező olvasmányok

PIC24HJ128GP502 mikrovezérlő adatlapja és a hibajegyzék (Errata)
PIC24H mikrovezérlő család referencia kézikönyve (különös tekintettel az I. és III. részre)
dsPIC33FJ128GP802 mikrovezérlő adatlapja és a hibajegyzék (Errata)
dsPIC33 mikrovezérlő család referencia kézikönyve (különös tekintettel az I. és III. részre)
dsPIC30F/33F Programmer's Reference Manual

16-bit Language Tools Getting Started
MPLAB Assembler, Linker and Utilities for PIC24 MCUs and dsPIC DSCs User's Guide
MPLAB C Compiler for PIC24 MCUs and dsPIC DSCs User's Guide 

Ajánlott könyvek

1. Lucio Di Jasio: Programming 16-bit PIC microcontrollers in C: learning to fly the PIC 24, Newnes, 2007, ISBN 0750682922, 9780750682923

2. Kónya László és Kopják József: PIC Mikrovezérlők alkalmazástechnikája, PIC programozás C nyelven (harmadik, bővített kiadás), ChipCAD, 2009, ISBN 13: 9789632068251,  ISBN 10: 9632068254

3. Robert B. Reese, J. W. Bruce and Bryan A. Jones: Microcontrollers: From Assembly Language to C Using the PIC24 Family, Delmar Learning, 2009, ISBN 13: 9781584505839,  ISBN 10: 1584505834