Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1202 / 1319
(#) Hp41C válasza usane hozzászólására (») Nov 11, 2015 /
 
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.
(#) Ferkógyerek hozzászólása Nov 12, 2015 /
 
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?
(#) Hp41C válasza Ferkógyerek hozzászólására (») Nov 12, 2015 / 2
 
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.
(#) Ferkógyerek válasza Hp41C hozzászólására (») Nov 12, 2015 /
 
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!
(#) pajti2 hozzászólása Nov 12, 2015 /
 
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.
(#) mark_domonkos hozzászólása Nov 13, 2015 /
 
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
(#) icserny válasza mark_domonkos hozzászólására (») Nov 13, 2015 /
 
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....
(#) bbalazs_ válasza mark_domonkos hozzászólására (») Nov 13, 2015 /
 
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.
(#) Beles hozzászólása Nov 13, 2015 /
 
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.
(#) cross51 válasza Beles hozzászólására (») Nov 13, 2015 /
 
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?
(#) Beles válasza cross51 hozzászólására (») Nov 13, 2015 /
 
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.).
(#) Wezuv hozzászólása Nov 14, 2015 /
 
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:
  1. void Delayus(WORD delay)
  2. {
  3.     unsigned int int_status, timeOwer;
  4.     while( delay-- )
  5.     {
  6.         int_status = INTDisableInterrupts();
  7.         OpenCoreTimer(GetSystemClock() / 2000000);
  8.         INTRestoreInterrupts(int_status);
  9.         mCTClearIntFlag();
  10.         //timeOwer=1000;
  11.         //while( !mCTGetIntFlag() && timeOwer--);
  12.         while( !mCTGetIntFlag());
  13.     }
  14.     mCTClearIntFlag();
  15. }

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!
(#) Beles válasza Wezuv hozzászólására (») Nov 14, 2015 /
 
Szia!
Én PIC32MZ-n ezt használom, és nekem működik. Lehet hogy jó az MX szériára is?
  1. void __delay_ms(unsigned int msec)
  2. {
  3.  
  4.     unsigned int tWait;
  5.     WriteCoreTimer(0);
  6.     tWait=(SYSFREQ/2000)*msec;
  7.     while(ReadCoreTimer() < tWait);
  8. }
(#) Wezuv válasza Beles hozzászólására (») Nov 14, 2015 /
 
Igen, ez ugyanúgy a CT-t használja, csak másképp. Kipróbálom, köszi!
(#) Attila86 hozzászólása Nov 14, 2015 /
 
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?
(#) Beles válasza Attila86 hozzászólására (») Nov 14, 2015 /
 
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”
(#) Attila86 válasza Beles hozzászólására (») Nov 22, 2015 /
 
Köszönöm!
(#) Attila86 hozzászólása Nov 22, 2015 /
 
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.
(#) Beles válasza Attila86 hozzászólására (») Nov 22, 2015 /
 
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ő.
(#) Attila86 válasza Beles hozzászólására (») Nov 22, 2015 /
 
Ú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.
(#) Wezuv válasza Attila86 hozzászólására (») Nov 22, 2015 /
 
Valamit elnézel a rajzon...
(#) diablo válasza Attila86 hozzászólására (») Nov 24, 2015 /
 
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.
(#) ktamas66 válasza Attila86 hozzászólására (») Nov 24, 2015 /
 
Miért így? Nincs abban a PIC-ben PWM modul komplementer kimenettel?
(#) Wezuv hozzászólása Nov 24, 2015 /
 
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!
(#) ktamas66 válasza Wezuv hozzászólására (») Nov 24, 2015 / 1
 
Gondolatban tegyél egy feszmérőt a piezora. Mikor mit mutatna?
(#) Hp41C válasza Attila86 hozzászólására (») Nov 24, 2015 /
 
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.
(#) Wezuv válasza ktamas66 hozzászólására (») Nov 24, 2015 /
 
Valóban, én néztem el a rajzot.
(#) Droot válasza Wezuv hozzászólására (») Nov 24, 2015 /
 
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.
(#) usane válasza Wezuv hozzászólására (») Nov 24, 2015 /
 
Én sem vágom miért kell egy piezzot szimmetrikusan meghajtani. Azon kívül, hogy dupla lesz a fesz rajta semmi értelme.
(#) kissi válasza usane hozzászólására (») Nov 24, 2015 /
 
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 !
Következő: »»   1202 / 1319
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem