äÏÂÒÏÇÏ ÚÄÏÒÏרÑ, Oleg!
27 Aug 03 09:38, Oleg Dolgov ÎÁÐÉÓÁÌ ÄÌÑ All:
OD> ëÔÏ ÎÉÂÕÄØ ÍÏÖÅÔ ÐÏÄÅÌÉÔØÓÑ ÓÉÛÎÙÍÉ ÉÓÈÏÄÎÉËÁÍÉ ÄÌÑ ÒÁÂÏÔÙ Ó ÛÉÎÏÊ I2C. OD> èÏÞÕ OD> ÓÒÁ×ÎÉÔØ ÉÓÈÏÄÎÉËÉ É ÎÁÊÔÉ ÏÛÉÂËÕ :-(( õ ÍÅÎÑ ÓÏÚÄÁÅÔÓÑ ×ÐÅÞÁÔÌÅÎÉÅ ÞÔÏ OD> ÎÁÓÔÕÐÉÌ ÎÁ ËÁËÉÅ ÔÏ ÇÒÁÂÌÉ ÎÏ ÎÅ ×ÉÖÕ ÎÁ ËÁËÉÅ :-(( éÍÅÅÍ 24ó01á OD> (ÐÌÁÎÉÒÕÅÔÓÑ OD> 24ó64) & 90S8515 ÐÙÔÁÀÓØ ÏÒÇÁÎÉÚÏ×ÁÔØ
OD> for(i=0;i<128;i++){write_byte_I2C(i,i);} OD> // write_byte_I2C(Adress,Data_Byte)
OD> ðÒÉ ÚÁÐÉÓÉ ÏÒÇÁÎÉÚÕÀ ÐÒÏÇÒÁÍÎÙÊ ÓÔÏÐ ÐÏÓÌÅ ÚÁÌÉ×ËÉ 1 ÂÁÊÔÁ ÞÔÏÂÙ ÐÒÏ×ÅÒÉÔØ OD> ACK OD> ÍÉËÒÏÓÈÅÍÙ ÐÁÍÑÔÉ. áÌÇÏÒÉÔÍ ÚÁËÁÞÉ×ÁÎÉÑ × ÐÁÍÑÔØ ×ÒÏÄÅ ÓÔÁÎÄÁÒÔÎÙÊ: Ë OD> ÐÒÉÍÅÒÕ OD> ÚÁÌÉ×ÁÅÍ I2C_start -> 0xA0 (ACK=0) -> 0x00 (ACK=0) -> 0x00 (ACK=0) ->
OD> I2C_stop OD> ÎÏÇÉ 1,2,3 ÎÁ ÚÅÍÌÅ. ÷ÙÎÉÍÁÀ ÍÉËÒÏÓÈÅÍÕ ×ÓÔÁ×ÌÑÀ × ÐÒÏÇÒÁÍÍÁÔÏÒ ÔÁÍ ×ÓÅ OD> ÑÞÅÊËÉ OD> 0xFF :( ô.Å. ÓÕÄÑ ÐÏ ACK ÏÎÁ ×ÒÏÄÅ ÐÉÛÅÔ ÎÏ ÒÅÁÌØÎÏ ÎÉÞÅÇÏ ÐÏÄÏÂÎÏÇÏ ÎÅ OD> ÎÁÂÌÀÂÁÅÔÓÑ :( SDA SCL ÐÏÄÔÑÎÕÔ Ë 5÷ ÒÅÚÀËÁÍÉ É ÒÕÌÑÔÓÑ DDRB ÐÒÉ ÜÔÏÍ OD> PORTB=0x00. ÷ÒÅÍÑ ÔÁÊÍÉÎÇÏ× ÚÁ×ÉÛÅÎÏ 10 ËÒÁÔÎÏ ÉÚÎÁÞÁÌØÎÏ ÐÏ ÜÔÏÍÕ ÇÒÅÛÉÔØ OD> ÞÔÏ OD> ÍÉËÒÕÈÁ ÐÉÓÁÔØ ÎÅ ÕÓÐÅ×ÁÅÔ ÎÅ ÍÏÇÕ. ÷ÏÂÝÅÍ ÍÎÅ ÎÁÄÏ Ó ÞÅÍ ÔÏ ÓÒÁ×ÎÉÔØ ÞÔÏ OD> ÇÌÀË ÎÁÊÔÉ. :(
OD> P.S. óÁÍÏÅ ÎÅÐÒÉÑÔÎÏÅ, ÞÔÏ Ñ ÔÏ ÖÅ ÓÁÍÏÅ ÄÅÌÁÌ ÄÌÑ MSP430 ÎÁ ÁÓÍÅ É ×ÓÅ OD> ÒÁÂÏÔÁÌÏ Ñ ÔÁÍ I2C ÉÎÄÉËÁÔÏÒÏÍ ÒÕÌÉÌ :( ÎÏ ÐÏËÁ ÌÏÍÁÅÔ 430 ÁÓÍ OD> ÐÅÒÅÌÏÐÁÞÉ×ÁÔØ OD> ÐÏÄ AVR :(
×ÏÔ ÜÔÏ Õ ÍÅÎÑ ÒÁÂÏÔÁÅÔ, ÍÁËÒÏÓÙ SET, CLR, DBIT1, DBIT0 ÔÒÁÎÓÌÉÒÕÀÔÓÑ × ÓÔÁÎÄÁÒÔÎÙÅ ÂÉÔÏ×ÙÅ ÏÐÅÒÁÃÉÉ
static uchar I2C_Err; /************************************************/ void Send_START() { SET(I2C_DIR); SET(I2C_DTAO); SET(I2C_SCK); CLR(I2C_DTAO); }
/************************************************/ void Send_STOP() { SET(I2C_DIR); CLR(I2C_DTAO); SET(I2C_SCK); SET(I2C_DTAO); }
/************************************************/ uchar Send_I2Byte(register uchar data) { register uchar i,j,M;
SET(I2C_DIR); CLR(I2C_SCK); for (i=0,M=0x80;i<8;i++,M>>=1) { if (data&M) SET(I2C_DTAO); else CLR(I2C_DTAO); SET(I2C_SCK); for (j=0;j<20;j++) _NOP(); CLR(I2C_SCK); for (j=0;j<20;j++) _NOP(); } CLR(I2C_DIR); CLR(I2C_DTAO); SET(I2C_SCK); for (j=0;j<20;j++) _NOP(); M=DBIT1(I2C_DTAI)?0:1; SET(I2C_DIR); CLR(I2C_SCK); return M; }
/************************************************/ uchar Read_I2Byte(register uchar ack) { register uchar val,i,j,M;
CLR(I2C_DIR); CLR(I2C_DTAO); CLR(I2C_SCK); val=0; for (i=0,M=0x80;i<8;i++,M>>=1) { SET(I2C_SCK); for (j=0;j<20;j++) _NOP(); if DBIT1(I2C_DTAI) val|=M; CLR(I2C_SCK); for (j=0;j<20;j++) _NOP(); } SET(I2C_DIR); if (ack) CLR(I2C_DTAO); else SET(I2C_DTAO); SET(I2C_SCK); for (j=0;j<20;j++) _NOP(); CLR(I2C_SCK); return val; }
WBR, óÅÒÇÅÊ. ICQ: 101347299
... ôÁËÁÑ ÜÍÁÎÓÉÐÁÃÉÑ, ÞÔÏ ËÁÖÄÙÊ ÍÏÖÅÔ ÓÔÁÔØ ÖÅÎÝÉÎÏÊ.