Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
A régi MpLab -ban volt lehetőség a fordítás elött és után lefuttatni egy-egy cmd állományt.
Project / Build options / Project lapon a Custom build fülön lehetett beállítani. A Pre-build step -nél megadott állománnyal létrehozol egy include állományt, amiben minden futáskor módosítod a szimbólum(ok) értékét.
Sziasztok!
Egy nagyon furcsa problémával kapcsolatban kérem a segítségeteket. Van nálam javításon egy robotporszívó. A vezérlést benne egy PIC32MX360 végzi. A mikrovezérlő oszcillátorában egy 8MHz-es kerámia rezonátor van, szkóppal rámérve az OSC lábakra megy az oszcillátor, a program viszont nem fut (a kijelző és a perifériák tápellátása, melyet a PIC aktivál, nem működnek). A rezonátort kisebb frekvenciájúra cserélve elindul a program. Függvénygenerátorról táplálva az OSC1 bemenetet is ugyanez a helyzet, 7,5MHz-nél elindul a program, fölötte nem. Ha már elindult a program, a frekvenciát ismét fel lehet emelni az eredeti 8MHz-re, fut tovább. A frekvencia csökkentése nem megoldás a perifériákkal való soros kommunikáció miatt és a PIC cseréje sem a program nélkül. Találkozott már valaki hasonlóval?
Talán a Vcap lábra csatlakozó kondenzátor cseréje megoldhatja a problémát. LOW ESR 10µF kerámia kondenzátor kell.
Az említett, sima elkot kiforrasztva, az LCM3-al 35 OHM ESRt mértem. Kicseréltem egy kerámiára és beindult a PIC.
Nagyon köszönöm a segítséget!
Pic32mx-hez kellene valami reset szekvencia támogatás mla-ból. Próbálom keresgélni, merre lehet, mert megnézném a forráskódját is. Aki sikeresen találkozott már vele, legyen szíves hagyjon itt róla egy feljegyzést, hogy melyik mla verzió, és hova kukkantsak benne. Köszönöm.
Sziasztok!
Nekem olyan problémám lenne hogy van egy zümmerem egy PIC16F628a-ra kötve, méghozzá az RA4 lábra. Biztos hogy jó a bekötés, szóval csak a program lehet a hibás mert, csak nem teljesen értem hol a probléma. Az alábbi kód van bepötyögve, de nem zümmög a zümmer. __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_ON & _CP_OFF & _LVP_OFF & _BODEN_OFF org 0 INIT: movlw 0x07 ; movwf CMCON ; minden analóg láb kikapcsolva BSF STATUS,RP0 ; bankváltás -> trisahoz (bank1) MOVLW 0xEC ; W-be a hexa EC-t MOVWF TRISA ; PORTA 0,1,4-es lábak kimenet a többi be CLRF TRISB ; PORTB minden lába kimenet BCF STATUS,RP0 ; vissza bank0 bsf PORTA,RA4 goto $-1 end Előre is köszi a segítséget
Valószínűleg megtaláltad az egyetlen nyitott nyelőelektródás (csak lefelé húz) kimenetet és nem a tápfeszültség és a kimenet közé kötötted a picergőt. Persze, ha lehúzásra kötöd be, akkor bcf PORTA,RA4 után szólal meg....
Es ha a zummer sima piezo (vagyis tapfesz egyszeru rakotesere NEM szolal meg), akkor meg ki-be is kell kapcsolnod, amit a program nem tesz meg. Ideiglenesen helyettesitsd egy LED-del, hogy lasd a szintet. A led negativ polusat kosd az A4-re, a pozitiv felet egy ellenallason at tapra.
Sziasztok!
PIC32MZ1024ECG064 mikrovezérlővel kinlódok. USB Host módban billentyűzetet szeretnék kezelni. Azonban nem ismeri fel a billentyűzetet akármit csinálok. Az Mplab Harmony frameworkot használom, azzal készítettem el a projektet is, ahoz nagyon nyúlni elvileg nem kell. Órajelnek 24Mhz kristály van,(szkóppal mérve OK), config bitek ennek megfelelően beállítva. A VUSB3V3 lábat az összes VDD-vel együtt 3.3V-ra kötöttem, VBUS lábat az USB 5V-jára, USBID lábat a GND-re. Az USB állapota waiting_for_device_attach, tehát fut jól a kód. Valaki foglalkozott már ilyennel? Semmi ötletem nincs már, reggel óta ezzel küzdök.
Nem nagyon foglalkoztam 32 bites host móddal (csak 8 bit slave). Azt tudjuk, hogy az Mplab Harmony pollingal működik vagy megszakítással, esetleg az USB-re vonatkozó megszakítás nincs engedélyezve vagy nem megfelelő prioritásra van beállítva?
Poolingal megy jelenleg. Minden függvény ki van dolgozva előre a library-ban, tehát van poolingra, dma-ra és interruptra is függvény, de a poolingosat használja. Nem hiszem hogy a kóddal lenne gond. Összehasonlítottam a gyári starter kit kódjához, és nincs eltérés. Csak az MX szériás PIC-re van írva. De összeségében véve az USB ugyan azokat a file-okat használja. Csak a konfigolása más a eszköznek(órajel, ki és bemenetek stb.).
Sziasztok! PIC32MX-el dolgozom. Időzítést használok néhány helyen(engedélyező lábak vezérlése stb.) Van erre egy jó eszköz, a Core Timer(CT). Ezt ajánlják a pontosság miatt. Van egy ilyen rutin:
A problémám, hogy néha beleragad a while( !mCTGetIntFlag()); sorba, azaz nem állítódik be a túlcsordulás bit. Ha tovább ugrasztom kézzel a programot, akkor utána megint fut. Ha beteszem a kikommentezett sorokat, akkor se ragad bele. Hallotatok róla, hogy mi okozhatja ezt? Hogy létezik, hogy a CT leáll, azaz nem állítódik be soha a IFS0bits.CTIF bit? Köszi!
Szia!
Én PIC32MZ-n ezt használom, és nekem működik. Lehet hogy jó az MX szériára is?
Igen, ez ugyanúgy a CT-t használja, csak másképp. Kipróbálom, köszi!
A némelyik PIC-ben meglévő 16 bites sztereó DAC-ot szeretném sima egyszerű 0V-3,3V közti konstans egyenfeszültség előállítására használni.
Átolvasgattam az erről a perifériáról szóló Reference manual-t és ha jól sikerült kihámoznom belőle, akkor ez lehetséges. Azonban nem teljesen értem; 0-ra fog kiadni féltápot, 32767-re tápot és -32767-re pedig 0V-ot?
Szia. Ahogy én nézem a DACxCON 8. bitjével tudod beállítani, hogy unsigned vagy signed formában akarod használni. 8. oldalon van amit linkeltél.
Idézet: „33.4.1 Data Format The DAC module accepts 16-bit input data in two formats. Data formatting is controlled by the Data Format Select (FORM) bit in the DAC Control (DACxCON<8>) register. The supported formats are: • 1 = Signed (2’s complement) • 0 = Unsigned If the FORM bit is configured for unsigned data (FORM = 0), the user input data yields the following behavior: • 0xFFFF = Most positive output voltage • 0x8000 = Midpoint output voltage • 0x7FFF = Value just below midpoint • 0x0000 = Minimum output voltage If the FORM bit is configured for signed data (FORM = 1), the user input data yields the following behavior: • 0x7FFF = Most positive output voltage • 0x0000 = Midpoint output voltage • 0xFFFF = Value just below midpoint • 0x8000 = Minimum output voltage”
Egy kis piezo hangszórót szeretnék kötni egy dsPIC-re. Meg lehet valahogy azt oldani, hogy a PWM jel ellenfázisban legyen a PIC két lábán?
Én arra gondoltam, hogy kellene két output compare modul PWM móddal és az egyiknek mindig a kívánt kitöltési tényezőt adom meg, a másiknak pedig az ellentettjét.
De miért kellene ehez ellen fázis? Simán jó az egy PWM kimenet, a másik lába a piezónak meg testre megy. Egyébként amit írsz, hogy ellentetjét adod meg, az nem fog működik. Mert egyszerre kapcsol majd a két kimenet. Tegyük fel hogy 80%-20%-ra álítod be a két kitöltést. Akkor egyszerre magas szint lesz mind a két kimeneten adott időpontban, csak az egyiknek 4x olyan sokáig lesz magas szint a kimenetén. Remélem érthető.
Úgy gondoltam, hogy az OC1R ugyan az lenne mint az OC2RS, az OC2R pedig az OC1RS-el lenne egyenlő. "Continuous Pulse" módban használva az OC modulokat elvileg így pont ellentétes polaritású lesz a jel. Legalábbis ha jól értem az adatlapot.
Azért szeretném így, hogy ne legyen polarizálva a piezo, hogy váltakozóáram legyen rajta ne egyen. Így korrekt egy hangszórót meghajtani. Plusz így a hangereje is nagyobb lesz.
Egy 16F/18F-es PIC-nél szerintem: RC1 = ~RC2; Ahol RC2 a PWM kimenet, RC1 pedig az ellen fázisú jel, ha jól értelmezem amit szeretnél.
De szerintem meg direktbe nem korrekt meghajtani a PIC-ről egy piezo-t. Sok kapcsolásnál tesznek elé egy meghajtó tranzisztort. Bár tény, hogy jól működik tranzisztor nélkül is.
Miért így? Nincs abban a PIC-ben PWM modul komplementer kimenettel?
Tényleg senki nem jön rá, hogy 5V-os rendszerben tök mindegy, hogy két ellenfázisú kimenetre kötöm a Piezót, vagy csak ez egyik lábát simát testre? Ez nem egy hídkapcsolású erősítő!!! A feszültség mindig (majdnem)5V-lesz a kapcsok között, vagy 0!
Gondolatban tegyél egy feszmérőt a piezora. Mikor mit mutatna?
74HCT1G86: A xor kapu egyik bemenete a PWM kimenet, a másik egy vezérlőjel. A piezót kösd a PWM kimenete és a xor kapu kimenete közé. Ha a vezérlőjel magas, a piezo szól, ha alacsony, azonos fázisú vezérlést kap azaz nem szól. Ha a PWM -et is letiltod, végkép nem szól.
Meg kell nézni a piezo adatlapjában, hogy a mikrokontroller tápfeszültségén mekkora az áramfogyasztása és összehasonlítani a PIC lábán lévő maximális árammal. Nem kell bonyolult meghajtó, vannak eszközeim amikben direktben van meghajtva, igaz AVR lábáról, de ez azért nem egy hangszóró. Ha az kell hogy hangosabban szóljon adj rá nagyobb tápfeszt, persze a maximum-minimum tartományon belül és akkor már beköthetsz egy FET-et.
Én sem vágom miért kell egy piezzot szimmetrikusan meghajtani. Azon kívül, hogy dupla lesz a fesz rajta semmi értelme.
Nem lesz dupla a feszültség, de meg tudod fordítani a feszültség polaritását --> kapacitív terhelésnél nem hátrány !
|
Bejelentkezés
Hirdetés |