I2C master

Oct 30, 2007 4 Replies

Pozdravljeni, imam problem sa inicjalizacijom I2C protokola na ATmega8. Imam dva mikraèa (ATmega8) spojena da je SDA spojen na SDA , i SCl na SCL. Obe linje su spojene na externi pull-up (4.7k). Linja je dugaèka 20 cm.



Poku¹avam jednog inicjalizirati kao master-a sa :



TWBR = 0xF; //POSTAVLJANJE BAUD RADE-A TWSR = 0x00;


i jednog kao slave sa:



TWAR = 0xFE; //ADRESA SLAVE MIKR. TWCR = _BV(TWEA) | _BV(TWEN) | _BV(TWIE);


I onda poku¹avam poslati podatke sa:



//!!!!!!!!!!!STSRT I2C!!!!!!!!!!!!!!!! void i2c_start(void) { TWCR = (1


Sad gledam i linja nije duga 20 cm veæ 40 cm , da nije to malo previ¹e?

A gdje ti je funkcija za receive byte? Da li na slaveu treba neki interupt?

Da imam na SLAVE strani recive (interupt) rutinu, ali ni¹ta...

Inaæe meni porgram na master strani ðoðe do toèke da po¹alje START bit i ostane "zarobljen" u petlji "èekalici" koja èeka pojavu TWINT bita(while (!(TWCR & (1 Da li na slaveu treba neki interupt?

mikraèa

Rije¹eno!

Smanjio sam pull-up otpornike na 2k i sad radi!

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required