Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   1169 / 1320
(#) ktamas66 válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Ha a beépített MSSP modult használod, tedd át Fosc/64-re.
(#) Attila86 válasza ktamas66 hozzászólására (») Márc 23, 2014 /
 
Igen, így is cselekedtem. Ez a legegyszerűbb, csak egyetlen bitet kellett átírnom az egész programban. Most már 500kHz-en jár az SPI, de sajnos így sem ad ki semmit az MCP3204:
(#) ktamas66 válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Pedig jónak tűnik. Az oszcilloszkópon nézd meg az analóg jelet is az órajel mellé.
A hozzászólás módosítva: Márc 23, 2014
(#) Hp41C válasza ktamas66 hozzászólására (») Márc 23, 2014 /
 
Előttem a DS21697F. A 4. lapon:
Clock Frequency (Note 8) FCLK: min. 0.105 — max. 2.1 MHz
(#) ktamas66 válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Kifogytam a jó ötletekből . Már csak ilyenek maradtak: ellenőrizd le, hogy a Dout kimenet tényleg nagy impedanciás, nincs rövidzárlat, a PIC SDI jól van konfigurálva.
(#) Attila86 válasza ktamas66 hozzászólására (») Márc 23, 2014 /
 
Az MCP3204 DOUT lába eljut a PIC SDI bemenetére és nincs semmi zárlat a földhöz vagy a környező vezetősávokhoz. A PIC SDI-jének működnie kell na de igazából ha rossz akkor sem magyarázza a szkóppal látott jelalakot. Pont ezért méricskéltem szkóppal hogy a PIC szoftverének esetleges hibái ne szóljanak bele a hibakeresésbe.

Viszont hogy nagy impedanciás-e a DOUT azt még valóban nem néztük! Megmértem hát azt is és végre valami értelmes dolgot látunk! Beforrasztottam egy felhúzó ellenállást és megnéztem így hogy mit ad ki az MCP3204. Gyönyörűen látszik az ami az adatlapjában van lerajzolva; a 11. bit-ig nagy impedanciás hiszen most a felhúzó ellenállás felhúzza, aztán jön egy nulla bit és a mért jel 12db bitje ami még mindig stabil nulla. Na de legalább most már látjuk hogy valami életjelet ad ki magából az MCP3204! Szóval elvileg az SPI interfésze működik neki, csak mérni nem akar. Lehet hogy az A/D mérő része rossz vagy nem tudom már mire gondoljak...
Na ez van a DOUT lábán ha odapöccintek egy felhúzó ellenállást:
A hozzászólás módosítva: Márc 23, 2014
(#) Seton válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Lehet próbálkozni az MCP3204-gyel, lehet sikerül valami. A tapasztalatom az, hogy ez az ADC nem sikerült túl jól, esetemben beszerzési forrástól függetlenül sorra húzta le mind a tápot földre szimplán tesztkörnyezetben némi működés után. Több beszerzési forrás, tokozás kipróbálása után a más típus beépítése más gyártótól véglegesen megoldotta a problémát.
Találni egyébként a HE-n erről topikot (MCP3208), bár tény, hogy nem SPI gond, de sejtet valamit.
(#) Attila86 válasza Seton hozzászólására (») Márc 23, 2014 /
 
Külön topik van róla? Én nem találtam.
Holnap veszek egy másik MCP3204-et és kicserélem, ha azzal sem lesz jó akkor áttervezem az áramkört egy másik A/D-re.
(#) ktamas66 válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Hogy ne kelljen mindent tesztnek beforrasztgatni, használom a PICkit Serial Analyzert (utánépítve), még számítógépről ki lehet próbálni/tesztelni/tanulni a dolgokat.

DSC01678.JPG
    
(#) icserny válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
Idézet:
„Lemértem mindent.”
Az ábráról nekem úgy tűnik, hogy a Din jel túl hamar leesik 1-ről 0-ra. Biztos, hogy jól állítottad be az SPI módot? (CKP=0, CKE=1 jelenti a "mode 0,0" választást)
(#) Attila86 válasza icserny hozzászólására (») Márc 23, 2014 /
 
Igen, így van beállítva az SPI:
movlw b'01000000'
movwf SSPSTAT
movlw b'00100010'
movwf SSPCON1
bsf MCP3204_CS
bsf MCP4922_CS
bsf MCP4922_LDAC
A hozzászólás módosítva: Márc 23, 2014
(#) Attila86 válasza icserny hozzászólására (») Márc 23, 2014 /
 
Kínomba rajzolgattam:
(#) Hp41C válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
A PICkit2 egy háromcsatornás logikai analizátor is (((a PICkit2.5 pedig négycsatornás.)))
(#) Seton válasza Attila86 hozzászólására (») Márc 23, 2014 /
 
A keresőmotor nem dobta ki az MCP3208-ra (nem értem), de itt van:
SPI gond, táp lehúz
(#) Attila86 válasza Seton hozzászólására (») Márc 23, 2014 /
 
Aham*, köszi. Hát nem tudom...
Közben nézem és a Chipcadben nincs is most készleten az MCP3204-ből szóval nem fogok tudni holnap venni. Lehet tényleg érdemes lenne egy másik A/D-re váltani de a Chipcadnél nincs más, máshol meg nem nagyon tudom hol lehetne kapni. Utánanézek...
A hozzászólás módosítva: Márc 24, 2014
(#) Seton válasza Attila86 hozzászólására (») Márc 24, 2014 /
 
Ha otthon lennék, akkor adnék neked szívesen egy ilyet ingyenbe, nem feledve a NYÁK-os tevékenységedet. De ha van türelmed, megvárhatod postán a gyártótól (nem drága).
(#) Kiss Gábor hozzászólása Márc 27, 2014 /
 
Sziasztok!

DSPIC33-al kell foglalkoznom, alábbi problémába ütköztem. INT2 bemenetére egy jel van kötve, aminek generálni kéne egy interruptot, de nem működik.

  1. int main()
  2. {
  3. /....../
  4. INTCON2 = 0x001E;      
  5. IFS1bits.INT2IF = 0;  
  6. IEC1bits.INT2IE = 1;  
  7.  
  8. TRISAbits.TRISA13=1;
  9. AD1PCFGL=0xFFFF;
  10. AD1PCFGH=0xFFFF;
  11. /..../
  12. while()
  13. {}
  14. }
  15. void __attribute__((interrupt, no_auto_psv)) _INT2Interrupt(void)
  16. {
  17.         PORTBbits.RB15=0;
  18.         IFS1bits.INT2IF = 0;    //Clear the INT2 interrupt flag or else
  19.                                 //the CPU will keep vectoring back to the ISR
  20. }


Végső módom, már csak annyit próbáltam, hogy egy nyomógombot tettem egy bemenetre de azt sem tudta lekezelni

  1. int main()
  2. {
  3. /.../
  4. TRISBbits.TRISB14=1;
  5. TRISBbits.TRISB15=0;
  6. while()
  7. {
  8. if(!PORTBbits.RB14)
  9. {
  10. PORTBbits.RB15=1;
  11. }
  12. else
  13. {
  14. PORTBbits.RB15=0;
  15. }
  16. }



RB15 lábon egy led van, RB14-es lábon meg egy kapcsoló, de ezzel sem működik, sőt az AD converter sem működik. Mit rontok el a bemenetek kezelésével?? Kimenetek tökéletesen működnek, az LCD kijelzőt szépen lekezeli, de valahogy a bemenetekkel baj van.

üdv. Gábor
(#) icserny válasza Kiss Gábor hozzászólására (») Márc 27, 2014 /
 
Lehet, hogy hiányzik egy _INT2R = n; hozzárendelés, ahol n a kiválasztott RPn láb sorszáma?

Magyarázat: bizonyos perifériák nincsenek automatikusan és fixen hozzárendelve kivezetésekhez, ezt nekünk kell az alkalmazásban megtenni.

INT0,1,2 bemeneteknél azt is meg kell adni, hogy fel- vagy lefutó jelre legyen érzékeny (_INT1EP=1 vagy _INT1EP=0).

A második programban nem kell az AD1PCFGL=0xFFFF; AD1PCFGH=0xFFFF; ?
(#) Kisvé hozzászólása Márc 29, 2014 /
 
Sziasztok!

Egy olyan problémával szembesültem, hogy egy dsPIC33EP256MC502 uC-en hiába állítok be valamit az RPORx (kimeneti periféria választó) regiszterbe,az nem "mappolódik" hozzá. Onnan látom biztosan, hogy nem rendelődik hozzá, mivel digitális kimenet továbbra is használható marad, azaz be tudom állítani 1-be vagy 0-ba. Korábban már számtalanszor csináltam ilyen más dsPIC-ekekt és mindig működtek is elsőre. Van valami ötlet, hogy mi lehet a gond?
Erről van szó konkrétan: RPOR4bits.RP42R = 0b01000;

Köszi előre is!
(#) Zsora válasza Kisvé hozzászólására (») Márc 29, 2014 /
 
Az SDO2 kimenetet szeretnéd az RP42 lábra kitenni? Elvileg az SPI busz teljesen átveszi az irányítást a ki- és bemeneteken, tehát nem kell külön a TRIS regiszterekkel foglalkozni. Aztán az RP42 láb is kétirányú, ellentétben az RPIx lábakkal, amik csak bemenetek lehetnek.
Kérdések:
- Elvégezted az UNLOCK folyamatot? (Egyszer?)
- Nincs tiltva az SPI2 a PMD1 regiszterben?
- Tiltva vannak az analóg funkciók? (Bár akkor a PORT sem működne...)
(#) Kisvé válasza Zsora hozzászólására (») Márc 29, 2014 /
 
Köszi a gyors választ!

Ebben a PIC-ben ez nem SPI-os láb, hanem az OC1.
- UNLOCKolni, amennyire én tudom nem kell, mert defaultban írhatók ezek a regiszterek. Végső elkeseredésemben szimulátorban ellenőriztem is.
- Nincs tiltva az OC modul, minden defaulton van hagyva.
- Ezen a lábon nincs analóg funkció, így nincs tiltva, másrészt ha kimenetnek használod, akkor nem is kell tiltani (legjobb tudomásom szerint)
(#) Zsora válasza Kisvé hozzászólására (») Márc 29, 2014 / 1
 
Ja hogy az OC1-et akarod? Akkor nem egy 0-val kevesebbet írtál?
0b01000: SDO2
0b010000: OC1
A hozzászólás módosítva: Márc 29, 2014
(#) Kisvé válasza Zsora hozzászólására (») Márc 29, 2014 /
 
Ááááá!!! Valóban... Egy délután "munkája"....
Nem tudom, hogy sírjak-e vagy örüljek.
Nagyon szépen köszönöm
(#) Zsora válasza Kisvé hozzászólására (») Márc 29, 2014 /
 
Szívesen!
Én is folyton ilyen elírásokon csúszok el, aztán egy fél napot keresem a hibát a hajamat tépve.
(#) Kisvé válasza Zsora hozzászólására (») Márc 29, 2014 /
 
Átérzem... Az agyvérzés szélén álltam
(#) icserny válasza Zsora hozzászólására (») Márc 30, 2014 /
 
Idézet:
„Ja hogy az OC1-et akarod? Akkor nem egy 0-val kevesebbet írtál?”
Pont ezért nem érdemes a bináris alakot erőltetni. A 0x08 és a 0x10 különbsége mindjárt feltűnőbb lenne.
(#) watt válasza icserny hozzászólására (») Márc 30, 2014 /
 
Mindennek megvan a hátránya. Ha biteket kell egy regiszterben beállítani, akkor nekem jobban tetszik a bináris alak. Hibákat minden esetben el lehet követni.
A hozzászólás módosítva: Márc 30, 2014
(#) icserny válasza watt hozzászólására (») Márc 30, 2014 /
 
Idézet:
„Hibákat minden esetben el lehet követni.”
Hajaj, erről regényeket tudnék írni!
(#) Hp41C válasza Kisvé hozzászólására (») Márc 30, 2014 /
 
Éredemes lenne konstansokat létrehozni ezekre a beállításokra. Nem is értem, miért nem tartalmazza őket a processzort leíró (inc vagy h) állomány.
Következő: »»   1169 / 1320
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