Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Ha a beépített MSSP modult használod, tedd át Fosc/64-re.
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:
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
Előttem a DS21697F. A 4. lapon:
Clock Frequency (Note 8) FCLK: min. 0.105 — max. 2.1 MHz
Lemértem mindent.
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.
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
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.
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.
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.
Idézet: 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) „Lemértem mindent.”
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
Kínomba rajzolgattam:
A PICkit2 egy háromcsatornás logikai analizátor is (((a PICkit2.5 pedig négycsatornás.)))
A keresőmotor nem dobta ki az MCP3208-ra (nem értem), de itt van:
SPI gond, táp lehúz
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
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).
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.
Végső módom, már csak annyit próbáltam, hogy egy nyomógombot tettem egy bemenetre de azt sem tudta lekezelni
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
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; ?
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!
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...)
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)
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
Ááááá!!! Valóban... Egy délután "munkája"....
Nem tudom, hogy sírjak-e vagy örüljek. Nagyon szépen köszönöm
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. Idézet: 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. „Ja hogy az OC1-et akarod? Akkor nem egy 0-val kevesebbet írtál?”
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
Idézet: Hajaj, erről regényeket tudnék írni! „Hibákat minden esetben el lehet követni.”
É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.
|
Bejelentkezés
Hirdetés |