Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

SW I2C works while HW I2C doesn't - PIC24FJ64GB002

[es] :: Elektronika :: Mikrokontroleri :: SW I2C works while HW I2C doesn't - PIC24FJ64GB002

Strane: 1 2

[ Pregleda: 5518 | Odgovora: 38 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 15:14 - pre 138 meseci
Pozz svima

Evo posto sam lijen copy/paste cu problem samo sto sam na engleskom napisao..

First of all I must to say that I googled a lot to solve my issue, but in the end I couldn't solve it so I came here to ask help.

As in the title, the problem is that my uC PIC24FJ64GB002 hangs on I2C1_Write() instruction, waiting for ACK but the address IS correct and the same code using Soft_I2C_Write() WORKS.
I tried alternative I2C pins for I2C1, I tried also I2C2 and neither worked (wiring is double checked and it's ok).
I don't have any logic analyzer or oscilloscope to see what happens but I'll leave the code here and the entire basic-project so you can look at it.

It's pretty simple.

Citat:
// Software I2C connections
sbit Soft_I2C_Scl at RB8_bit;
sbit Soft_I2C_Sda at RB9_bit;
sbit Soft_I2C_Scl_Direction at TRISB8_bit;
sbit Soft_I2C_Sda_Direction at TRISB9_bit;
// End Software I2C connections

char j, txt[4];

void main() {
AD1PCFG = 0xFFFF;
LATB = 0;
TRISB = 0;

LATA = 0;
TRISA = 0;

PPS_mapping(15, _INPUT, _U1RX );
PPS_Mapping(14, _OUTPUT, _U1TX);
UART1_Init(19200);

UART1_Write_Text("\nStarting..");

I2C1_Init(100000);
I2C1_Start();
I2C1_Write(0b10010000); // address TMP75 + W
I2C1_Write(0x00); // config register <= read temperature
I2C1_Restart();
I2C1_Write(0b10010001); // address TMP75 + R
j = I2C1_Read(1); // Reading 1 byte then send N_Ack(1)
I2C1_Stop();
UART1_Write_Text("\nTemperature : ");
shorttostr(j, txt);
Uart1_Write_Text(txt);

/*UART1_Write_Text("\nStarting..");

Soft_I2C_Init(); // Initialize Soft I2C communication ~20kHz
Soft_I2C_Start();
Soft_I2C_Write(0b10010000); // address TMP75 + W
Soft_I2C_Write(0x00); // config register <= read temperature
Soft_I2C_Stop();
Soft_I2C_Start();
Soft_I2C_Write(0b10010001); // address TMP75 + R
j = Soft_I2C_Read(1); // Reading 1 byte then send N_Ack(1)
Soft_I2C_Stop();
UART1_Write_Text("\nTemperature : ");
shorttostr(j, txt);
Uart1_Write_Text(txt);*/


while(1);

}

Any idea where the bug is ?

Koristim MikroC pro i stvarno ne razumem zasto kod stane na I2C1_Write() ? Ceka vjerovatno ACK od strane TMP75, ali adresa TMP75 je tacna i radi sa emulacijom I2C (Soft_I2C_Write() ).
Postavio sam isto pitanje na forumu od kompajlera pa ako tamo rijesim objavit cu i ovdje rjesenje.

Pozz

RIJESENJE MikroC dsPIC: Pin komunikacije SDA treba podesiti kao ULAZ, a ne kao IZLAZ, prije I2Cx_Init() procedure.
Code:

TRISB.B9 = 1;




[Ovu poruku je menjao sigi91 dana 19.12.2012. u 13:32 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 15:30 - pre 138 meseci
kakve si pullup-e stavio ?
sta ti je slave?
da li si probao C30 umesto mikroC ?
to sto ti soft i2c radi, da li radi u smislu da "prodje" ili si siguran da si iskomunicirao sa i2c slave-om to sto si hteo?
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 15:49 - pre 138 meseci
Pull-up su od 4.7k, probao sam razne 1-10k ali sam ostavio 4.7k
Slave mi je temperaturni senzor, TMP75 od Texas Instruments.
Nisam probao u C30...ali probat cu cim nadjem malo vise vremena
Siguran sam da imam komunikaciju jer dobijem nazad tacne podatke od senzora..

Probao sam isto da promijenim brzinu komunikacije kad koristim I2C HW ali opet nista.
Uvjek stane na prvoj instrukciji I2C1_Write(), stavljao sam kod da mi isprinta na UART kako bi znao gdje je tacno greska i uvjek tu stane.

Meni ovo sve vise lici na BUG u biblioteci za I2C, jer pokusao sam isto da uspostavim komunikaciju sa PCF8574 (IO Expander I2C) i ista stvar.
Pokusao sam istu stvar sa drugim PIC-om 24FJ64GB002, misleci da je u ovog HW otisao ili nesto ne valja i opet nista..
Sve lepo radi npr sa 12LF1840, sa njim i HW, i SW sve ok (ali ipak koristi drugi kompajler Mikroc za PIC16 dok je gore Mikroc za dsPIC).

EDIT: Ver. kompajlera je 5.8.0 ( trenutno zadnja )

[Ovu poruku je menjao sigi91 dana 17.12.2012. u 22:28 GMT+1]
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 17:38 - pre 138 meseci
Moj je savet da lepo napišeš svoje funkcije i onda tačno znaš šta radiš. Skini neki microchip kompajler pa prilagodi za mikroc ako već hoćeš njega da koristiš. Zanimljivo je da sam imao sličan problem ali mi hard i2c nije radio u Proteusu dok je sw radio. Kada sam sve vezao u realan sistem radilo je i jedno i drugo.
gorankg
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 18:41 - pre 138 meseci
@sigi91: Da li ti "zakucava" na hardveru ili u simulatoru?
Ako "zakucava" u sumulatoru, džaba da dalje pišeš. Samo test na lepo opipljivom hardveru.
Po ovom pitanju sam k'o "klipnjača" (mašinac ). Razvoj samo na HARDVERSKOJ platformi koju možeš u potpunosti da kontrolišeš (PullUp/PullDown na portovima, ...).
Simulator(i) legalni/izlečeni imaju svoje bubice koje mogu da ti zagorčaju život.
Jedna od "razvojnih" platformi:



a druga mi je EasyPIC6

--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
Prikačeni fajlovi
 
Odgovor na temu

elektrostudio
Vladimir Pavkovic
SZR Elektrostudio, servis idustrijskih
masina i software developer
Novi Sad

Član broj: 201423
Poruke: 283
*.dynamic.isp.telekom.rs.

Sajt: elektrostudio.com


+25 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 18:50 - pre 138 meseci
Najverovatnije ne dobijes ACK od device-a, nesto ne vidim gde je definisano da li I2C modul radi kao MASTER ili SLAVE. Probaj instrumentom da mernes nozicu SDA nakon write instrukcije te ako je device odgovorio kako treba trebao bi imati logicku nulu. Takodje probaj odmah read I2C bez i jedne write instrukcije pre nje da vidis hoce li se i tu zakucati.
Elektrostudio
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 18:59 - pre 138 meseci
Nista ne radim u simulatoru ukoliko imam hardware uvek spreman.

Ovo mi je jedna od najdrazih "razvojnih" platformi, ko je zainteresovan nek potrazi "SettoreZero Orbit16" na Google-u.
Jednostavno stane na instrukciji I2Cx_Write(data), ono sto ja mislim da je jeste da ceka ACK od strane slave-a (TMP75) ali ne mogu to da provjerim sta se desava na zicama jer nemam ni osciloskop a ni "logic analyzer".

@goran_68
Pa deo koda u prvom postu je recimo funkcija za citanje temperature
Code:
I2C1_Start();
I2C1_Write(0b10010000); // address TMP75 + W
I2C1_Write(0x00); // config register <= read temperature
I2C1_Restart();
I2C1_Write(0b10010001); // address TMP75 + R
j = I2C1_Read(1); // Reading 1 byte then send N_Ack(1)
I2C1_Stop();


@elektrostudio

Koristeci MikroC librerije uvjek uC radi kao MASTER
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 19:05 - pre 138 meseci
Vidim ja kod ali ne vidim nigde šta stvarno radi to njihovo I2C1Start ili Write !!!
gorankg
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 19:16 - pre 138 meseci
Pa to i jeste problem jer koliko znam te njihove librerije su "zatvorene"
Kad pokrenem debugger ovo je dio koda u .lst fajlu kad ide instrukcija "I2Cx_Write()
Citat:
_I2C1_Write:
0x0A82 0xFA0000 LNK #0
;__Lib_I2C_12_p24_p33.c,119 ::
;__Lib_I2C_12_p24_p33.c,120 ::
0x0A84 0xFB800A ZE W10, W0
0x0A86 0xB7A202 MOV WREG, I2C1TRN
;__Lib_I2C_12_p24_p33.c,121 ::
0x0A88 0xAEE208 BTSS I2C1STAT, #7
0x0A8A 0x370002 BRA L_I2C1_Write14
;__Lib_I2C_12_p24_p33.c,122 ::
0x0A8C 0x200010 MOV #1, W0
0x0A8E 0x370002 BRA L_end_I2C1_Write
L_I2C1_Write14:
;__Lib_I2C_12_p24_p33.c,124 ::
0x0A90 0x07FBFD RCALL __Lib_I2C_12_p24_p33_I2C1_Is_Finished
;__Lib_I2C_12_p24_p33.c,126 ::
0x0A92 0xEF2000 CLR W0
;__Lib_I2C_12_p24_p33.c,127 ::
L_end_I2C1_Write:
0x0A94 0xFA8000 ULNK
0x0A96 0x060000 RETURN
; end of _I2C1_Write
__Lib_I2C_12_p24_p33_I2C1_Is_Finished:
0x028C 0xFA0000 LNK #0
;__Lib_I2C_12_p24_p33.c,46 ::
;__Lib_I2C_12_p24_p33.c,47 ::
L___Lib_I2C_12_p24_p33_I2C1_Is_Finished0:
0x028E 0xAF2086 BTSC IFS1, #1
0x0290 0x370001 BRA L___Lib_I2C_12_p24_p33_I2C1_Is_Finished1
;__Lib_I2C_12_p24_p33.c,48 ::
0x0292 0x37FFFD BRA L___Lib_I2C_12_p24_p33_I2C1_Is_Finished0


I onda imam loop u dijelu
Citat:
L___Lib_I2C_12_p24_p33_I2C1_Is_Finished0:
0x028E 0xAF2086 BTSC IFS1, #1
0x0290 0x370001 BRA L___Lib_I2C_12_p24_p33_I2C1_Is_Finished1
;__Lib_I2C_12_p24_p33.c,48 ::
0x0292 0x37FFFD BRA L___Lib_I2C_12_p24_p33_I2C1_Is_Finished0
jer ceka "IFS1, #1", po datasheet-u je "Master I2C1 Event Interrupt Flag Status bit"
 
Odgovor na temu

elektrostudio
Vladimir Pavkovic
SZR Elektrostudio, servis idustrijskih
masina i software developer
Novi Sad

Član broj: 201423
Poruke: 283
*.dynamic.isp.telekom.rs.

Sajt: elektrostudio.com


+25 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 19:20 - pre 138 meseci
Proveri da li su pinovi 5,6,7 od TMP75 vezani na masu. Probaj samo write adrese jer ces tako ostaviti da zadnji bit (ACK) bude moguce izmeriti i obicnim instrumentom kao logicku nulu. Takodje stavi instrument na AC podrucije i vidi da li se pojavi kakav cim na naponu SCL linije i i sto to i na SDA liniji
Elektrostudio
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 19:37 - pre 138 meseci
Pinovi su povezani na masu, sva tri i zato i jeste adresa 0b1001000 + R/!W
Proverio sam sa testerom na AC podrucju i imam cimanja na obe linije (SDA SCL) , znaci da byte tj "adresa" bude poslana korektno...samo je problem provjeriti ovaj ACK bit od strane Slave-a jer traje samo jedan SCL clock

EDIT: Dosla mi ideja da provjerim nesto, jer kako sam C/P ranije dio coda, on ceka Interrupt Flag "IFS1, #1 => Master I2C1 Event Interrupt Flag Status bit "
Moze ga dzaba cekati ako npr u funkciji I2Cx_init() ili I2Cx_Start() ne osposobi tj aktivira interrupt za I2Cx

EDIT2: Pokusao sam i prije poziva I2C_write() da manualno akiviram interrupt "IEC1.MI2C1IE = 1;" ali bez rezultata..
I u "disassembly mode" sam gledao kroz code i cisti je suicide.

Nastavit cu da koristim I2C u SW opciji i u medjuvremenu vidjet cu sa MikroElektronikom da rijesim ovo.

[Ovu poruku je menjao sigi91 dana 17.12.2012. u 21:19 GMT+1]
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 21:03 - pre 138 meseci
mikroC jeste za neke stvari super dobar ali smaraju sa tim zatvorenim bibliotekama do beskonacnosti .. aj za 16F i nekako ali ja sam ih potpuno zabatalio, za 16F sam kupio picc a za ove jace koristim microchipov kompajler i glava me vise ne boli ..

e sad, kako sam ih zabatalio nisam ispratio ove nove verzije ali evo ga neki moj prastari kod

Code:

void write_DS1307(unsigned short address, unsigned short data)
{
   unsigned short status;
   I2C_Start();
   I2C_Wr(0xd0);
   I2C_Wr(address);
   I2C_Wr(data);
   I2C_Stop();
}
 
unsigned short read_DS1307(unsigned short address)
{
   unsigned short data;
   I2C_Start();
   I2C_Wr(0xd0);
   I2C_Wr(address);
   I2C_Repeated_Start();
   I2C_Wr(0xd1);
   data=I2C_Rd(0);
   while (!I2C_Is_Idle()) asm nop;
   I2C_Stop();
   return(data);
}
 
 
void main(){
...
  I2C_Init(100000); 
 ...


i ja vidim da tu read radim sa "I2C_Repeated_Start();" dok ti pokusavas citanje sa "I2C1_Restart();"

e sad, nisam skontao, na kom i2c_write ti stane? na prvom? "I2C1_Write(0b10010000); // address TMP75 + W" ili posle? ako ti stane na prvom, dodaj delay

Code:

I2C1_Init(100000);
delay_ms(100);
I2C1_Start();
//delay_ms(1); //ovde ne bi trebalo da treba delay al .. 
I2C1_Write(0b10010000); // address TMP75 + W


pa vidi dal ce onda da pravi opet isti problem
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 21:20 - pre 138 meseci
I2C_Repeated_Start(); u mikroC PIC je isto kao I2Cx_Restart(); u mikroC dsPIC...ne razumijem uopste ni zasto su to promijenili, isto kao
mikroC dsPIC < = = = > mikroC PIC
I2Cx_Write(); < = = > I2C_Wr();
I2Cx_Read(); < = = > I2C_Rd();


Stane na prvom I2C1_Write(0b10010000); // address TMP75 + W
A sto se tice I2Cx_Init(freq); ima u sebi vec delay od 100ms (nasao sam gledajuci kroz kod u disassembly mode-u) tako da nije potrebna pauza poslije init-a

EDIT: problem ostaje
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 22:02 - pre 138 meseci
haha bas su nenormalni .. bar su dodali taj delay :D .. dodas jos jedan za svaki slucaj nece da fali :D...

no, imao sam ja sa njima mnogo problema jer im vecina *_init() funkcija ne valja, podrazumevaju super i to radi sa njihovm hw-om ali sa tvojim - jok :( posebno ako uzmes neki noviji cip :( .. elem, uradi njihov init a onda direkt inicijalizuj i2c tako sto upises sta treba u portove i onda probaj njihov write dal ce da radi kako treba, moguce da su nesto lose odradili oko inicijalizacije, ili ako te ne mrzi pusti kroz debager njihov init kod i pogledaj dal su uradili sve sto treba (vidi u datasheet-u kako se za taj pic inicijalizuje i2c) ... ili iskoristi momenat i predji na c30 :D
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00217.12.2012. u 22:07 - pre 138 meseci
Ne znam što ne skineš Microchipov C30? Tamo imaš koliko znam otvorene biblioteke i primere. Ako ti baš igra samo mikroc a ti ih prepevaj i vozi. Baci pogled i na ova dva posta sa microchip foruma:

http://www.microchip.com/forums/m514051.aspx
http://www.microchip.com/forum...high=&m=668477&mpage=1

gorankg
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn\'t - PIC24FJ64GB00217.12.2012. u 22:54 - pre 138 meseci
Citat:
bogdan.kecman:
haha bas su nenormalni .. bar su dodali taj delay :D .. dodas jos jedan za svaki slucaj nece da fali :D...

...uradi njihov init a onda direkt inicijalizuj i2c tako sto upises sta treba u portove i onda probaj njihov write dal ce da radi kako treba, moguce da su nesto lose odradili oko inicijalizacije, ili ako te ne mrzi pusti kroz debager njihov init kod i pogledaj dal su uradili sve sto treba (vidi u datasheet-u kako se za taj pic inicijalizuje i2c) ... ili iskoristi momenat i predji na c30 :D


Hah od viska pauze glava ne boli :D
A ne znam, malo je komplikovano baratati sa I2C-om i da pisem sve od 0-e, za mene je to gubljenje vremena...
Htjeo bi samo da znam u cemu je ovdje problem, da li je do biblioteke ili je mozda jos nesto falilo da se podesi prije inicijalizacije..
Ako nista, predat cu se i preci na C30, ma da mi je nekako tesko jer sam navikao na mikroC i nisam nikada imao posebnih problema kao ovaj sada npr.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00218.12.2012. u 02:27 - pre 138 meseci
pazi, uradis prostu inicijalizaciju i2c-a iz C30 i vidis dal radi ili ne ....

a za rucno, mislio sam samo inicijalizaciju da uradis rucno, ne ceo i2c

elem, PIC24FJ64GB002 bi trebalo da ima isti silicon problem kao PIC24FJ64GA004 tako da pogledaj errata za njega, to ti je koliko vidim u lokalu DS80384B.PDF

Citat:

4. Module: I2CTM (Master Mode)
Under certain circumstances, a module operating in Master mode may Acknowledge its own command addressed to a slave device. This happens when the following occurs:
• 10-Bit Addressing mode is used (A10M = 1);
and
• the I2C master has the same two upper address bits (I2CADD<9:8>) as the addressed slave module.

In these cases, the master also Acknowledges the address command and generates an erroneous I2C slave interrupt, as well as the I2C master interrupt.

Work around
Several options are available:
• When using 10-Bit Addressing mode, make certain that the master and slave devices do not share the same 2 MSbs of their addresses.

If this cannot be avoided:
• Clear the A10M bit (I2CxCON<10> = 0) prior to performing a Master mode transmit.
• Read the ADD10 bit (I2CxSTAT<8>) to check for a full 10-bit match whenever a slave I2C interrupt occurs on the master module.



E sad, kako glupavom mikroC-u konfigurisati addressing mod nemam pojma (ja uglavnom koristim 7bitni mod), aj izdebagiraj taj init da vidimo sta mikroC uradi u i2c1_init(), moguce da ostavlja 10bitno adresiranje

I2C1BRG ti je za brzinu (ako teras to na 32MHz tu ti treba 0x9D ili ako si na 16MHz onda 0x4E)
I2C1CON ti je config registar (bit 10 A10M: 10-Bit Slave Addressing bit; 1 = I2CxADD is a 10-bit slave address; 0 = I2CxADD is a 7-bit slave address )

dakle ako mozes da ga switchnes u 7bitni rad izbegnuces taj bug ili ubodi odma posle inita

I2C1ADD = 0b0000001111110111;

tako sigurno izbegavas da su im adrese (top dva bita) iste + izbegavas drugi problem da upadnes u 0b1111xxx ili 0b0000xxx zamku sa druge strane

vidim po microchip forumu da je dosta 24f-ova opterecena ovim bagom na i2c-u mada ne kontam kako uspeva mikroC tako lako da ga nabode ja ga nikad nisam nabo a koristio sam dosta 24f seriju :(

nadam se da ce ti ovo pomoci ... inace, savetujem nabavku, pod hitno: http://www.seeedstudio.com/depot/-p-612.html?cPath=174 ili bar http://imall.iteadstudio.com/im120911002.html (obls sa seeed-a je 200MHz sa kompresijom i limitiranim ram-om, dok je mini logic sa itead-a kradeni salea logic koji ima lepsi software ali je samo 24MHz i zavisi od brzine kompa no nije limitiran svojom memorijom posto je nema) .. sa tim spravama se problem detektuje i debagira za par minuta meni su uvek na dohvat ruke (2 obls-a i jedan mini), tebi to iz italije nije nikakav problem da narucis a cene su simbolicne realno ... da sam na tvom mestu narcio bi odma oba :)


 
Odgovor na temu

elektrostudio
Vladimir Pavkovic
SZR Elektrostudio, servis idustrijskih
masina i software developer
Novi Sad

Član broj: 201423
Poruke: 283
*.dynamic.isp.telekom.rs.

Sajt: elektrostudio.com


+25 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00218.12.2012. u 08:27 - pre 138 meseci
Pogledao sam .lst i nije odradjen interupt handler, naime u interupt vector table nema parce koda za obradu vec su tamo sve 0 i ako i dodje do interupta id I2C Master-a vector je na 0036h gde su takodje 0... Proveri kako odraditi ovaj deo
Elektrostudio
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00218.12.2012. u 09:01 - pre 138 meseci
Prekidni bit se testira i briše najverovatnije u samoj I2CWrite. Nema obrade u prekidnoj rutini. Tako rade microchip funkcije.
gorankg
 
Odgovor na temu

sigi91

Član broj: 307017
Poruke: 39
..b.business.telecomitalia.it.



+3 Profil

icon Re: SW I2C works while HW I2C doesn't - PIC24FJ64GB00218.12.2012. u 11:56 - pre 138 meseci
Siguran sam da incijalizacijom i koriscenjem C30 bi sve teklo glatko i bez problema...u to ne sumnjam

Sto se tice MikroC-a procitao sam u manualu za Mikroc dsPIC sledece:
Ovo se tice za I2Cx_Init()
Citat:
Configures and initializes the desired I²C module with default settings.
This function enables the I²C module by setting the I2CEN bit. The rest of the bits in I²C control register
remains unchanged. Default initialization (after reset) of I²C module is:
- continue operation in IDLE mode
- IPMI mode disabled
- 7-bit slave address
- slew rate control enabled
- general call address disabled
- software or receive clock stretching disabled

Znaci sto se tice 10 bit-nih adresa i bugova, ne ulazimo u takav slucaj.
EDIT: Vjerovatno ovdje u Init proceduri bi jos nesto trebao promijeniti ali nisam siguran jer ne razumijem neke osvnove poput sta je IPMI mode, slew rate i software or receive clock stretching.
Sad cu to da izucim..


Onda imamo sledece vezano za I2Cx_Write()
Citat:
Prototype unsigned I2Cx_Write(unsigned char data_);
Description Sends data byte via the I²C bus.
Parameters - data_: data to be sent
Returns - 0 if there were no errors.
- 1 if write collision was detected on the I²C bus.
Requires MCU with at least one I²C module.
Used I²C module must be initialized before using this function. See I2Cx_Init routine.
Also, START signal needs to be issued in order to use this function. See I2Cx_Start.
Example unsigned char data_;
unsigned error;
...
error = I2C1_Write(data_);
error = I2C1_Write(0xA3);
Notes I²C library routines require you to specify the module you want to use. To select the desired I²C
module, simply change the letter x in the routine prototype for a number from 1 to 3.
Number of I²C modules per MCU differs from chip to chip. Please, read the appropriate datasheet
before utilizing this library

E sad je problem sto ne mogu ni da znam sta je return od te procedure jer se unutra zablokira.

Sto se tice logic sniffer-a, o tome sam razmisljao vec dosta dugo vremena i nikako da se odlucim za neki da je eco-frendly jer mi ne treba nista profi...razmisljao sam o Bus Pirate v3 http://www.seeedstudio.com/dep...sembled-p-609.html?cPath=61_68 ali nikako da ga narucim...
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: SW I2C works while HW I2C doesn't - PIC24FJ64GB002

Strane: 1 2

[ Pregleda: 5518 | Odgovora: 38 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.