MariuszC
Guest
Fri Dec 01, 2006 11:26 am
Witam,
nie trafiłem na odpowiedź na nurtujący mnie problem, mam nadzieję że Wy mi
odpowiecie.
Otóż w specyfikacji jest podany opis arbitrażu który polega na wykryciu sytuacji
gdy dwa urządzenia master stwierdzają stan "bus free" (SDA = SCL = HI) i
zaczynają nadawać warunek START (SDA HI->LO, a potem SCL HI->LO). Jednak już
przy samej transmisji dla poszczególnych bitów danych (równych 1) zdarzają się
stany SDA = SCL = HI czyli "bus free". Powiedzcie mi proszę czy każdy master
przed rozpoczęciem transmisji musi badać stan linii SDA i SCL przez jakiś
minimalny czas, zanim stwierdzi czy magistrala jest wolna? Inaczej wciąłby się w
jakąś transmisję i jakiś bit danych (o wartości 1) zamieniłby w sygnał STARTu.
Mam specyfikację "THE I 2C-BUS SPECIFICATION VERSION 2.1 JANUARY 2000" ze strony
PHILIPSA i jakoś nie znalazłem/albo pomijam niechcący odpowiedź na ten problem
MariuszC
--
Wysłano z serwisu OnetNiusy:
http://niusy.onet.pl
Paweł Cern
Guest
Sun Dec 03, 2006 9:34 pm
Quote:
Warunki STAR i STOP sa generowane sprzętowo, gdy mamy kilku masterów to
można zadbac o jakiś timeout dla danej transmisji. Jeśli driver linii
sie powiesi i nie wymusi stałego "0" to magistrale możę przejąć dowolny
inny master. Jeśli się powiesi i wymsui "1" to troche gorzej, bo
masgistrala będzie ciągle zajęta.
Pozdro
Driver linii interfejsu I2C umie wymusić conajwyżej '0' i 'Z' (stan wysokiej
impedancji). Jeśli zawiesi się w stanie 'Z' to nic się nie stanie, może być
problem w stanie '0'. Generalnie dopóki nie symulujemy I2C na poziomie
programowym, takie ryzyko jest minimalne, a jeśli już występuje - układ jest
po prostu zepsuty.
Paweł
Paweł Cern
Guest
Sun Dec 03, 2006 9:43 pm
Quote:
Zalozmy, ze mamy dwoch masterow - Atmegi ze sprzetowa obsluga i2c i jeden
slave - pcf8583.
Jak powinien wygladac reset i2c ?
Może pusta transakcja START+STOP?