Fórum témák

» Több friss téma
Cikkek » PIC 18F4550 USB útmutató III
PIC 18F4550 USB útmutató III
Szerző: Gory, idő: Szept 16, 2007, Olvasva: 36288, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   4 / 10

Tehát nyissuk meg az io_cfg.h fájlt. Ebben a hardver konfiguráció van beállítva, mégpedig hogy melyik portra mit kötögettünk, hol vannak a LED-ek, kapcsolók, egyebek.

 

A LED résznél nekünk csak 1 van beültetve, ezért ez változik.

/** L E D ***********************************************************/

#define mInitAllLEDs()           TRISDbits.TRISD4=0; LATDbits.LATD4=0;
//Csak RD4-en van LED
#define mLED_1                    LATDbits.LATD4
#define mLED_1_On()           mLED_1 = 1;
#define mLED_1_Off()           mLED_1 = 0;
#define mLED_1_Toggle()     mLED_1 = !mLED_1;

 

A kapcsolók részleg is módosul, mert nekünk abból is csak egy van. Emlékeim szerint nem tudjuk ezt a gombot saját célra használni, talán a bootloader miatt.

/** S W I T C H *****************************************************/

#define mInitAllSwitches()     TRISBbits.TRISB4=1;
#define mInitSwitch1()          TRISBbits.TRISB4=1;                                      
// Ez van nekem bekötve csak                                  
#define sw1                          PORTBbits.RB4;  

 

A potmétert én az AN2-re tettem. Az A/D konverzióhoz szükséges dolgokat kell itt beállítani. Az ADCON1 regisztert az eredeti forrásban itt nem állítják, de én megteszem, mert valahol digitális ki-bemenetnek van beállítva az ADCON1 regiszterrel az analóg A port, nekünk pedig az AN2-t analógra kell állítani, hogy konvertálni tudjunk. Ha valaki az AN1-ről konvertál, akkor az adatlapból ki tudja bányászni, mit kell átírni.

/** P O T ***********************************************************/

#define mInitPOT()             TRISAbits.TRISA1=1;ADCON0=0x05;ADCON2=0x3C; ADCON1 = 0x0D;  //AN1 channel, AN0 AN1 analog, 20 TAD, FOSC/4

 

A többi dolgot én kitöröltem, mert nincs SPI-os hőmérőm meg memóriakártyám. Ezzel be is lőttük a hardveres dolgokat.

 

Lássuk, a saját kódunkat hova kell írni!


A user.c tartalmazza a mi kódjainkat, amiket írkálunk. Először a UserInit() függvény található. Ez a fő programciklus előtt hajtódik végre inicializáláskor. A gyári kód tartalmaz itt egy USART inicializálást, amit mi szépen kitörölhetünk, mert nem fogunk soros portot használni. Sőt, most hőmérőt sem. Nekünk csak a LED, a gomb és a potméter-inicializálás kell. Ennyivel is átláthatóbbá válik a kód. Beszúrunk még az A/D konverzió beállításához egy utasítást: ADCON2bits.ADFM = 1;   // ADC result right justified

Ez annyit tesz, hogy a 10 bites eredmény a 2 darab 8 bites regiszterben (ADRESH és ADRESL) hogyan helyezkedik el, jobbra vagy balra igazítva. Mi úgy állítottuk be, hogy az alsó 8 bitet tölti ki teljesen, és a két legnagyobb helyiérték csúszik át a felsőbe. Mindezt azért, mert mi nagyon pontosak akarunk lenni és mind a 10 bitet figyelembe vesszük majd. Ha valaki mondjuk csak 8 bites konverziót akar, akkor balra kell igazítania, és csak egy, a felső regisztert (ADRESH) kell figyelembe vennie!


Ezután kissé lejjebb található a már említett ProcessIO() függvény. Első utasítása egy USB státusz LED-et villogtató függvény meghívása. Mi ezeket kitörölhetjük, nincs rá szükség, mert nem építettük be ezt a LED-et (feltételezem, hogy a gyári demo panelt nem vette meg senki )!

A gyári kód tartalmaz egy pár mintafeladatot is, a demópanel használatának elsajátításához. Ezeknek a megoldását érdemes megnézni, lehet belőlük tanulni. De most töröljük ki a user.c-ből, mert a saját kódjainkat, függvényeinket itt tudjuk meghívni. Ez a főprogramban minden ciklusban le fog futni.

 

Végül néhány szó a harmadik, usbcfg.h nevű fájlról. Ebben a következő két sort kel // jelekkel kikommenteznünk, ha nem az eredeti demópanelt használjuk:

//#define USE_SELF_POWER_SENSE_IO
//#define USE_USB_BUS_SENSE_IO

 
Ezek után készen áll a projectünk a további saját fejlesztésre.


A cikk még nem ért véget, lapozz!
Következő: »»   4 / 10
É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