Fórum témák
» Több friss téma |
Fórum » PIC - Miértek, hogyanok haladóknak
Szia!
Tudnál küldeni nekem egy működő asm verziót, amit át tudnék alakítani az én PIC-emre. Iszonyú fontos lenne, muszáj összehoznom a szenzort a PIC-el, már így is túlmentem a határidőn, pedig napi 13-14 órában CSAK ezt programozom már vagy 2 hete és már csak ez van vissza és sehogy sem megy....
Szia!
A PIC18F2550-ben az MCLR opcionális funkció, tehát ha úgy van programozva, akkor az 1. láb csak RE3 és VPP bemeneteként szolgál. Ilyenkor nem szükséges felhúzó- és soros áramkorlátozó ellenállás. Az MCLR lábra kb. 1uA szivárgási áramot adnak meg, ami elegendő lehet arra hogy ne töltődjön fel a vezeték.
Látom nem érted az egészet... Mielőtt válaszolsz olvasd el amit erről írtunk itt össze!
Miért mondod ezt?
Normál körülmények között nem szükséges felhúzóellenállás, védődióda pedig van a lábon. Természetesen a külső felhúzótag biztonsági okokból jól jöhet, ezt nem kétlem.
Annyit azért korrigálnék, hogy a védődióda itt valóban csak a negatív feszültségek ellen van, vagyis a vonal túltöltődésének ez nem szab gátat. Így külső ellenállás nélkül csak a bemenet saját ellenállásán keresztül tud az kisülni.
Most az AN735 alapján írtam egy másik programot, de ez sem jó, ez is elakad.... Azért mellékelem.
Maximum 5uA áramot adnak meg, ami azt jelenti, akár 5pA is lehetséges.
Ez miért így oldod meg? Miért nem így?
Ez a bit az Acknowledge Status bit, csak azt kell ellenőrizned nem? De ha már a bonyolultabbat választod, az 0x1F 'és' kapcsolattal nem a 6. bitet vizsgálja! Mit szeretnél itt vizsgálni?
Ez így van leírva a doksiba, onnan vettem. Gondoltam ők csak jót írnak le.
Aha, akkor én sem értem, de nézd meg a most belinkelt kódot, abban azt a módszert használják, amit írtam. Az 1F-et nem értem, az akkor is lehet 0, ha a 6. bit 1. ??
Na mindegy, próbáld a most ajánlott forrásból! Bővebben: Link
Átírtam a forrásfájlt, de ez is elakad. Már nagyon fogy a türelmem....
Milyen I2C eszközzel szeretnél kommunikálni? Hány byte címzés kell neki? Hol akad el - a szimulátorban?
rx_wait2
btfss PIR1,SSPIF ; Check if operation completed goto rx_wait2 Ezen nem tud továbbmenni.
A szimulátorban?
Mivel programozod? Ha PICKit2 -vel, akkor egy 3 csatornás logikai analizátorod is van - csak a SCL és SDA vonalakra kell egy-egy 74HC125/126 meghajtó kapu a PICKit2 bemenetei felé (azok miatt a fránya lehúzó 4k7 ellenállások miatt). A Pickit2 programja segítségével fel tudod venni a jelalakokat is. Idézet: „The TC74 is internally programmed to have a default SMBus/I2C address value of 1001 101b. Seven other addresses are available by custom order (contact Microchip Technology Inc.”
Ez azért van, mert nem jön válasz a TC74-től(nem történik SSP megszakítás, illetve nem állítódik be a jelzése...).
Milyen módon szólítod meg, milyen címet használsz(protokol). ?
Az adatlap szerinti címet használom, tehát mivel nekem A0-s verzióm van, ezért a címe 1001 000
Egy - egy NPN tranzisztor (BC547 vagy hasonló) emitterkövetőnek bekötve az SCL és az SDA jelekre: C a tápra, B a jelre, E egy ellenállással a földre. Az emitterekről menjenek a jelek a PICKit2 bemeneteire.
Fel van húzva rendesen mind a két jel? Meghajtás nélkül kialakul-e a 4V -nál magasabb szint? Nincs valahol zárlat? Kontroller nélkül 470 ohm ellenállással alacsony szintre lehet húzni a jeleket? Melyik memória területen van a datao és a CELZIUS változó deklarálva?
Újra végiggondoltam! Az SSPIF beállítódik sok esemény hatására(lásd adatlap PIR1.) ha master módban van az I2C. Tehát ott valami nagyon nem okés, mert annak a bitnek be kéne állítódni, függetlenül a TC74-től! Ez irányban keresgélj!
547-esem van Melyik lábára kell kötni a mérendőt a PICkit2nek? És hol van benne az mplabban a logikai analizátor?
A 0x20 memóriaterületen van. A feszeket megmértem. Minden mérés a földhöz képest történt: SCL láb 0,5V, SDA láb 0,003 V, a felhúzó ellenállásokon 4,6 V van.
A Microchip lajáról a PICKit2 önálló kezelő programját kell letölteni. Telepíteni, elindítani, Tools / Logic tools lapon az analizátorra állítani. Össze kell kötni a földet a pickit2 3. lábával, az SCL jel tranzisztorának emitterét a 4., az SDA jel tranzisztorának emitterét a 5. kivezetésre. A tápot is össze lehet kötni, de nem kötelező. Ha nincs összekötve, akkor a Vdd On -t be kell kapcsolni. A Trigger when panelen a Ch1 lefutó élére állítani a triggert. A sample rate-t beállítani, hogy benne legyen az egész olvasás és az órajel is látszódjon. A run gombbal indítani a mérést. Lefuttatni a programot. Az analizátor az első start -nál megáll, és mutatni fogja a jelalakot. Az AN976 -ban a képeken a jó jelalakokat megnézheted...
Ha a mérés nem állna meg, a PICKit2 nyomógombjával megállítható. Az MPlab - ban a debugger és programozó ne a PICKit2 legyen, amikor a mérést végzed... Mielőtt a PICKit2 -t csatlakoztatod, ellenőrizd le a tranzisztorok bekötését, működését is.
Nekem ez fura! Ott 4,8V kéne legyen a lábakon, mert az I2C vonalai alapból elengedettek! Ezért nem jön vissza az SSPIF jel, mert nem történik jelszint változás a kimeneten, mivel valami lehúzza!
|
Bejelentkezés
Hirdetés |