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: 36286, Oldal olvasási idő: kb. 1 perc
2. lépés: Eredmény elküldése a PC-re
Az eredményt majdnem tetszőleges frissítéssel küldhetjük a PC-re, de nem akarjuk ezzel felemészteni a teljes processzor- és átviteli kapacitást, ezért egy számlálóval beállítunk egy körülbelüli értéket. A számláló csak számol, majd ha eléri ezt az értéket, kizárólag akkor konvertál és küldi az adatot. Azt ne kérdezze senki, hogy így milyen gyors a frissítés, ez attól függ, hogy az USB-s feladatokat ellátó kódok milyen gyakorisággal hajtják végre a main() függvényben a ProcessIO() eljárást. Másrészt a konverzió sebessége is határt szab a frissítésnek. Mindenestre 10 ezerre állítva ezt a számlálót, néhány hertz-es frissítést kapunk a PC oldalon. Aki akarja, kisebbre is állíthatja, 5 ezer alatt már egész jó a frissítés, de igazából a késleltetés (latency) az, ami észrevehető nálam, ha valamit még csinál a számítógép. Mielőtt a függvényhívás kódját elolvasnánk, érdemes átgondolni, hogy a korábbi fejezetben említett adatküldő CDC-s függvényből melyiket kéne használni, és hogyan kéne felparaméterezni ahhoz, hogy az ADRESH és ADRESL regiszterekben levő adatot átpréseljük az USB kábelen. Átküldhetjük nullterminated string formában, ez 3 bájtot venne igénybe. De tudjuk, hogy 2 bájt hosszú, azaz ismert hosszúságú, ezért nem string formában küldjük nyilván, így a put kezdetű függvények kiesnek. Ha bepakoljuk a két regisztert egy bájt tömbbe, akkor program memóriából el tudjuk küldeni. Ezzel a megoldást el is árultam. A bájt tömbnek legalább 2 bájtosnak kell lennie, hogy elférjen benne az adat, de ha egy 64 bájtosat definiáluk és ennek az első két bájtjába tesszük, akkor az mUSBUSARTTxRam függvény felparaméterezése miatt csak az a 2 bájt fog úgyis átmenni. Íme a kód, ne felejtsük el a char input_buffer[2] tömböt valahol előre deklarálni:
void
SendADC(void)
if(mUSBUSARTIsTxTrfReady())
mUSBUSARTTxRam((byte*)input_buffer,2); A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |