Fórum témák

» Több friss téma
Fórum » PIC - Miértek, hogyanok haladóknak
Lapozás: OK   838 / 1319
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
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....
(#) Zsora válasza szilva hozzászólására (») Nov 18, 2010 /
 
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.
(#) watt válasza Zsora hozzászólására (») Nov 18, 2010 /
 
Látom nem érted az egészet... Mielőtt válaszolsz olvasd el amit erről írtunk itt össze!
(#) Zsora válasza watt hozzászólására (») Nov 18, 2010 /
 
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.
(#) Zsora válasza Zsora hozzászólására (») Nov 18, 2010 /
 
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.
(#) Gamedavid válasza icserny hozzászólására (») Nov 18, 2010 /
 
Most az AN735 alapján írtam egy másik programot, de ez sem jó, ez is elakad.... Azért mellékelem.

iic.txt
    
(#) potyo válasza Zsora hozzászólására (») Nov 18, 2010 /
 
Maximum 5uA áramot adnak meg, ami azt jelenti, akár 5pA is lehetséges.
(#) watt válasza Zsora hozzászólására (») Nov 18, 2010 /
 
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Szia!

AN976 szemléletesen bemutatja az I2C kommunikációt és a forrása is letölthető...
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
  1. BSF          STATUS,RP0
  2.         movf       SSPCON2,w ; get copy
  3.         andlw       0x1F ; mask out
  4.         btfss      STATUS,Z ; test for

Ez miért így oldod meg? Miért nem így?
  1. BTFSC SSPCON2, ACKSTAT

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?
(#) Gamedavid válasza watt hozzászólására (») Nov 18, 2010 /
 
Ez így van leírva a doksiba, onnan vettem. Gondoltam ők csak jót írnak le.
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
Átírtam a forrásfájlt, de ez is elakad. Már nagyon fogy a türelmem....
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Hogy érted azt, hogy elakad? Hol?
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Milyen I2C eszközzel szeretnél kommunikálni? Hány byte címzés kell neki? Hol akad el - a szimulátorban?
(#) watt válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
(#) Gamedavid válasza watt hozzászólására (») Nov 18, 2010 /
 
rx_wait2
btfss PIR1,SSPIF ; Check if operation completed
goto rx_wait2

Ezen nem tud továbbmenni.
(#) Gamedavid válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Itt az átírt progi.

iic2.txt
    
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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.”
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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). ?
(#) Gamedavid válasza watt hozzászólására (») Nov 18, 2010 /
 
Az adatlap szerinti címet használom, tehát mivel nekem A0-s verzióm van, ezért a címe 1001 000
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
Nincsenek ilyen ic-im. :no:
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Jó oda a 74HC08 a kapuk egyik bemenete a tápjára kötve, jelenként két inverter a 74HC04 -ből...
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
Sajnos az sincs... :no:
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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?
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
Ú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!
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
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?
(#) Gamedavid válasza Hp41C hozzászólására (») Nov 18, 2010 /
 
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.
(#) Hp41C válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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.
(#) watt válasza Gamedavid hozzászólására (») Nov 18, 2010 /
 
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!
Következő: »»   838 / 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