Fórum témák
» Több friss téma |
Azt nem tudom, hogy milyen compilert használsz, de gyanítom, hogy ccs c-t.
Csatolok egy példát PWM-re, ami hardveres. Egyébként a compiler sugójában is találsz leírást és gyári minta progikat. Ez is onnan van. (Elvileg a Te gépeden is megtalálod)
Idézet: „Arra vagyok kíváncsi, hogy kapcsolódik a C nyelv ehez a pwm perifériához a kódban.” A PWM frekvenciáját a Timer2 szabályozza, az üzemmódot és a kitöltési tényezőt pedig a CCP1 egység. A regiszterek beállítása pl. így néz ki
Komplett mintapélda és PWM kalkulátor is van az alábbi címen. Bővebben: Link
Csatold be a hex kódot, amivel próbálkozol!
A mellékelt HEX állomány bootloader nélkül, PICkit2-vel beégetve hibátlanul fut nálam. Ez a korábban említett Helló világ! program. Ha ez sem megy nálad, akkor baj van a hardverrel.
Meg se mozdul.
Olyan lehet, hogy csak az USB romlik el a PIC-en? Mert az LCD és a keypad megy rendesen. Azért becsatolom a hex-et és buherálom még egy kicsit a hardvert hátha megjavul.
Köszönöm szépen. Ez így már sokkal világosabb és érthetőbb. Az oldalt is köszi.
Bocsánat ha kissé érthetetlen vagyok de, hogyan lehetne megoldani azt akkor, hogy egy C-ben megírt program módosítsa a PWM paramétereit. Pl. futtatok egy olyan programot C-ben ami X időközönként más-más paraméterekre módosítaná a PWM jelem. A C részével megbírkoznék csak azt nem tudom hogyan tudnám fűzni ezekhez a parancsokhoz amiket mellékeltél. Nem tudom érthető-e a kérdésem.
Ott van a csatolt programban. A switch-case részt nézd át. Nyomógombbal lehet választani az értéket, ahol a timer2 értéket állítja. A kitöltést a az analóg rész beolvasása adja.
Köszi. Ez most egy ideig nekem jó háziolvasmány lesz.
Tölts fel rá egy bootloadert, ha az se megy, akkor keress a kapcsolásban hibát, végső esetben tönre ment a PIC!
Ó, hogy a jó mindenit a C18-as fordítónak. Deklaráltam pár változót, mondjuk
Utána ezeket egy függvényben akartam módosítani, és átadtam az első változó címét:
A függvényben utána egy ciklussal módosítottam a változókat:
Legnagyobb meglepetésemre négy változó módosult, egy nem. Fél óráig szenvedtem, mire rájöttem, hogy az unsigned char a, b, c, d, e; nem egymás utáni memóriahelyre rakja a változókat, hanem a fordító tetszése szerint. Meg lehet oldani, hogy ezek a változók szépen sorban szerepeljenek a memóriában? Vagy inkább csináljak egy uniont? Lehet olyan uniont, hogy karaktertömbként és bájtonkénti változókként is látszik?
Szia!
Használj tömböt, az elemei egymás utáni címeken lesznek. int a[4]; A string karakter tömb, a tömb neve egyben a memória területére mutató pointer -ként is használható. char message[255]; A byte -onkénti olvasása megoldható a (byte)message[x] vagy a (byte)(*(message + x)) alakban is...
Ezt tudom, de azért használok változókat, mert 16 db van, és a nevükkel sokkal könnyebb kezelni őket, mint egy tömb egy elemére hivatkozni. Tehát a "kutya=1; macska=0;" egyszerűbb, mint a tömb[5]=1; tömb[12]=0;
A kód elején definiálj egy nevet a tömb egyes elemeihez és meg van oldva. Pl:
Így ha átírod a kutya értékét akkor az a tomb 5-dik eleme lesz Idézet: Elvileg lehetséges, pl. ha a VUSB, D+, D- kivezetések valamelyike túlfeszültséget kap. Mellesleg megmérhetnéd, hogy a VUSB lábon mekkora feszültség van. Ha nagyon eltér 3,3 V-tól, akkor az USB nem tud kommunikálni a PC-vel. „Olyan lehet, hogy csak az USB romlik el a PIC-en?”
3.45 V van rajta. Az szerintem annyira nem vészes. De azt tervezem, hogy holnap veszek egy új PIC-et mert már nem tudok mást kitalálni...
Idézet: Az jó. „3.45 V van rajta.” A korábbi beírásodhoz csatolt HEX állomány viszont nem úgy linkelted, ahogy ajánlottam, s érdekes módon a 0x02A-0x82A közötti terület üresem maradt. Vagy nem jó linker állományt használtál, vagy rossz linker opciót (pl. /uMHCP_BOOTLOADER) adtál meg. De ez nem vigasz, ha a tőlem kapott HEX állománnyal sem sikerült éltre kelteni az áramkört. Egyébként más gépen, vagy más USB porton próbáltad már?
Próbáltam több porton linux illetve windows alatt és egy egylapos gépen is, de semmi.
Most kipróbáltam egy másikon PC-n is az általad küldött HEX-el de ott se reagál.
Sziasztok!
A megtudja nézni valaki a kis programomat, jó e az elgondolásom vagy tulbonyolizáltam. A feladata annyi lenne hogy a PORTC 0 és 1 lábán felváltva van magas jel. kb. 1kHz-nek kell lennie. Ami még csinálnia kell majd egy A/D mérés. De az késöbbi dolog. Proteusba müködik. Elöre is köszi
我不认为任何人会费心的十六进制代码解码。Kb. ilyen volt a kérdésfeltevésed...
Miért nem a forráskódot csatoltad be?
El se hiszem de működik. Vettem egy új PIC-et és ezzel megy. Köszi szépen mindenkinek aki segített
Csak azt tudom elképzelni, hogy a régi PIC USB bemenete valamelyik összedugásnál kapott a PC-től egy nagy sztatikus töltésből eredő pofontot, és kimúlt. A PIC többi része attól akár kifogástalan is maradhatott.
Értem. Ezt el lehet valahogy kerülni vagy kivédeni? Nem igazán szeretném, hogy a mostani is így tönkremenjen!
Az áramköröd földjét kell elsőként közösíteni a PC földjével. Egy normális USB kábelnél ez általában teljesülni szokott, főleg ha a PIC oldalon a csatlakozó fém házát nem felejted el földre kötni.
Mindamellett tökéletes védelem nincs, láttam már USB pen drive-ot is egy bedugástól tönkremenni.
Akkor ezért van az h a csatlakozókban (mind a kábelen mind a nyákoson) előrébb vannak az áramot hozó érintkezők.
Idézet: „ a PIC oldalon a csatlakozó fém házát nem felejted el földre kötni.” Csak, hogy biztos legyek: ez azt jelenti, hogy a nyákos csatlakozót a nyákba fogó "karmait" kössem össze az USB 4. lábával? Nem akarom megint elrontani Idézet: Igen. „a nyákos csatlakozót a nyákba fogó "karmait" kössem össze az USB 4. lábával?”
Na akkor még kérdés
Az mitől van, hogy bedugom és működik és egyszer csak a windows nyomja az a hangot h lecsatlakozott az usb? Attól félek, hogy ettől fog tönkre menni megint a PIC. |
Bejelentkezés
Hirdetés |