RTV forum PL | NewsGroups PL

Jak wykryć wysłanie sygnału STOP w TWI (I2C) na mikrokontrolerze AVR?

AVR i TWI (I2C)

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wykryć wysłanie sygnału STOP w TWI (I2C) na mikrokontrolerze AVR?

Adam Wysocki
Guest

Tue Feb 10, 2009 9:45 pm   



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/

PcmOL
Guest

Wed Feb 11, 2009 12:01 am   



"Adam Wysocki" <gophi.at.chmurka.net@nospam.invalid> wrote in message
news:gophi.pme.1234298391@news.chmurka.net...
Quote:
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?

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

PH
Guest

Wed Feb 11, 2009 12:06 am   



Adam Wysocki pisze:
Quote:
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?


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

PcmOL
Guest

Wed Feb 11, 2009 8:53 am   



"PH" <sinuh3@wp.pl> wrote in message
news:gmt4jf$uo4$1@julia.coi.pw.edu.pl...
Quote:
Adam Wysocki pisze:
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?


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.

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.

elektroda NewsGroups Forum Index - Elektronika Polska - Jak wykryć wysłanie sygnału STOP w TWI (I2C) na mikrokontrolerze AVR?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map