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....
![]()
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
![]()
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 |