AVR i TWI (I2C)

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Polish to

Threaded View
Cześć,

Próbuję użyć TWI w AVR i mam pytanie - skąd mam wiedzieć, że STOP już został
wysłany i mogę wysłać następny START?

--
http://www.extreme-photo.pl /

Re: AVR i TWI (I2C)
Quoted text here. Click to load it

Jako master nie musisz czekac na STOP. Możesz wysyłać REPEATED START. Ja
właśnie wykombinowałem jak nie wysyłać STOP.


Re: AVR i TWI (I2C)
Adam Wysocki pisze:
Quoted text here. Click to load it

void i2c_stop(void)
{
     /* send stop condition */
    TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTO);
    
    // wait until stop condition is executed and bus released
    while(TWCR & (1<<TWSTO));

}/* i2c_stop */


Czyli dopóki TWSTO jest wysokie, to nic nie powinieneś robić.
Ale.. osobiście miałem problemy z slave'ami które miały z jakiegoś
powodu wolną obsługę I2C. Za stopem a przed kolejnym startem, wstawiałem
delaya - i się już dobrze bujało.



--
PH

Re: AVR i TWI (I2C)
Quoted text here. Click to load it

Ciekawiej się robi w środowisku multimaster.
Jest sobie SLAVE RECEIVER i czeka na stop, żeby przełączyc sie na MASTER
TRANSMITTER i wysłać swoje.
Niby jest TWSR = A0 ( TWI_SRX_STOP_RESTART), ale jak elegancko rozróżnić te
dwa stany?
Eeech.... biorę się za lekture.


Site Timeline