Fórum témák

» Több friss téma
Cikkek » Mesterkedések PIC24 és dsPIC33 mikrovezérlőkkel
Mesterkedések PIC24 és dsPIC33 mikrovezérlőkkel
Szerző: icserny, idő: Jún 13, 2009, Olvasva: 20972, Oldal olvasási idő: kb. 3 perc
Lapozás: OK   3 / 7

LED-villogtató program - I. változat

A megépített áramkör program nélkül legfeljebb levélnehezéknek használható. Keltsük hát életre a megépített áramkört egy LED-villogtató programmal! Ezt a funkciót későbbi programjainkba is érdemes beépíteni, mert a LED villogása jelzi, hogy fut a program. A programot C nyelven írjuk meg, és a Microchip C30 fordítójával fordítjuk le. A cél most elsősorban nem a program megértése, hanem a kapcsolás működésének ellenőrzése.

Ha eddig még nem tettük meg, akkor telepítsük a Microchip honlapjáról letölthető MPLAB fejlesztői környezetet, és a PIC24 C fordítót!

A program és a keretéül szolgáló MPLAB projekt-létrehozásának lépéseit az MPLAB IDE v8.15a változatával az alábbiak szerint hajtottam végre (gondolom, az újabb változatban is hasonlóan történhet):

  • A Project menüben válasszuk a Project Wizard varázslót, majd a felbukkanó ablakban kattintsunk a Tovább (Next) gombra!
  • A Device mezőben válasszuk ki a PIC24HJ128GP502 mikrovezérlőt (vagy amink van helyette...), majd kattintsunk a Tovább gombra!
  • Az Active Toolsuite mezőben válasszuk a "Microchip C30 Toolsuite"-ot, majd Tovább!
  • A Create New project lapon kattintsunk a Browse (tallózás) gombra, majd keressünk egy alkalmas helyet az új projektnek és adjunk nevet az új projektnek (pl. ledvill1)! Tovább...
  • Nem adunk hozzá forrásállományokat! Tovább...
  • Kattintsunk a Befejezés (Finish) gombra!

A program beírásához a Project menüben válasszuk ki az "Add New File to Project" (új állomány hozzáadása a projekthez) menüpontot, és a felbukkanó ablakban adjuk meg az elérési útvonalat, valamint az új forrásfájl nevét (például legyen a neve ledvill1.c). Írjuk be az alábbi programot!

 

A program működését itt csak vázlatosan ismertetjük, a mikrovezérlő programozásával kapcsolatos részletes magyar nyelvű tananyag a PIC-kwik projekt honlapján található. Természetesen a mikrovezérlő adatlapja kötelező olvasmány, azt semmilyen tananyag sem pótolja!

A program elején az #include direktívával beolvastatjuk a mikrovezérlőt leíró definíciós állományt. Ezt az egyszerűség kedvéért tekintsük a mikrovezérlő adatlapja géppel olvasható kiadásának...  Ennek hatására tud majd pl. a fordító konkrét regisztereket rendelni az ADPCFGL, TRISB, TMR1, stb. nevekhez.

Nem kötelelző kiírni a  konkrét mikrovezérlő  típusszámát, az MPLAB lehetővé teszi, hogy az ábrán látható #include <p24hj128gp502> direktíva helyett az általánosabb #include <p24Hxxxx.h> formát használhatjuk. Ez arra jó, hogy ha másik mikrovezérlőt használunk  (pl. PIC24HJ64GP502, vagy  PIC24HJ64GP202), akkor elegendő egyetlen helyen, a Device Select menüben változtatni, s nem kell miatta belenyúlni a forrásállományba.

A dsPIC33FJ mikrovezérlők esetén pedig az #include <p33Fxxxx.h> direktívát használjuk!

A #define direktívával egy DELAY (késleltetés) nevű számkonstanst definiálunk. Ennyi "óraütést" fogunk majd leszámláltatni a LED állapotváltozása között.

A főprogram (main függvény) első részében inicializáljuk a mikrovezérlőt: először is minden analóg bemenetet letiltunk. Ha az AD1PCFGL regiszter valamelyik bitje nulla, akkor a hozzá rendelt analóg bemenet a megfelelő lábra kapcsolódik. Ha a bit értéke 1, akkor a hozzá rendelt analóg bemenet AVSS-re kapcsolódik (analóg föld), a mikrovezérlő megfelelő lába pedig digitális ki/bemenetként használható, lásd az adatlap Register 19-8 nevű táblázatát! A TRISB regiszterrel a B port bitjeinek adatáramlási irányát állíthatjuk be. Ha TRISB valamelyik bitje 0, akkor a hozzá rendelt láb kimenetként viselkedik. Ha pedig 1, akkor bemenetként. Itt most csak az RB15 lábat állítjuk kimenetnek, a B port többi bitje bementként viselkedik. Ezt úgy érjük el, hogy a TRISB regiszter legmagasabb helyiértékű bitjébe 0-át, a többibe 1-et írunk.

A helyes működéshez elengedhetetlen, hogy az RB15 kimenetet nyitott nyelőelektródás (ez a TTL logikai áramköröknél megszokott nyitott kollektoros kimenet MOSFET-es megfelelője) üzemmódba állítsuk! Ehhez az ODCB regiszter 15. bitjét 1-be kell állítani.

Ahhoz, hogy a LED villogását észlelni tudjuk, a LED ki- és bekapcsolásai között szünetet kell tartani. Az ehhez szükséges várakozási időket a mikrovezérlő beépített, 16 bites Timer1 számlálója segítségével fogjuk mérni úgy, hogy az utasításciklusokat számláltatjuk vele, amíg a DELAY konstansban előírt felső határt el nem érjük. Gyakorlatilag úgy használjuk a számlálót, mint a tojásfőzésnél a homokórát: elindítjuk, és nézzük, hogy leperegtek-e már a homokszemek. Esetünkben a DELAY konstans értéke szabja meg, hogy hány virtuális homokszemünk lesz az órában.

Mivel a mikrovezérlő órajel-generátorát nem konfiguráltuk, az a beépített RC oszcillátorról fog működni, nagyjából Fosc = 7.37 MHz-es frekvencián. Az utasítások ütemezéséhez ennek a frekvenciának a felét (Fcy = Fosc/2) használja a mikrovezérlő.

A programlistában látható, hogy a T1CON vezérlő regiszterbe 0x8030 hexadecimális értéket írunk, ami azt jelenti, hogy bekapcsoljuk Timer1-et (bit15=1, azaz TON=1) és 1:256 arányú előosztást állítunk be (bit5 és bit4 = 1, azaz TCKPS=11). Így a számláló minden 256. utasításra, illetve minden 512. oszcillátor rezgésre számlál egyet. Ezekkel az adatokkal számolva a várakozási idő:

  T = DELAY * 256 / Fcy = DELAY * 256 * 2 / Fosc = 3900 * 256 * 2 / 7370000 =  0,27 s

A főprogram második része, a while(1) {} szakasz végtelen ciklusban fut. A PORTB 15. bitjét 1-be, a többit 0-ba állítjuk, továbbá nullázzuk az órát. Ha letelt a késleltetés, akkor PORTB 15. bitjét is 0-ba állítjuk és nullázzuk az órát. Az újabb késleltetés leteltével visszaugrunk a ciklus elejére.

Mivel a ciklusban két késleltetés is van, a LED 2 x 0,27 s = 0.54 másodpercenként villan fel (tehát kis híján 2 Hz frekvenciával  villog).


A cikk még nem ért véget, lapozz!
Következő: »»   3 / 7
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem