[elektro] PIC I2C lib

Andras Huszti kyrk at villamvadasz.hu
Tue Oct 19 19:57:26 CEST 2010


Hali!

En a kovetkezo keppen oldanam meg a mastert:
Csinalok egy uj tipust pl 
typedef _IICdatabyte {
	unsigned int data;
	unsigned char readWrite;
} IICdatabyte;

A data az int mert a 0..255ig char afolott meg specialis vezerlokar
lehetne:
#define START 0x100
#define STOP 0x101
#define EMPTY 0x102
#define WRITE 0x103

Ebbol csinalnek:
typedef _IICdatagramm {
	IICdatabyte data[32];
	unsigned int address;
} IICdatagramm;

A data hossza valami fix ertek aminel tobb biztosan nem kell
(szuklatokoruseg, lehet rogton pointerrel marhulni is)

Ha ez megvan akkor lefoglalnam a ICCdatagramm-ot 1 peldanyban. Kuldes
elott feltoltenem a megfelelo elemeket. Pl hogy adott elem read vagy
write. Aztan az ISR ezt dolgozna fel. Elonyye, hogy nem fogy el tuti a
kuldendo adat. Hatranya a fix memoria igeny a sramban.

ISR-ben ha hiba tortenik akkor nincs ertelme tovabb folytatni a kuldest.
A buszt valamilyen ismert helyzetbe kell hozni, vagy most vagy a
kovetkezo kuldes elott kozvetlenul. Esetleg lehet a foprogramnak
jelezni, hogy bukott a kuldes. Sokszor nem fontos a pontos hiba oka,
eleg csak szolni ,hogy nem jott ossze. Neha fontos akkor erdemes jobban
megirni a hibajelzest.

Szerintem amig a SSPBUF kuldesnel nincs ujratoltve addig nem ad CLK-t a
master ergo a busz az var. Tehat ez implicit megvan. A slavnek meg van
clock strechje.




More information about the Elektro mailing list