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
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;
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;
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
A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |