Fórum témák
» Több friss téma |
Cikkek » PIC 18F4550 USB útmutató II PIC 18F4550 USB útmutató II
Szerző: Gory, idő: Jún 8, 2007, Olvasva: 25915, Oldal olvasási idő: kb. 1 perc
Gyakorlati tudnivalók 1) Ne használjunk blokkoló függvényhívásokat (azaz amikor a program futása felfüggesztődik és a függvény visszatérésére vár). Az USB taszkok kiszolgálása un. Polling módszerrel, azaz folyamatos lekérdezéssel történik a fő programciklusban. Éppen ezért ha például beérkező adatra várunk, de nem jön adat valami miatt, akkor holtpont áll elő, nem fog a program továbblépni. Például a fentebb említett while(!mUSBUSARTIsTxTrfReady()); egy kerülendő, blokkoló hívás.
2) A putrsUSBUSART, putsUSBUSART,mUSBUSARTTxRom és mUSBUSARTTxRam függvényhívások nem blokkolók. Amikor ezeket hívjuk, akkor nem a konkrét adatátvitelt indítjuk el, csak a megfelelő regisztereket állítjuk be. A konkrét átvitelért a CDCTxService() metódus felelős. Ez darabolja fel például a hosszú adatokat kisebb darabokra. A fő programciklusban egyszer hívódik meg a formware-ben az USBTasks() eljárásban. Ennek van egy hátránya, mégpedig az, hogy egy új transzfer kezdete a jelenlegi vagy előző átvitelt felülírhatja. Ez azért van mert a fent említett függvények csak a regisztereket állítják be a küldéshez, nem kezdődik azonnal a küldés, hanem csak ciklusonként egyszer, így két kiszolgálás közt akaratlanul felülírhatjuk a régi adatokat, ha nem figyelünk. Lássunk egy példát: Heltytelenül:
if(mUSBUSARTIsTxTrfReady()) Helyesen:
byte state = 0; . . . // Main Program Loop
while(1) 3) A project helyes beállítása CDC használatához: 1. #include "systemusbusb.h" szükséges minden fájl elejére, amelyik használja a CDC funkciókat 2. USB_USE_CDC definiálni kell a usbcfg.h fájlban ha használjuk a CDC függvényeket.
3. A forrás és header fájlokat hozzá kell adnunk a projecthez. A cdc.c és cdc.h,
4) A saját eljárásainkat és módosításainkat a user.c fájlban kell elvégeznünk. Az inicializáló részeket a UserInit-be, a fő programciklusban végrehajtandó dolgokat pedig a ProcessIO-ba kell írni. A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |