RTV forum PL | NewsGroups PL

Niedeterministyczne działanie magistrali I2C z pamięcią 24C08 - co może być nie tak?

Niedeterministyczne zachowanie I2C

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Niedeterministyczne działanie magistrali I2C z pamięcią 24C08 - co może być nie tak?

Goto page 1, 2  Next

Adam Wysocki
Guest

Fri Oct 24, 2008 2:45 am   



Cześć,

Co może być powodem, że magistrala i2c zachowuje się niedeterministycznie?
Pamięć 24C08 czasami po zaadresowaniu jej (start i wysłanie adresu) odpowiada
ack a czasami nie. Mój układ:

http://www.chmurka.net/r/i2c.png

Obsługuję magistralę w taki sposób:

Start:

SCL = 1
SDA = 1
SCL = 1
SDA = 0

Stop:

SCL = 0
SDA = 0
SCL = 1
SDA = 1

Zapis:

SCL = 0
SDA = dana
SCL = 1

Odczyt:

SCL = 0
SDA = 1
dana = SDA
SCL = 1

Po każdej zmianie na magistrali jest opóźnienie, ale nie zauważyłem żeby
miało jakikolwiek wpływ (nawet ustawiając na pół sekundy).

Pozdrawiam.

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

Sebastian Bialy
Guest

Fri Oct 24, 2008 8:06 am   



Adam Wysocki wrote:
Quote:
Co może być powodem, że magistrala i2c zachowuje się niedeterministycznie?
http://www.chmurka.net/r/i2c.png

Nie widać rezystora podciągającego SCL.

Adam Wysocki
Guest

Fri Oct 24, 2008 6:46 pm   



Sebastian Bialy <heby@poczta.onet.pl> wrote:

Quote:
Co może być powodem, że magistrala i2c zachowuje się niedeterministycznie?
http://www.chmurka.net/r/i2c.png

Nie widać rezystora podciągającego SCL.

Nie ma potrzeby, port LPT jest push-pull, więc ciągnie magistralę do góry, a nie
obsługuję clock stretching.

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

Sebastian Bialy
Guest

Fri Oct 24, 2008 8:02 pm   



Adam Wysocki wrote:
Quote:
Nie ma potrzeby, port LPT jest push-pull

Jesli tak jest to nie jest dobrze. A chyba tak nie jest, choć nie
wykluczam, że w jakimś dziwnym trybie EPC+Whatever faktycznie działa
jako push-pull.

Quote:
, więc ciągnie magistralę do góry

Powinna się sama ciągnąć własnie przez ten rezystor. Jeśteś pewny że
wyjście z portu LPT zachowuje się jak otwarty kolektor z rezystorem do
plusa ? Bo jeśli nie to raczej szanse na działanie tego I2C są znikome.

Swoją drogą po co tam jest ta dioda ?

Sebastian Bialy
Guest

Fri Oct 24, 2008 8:06 pm   



Sebastian Bialy wrote:
Quote:
Swoją drogą po co tam jest ta dioda ?

Aaa czekaj, to taki rodzaj OpenCollector dla ubogich chyba Smile

Zbych
Guest

Fri Oct 24, 2008 9:40 pm   



Sebastian Bialy przemówił ludzkim głosem:

Quote:
Powinna się sama ciągnąć własnie przez ten rezystor. Jeśteś pewny że
wyjście z portu LPT zachowuje się jak otwarty kolektor z rezystorem do
plusa ? Bo jeśli nie to raczej szanse na działanie tego I2C są znikome.

A niby czemu ma nie działać? Przy jednym masterze zegar może być
sterowany z wyjścia push-pull, bez rezystora podciągającego.

Konop
Guest

Sat Oct 25, 2008 1:07 pm   



Quote:
A niby czemu ma nie działać? Przy jednym masterze zegar może być
sterowany z wyjścia push-pull, bez rezystora podciągającego.

A czy Slave nie ma prawa przyciągnąć SCL do masy, jeśli nie nadąża z
transmisją czy coś?? :>...

Zbych
Guest

Sat Oct 25, 2008 1:58 pm   



Konop przemówił ludzkim głosem:
Quote:
A niby czemu ma nie działać? Przy jednym masterze zegar może być
sterowany z wyjścia push-pull, bez rezystora podciągającego.

A czy Slave nie ma prawa przyciągnąć SCL do masy, jeśli nie nadąża z
transmisją czy coś?? :>...

Nie spotkałem się z czymś takim w przypadku pamięci eeprom.

Konop
Guest

Sat Oct 25, 2008 3:07 pm   



Adam Wysocki pisze:
Quote:
Cześć,

Co może być powodem, że magistrala i2c zachowuje się niedeterministycznie?
Pamięć 24C08 czasami po zaadresowaniu jej (start i wysłanie adresu) odpowiada
ack a czasami nie. Mój układ:

http://www.chmurka.net/r/i2c.png

A układ zasilasz z LPT czy z zewnątrz?? Ile prądu bierze?? Szukałeś
jakiś "szpilek" na zasilaniu?? Masz jakiś kondensator po stronie pamięci??

NoName
Guest

Sat Oct 25, 2008 6:40 pm   



A zapytam z ciekawosci dlaczego nie wykorzystasz linii I2C z Peceta ?

Adam Wysocki
Guest

Sat Oct 25, 2008 6:45 pm   



Sebastian Bialy <heby@poczta.onet.pl> wrote:

Quote:
Nie ma potrzeby, port LPT jest push-pull

Jesli tak jest to nie jest dobrze.

Dlaczego?

Quote:
A chyba tak nie jest, choć nie
wykluczam, że w jakimś dziwnym trybie EPC+Whatever faktycznie działa
jako push-pull.

W normalnym trybie Smile Mierzyłem napięcie, po wystawieniu tam jedynki pojawia
się 5V.

Quote:
, więc ciągnie magistralę do góry

Powinna się sama ciągnąć własnie przez ten rezystor. Jeśteś pewny że
wyjście z portu LPT zachowuje się jak otwarty kolektor z rezystorem do
plusa ?

Inaczej nie byłoby tam 5V :)

Quote:
Swoją drogą po co tam jest ta dioda ?

Tak jak już napisałeś - OC dla ubogich Very Happy Generalnie SCL jest dla mnie linią
jednokierunkową (przyciąganie przez slave'a ignoruję - mam za duże opóźnienia
żeby to mogło wystąpić), a przez diodę wymuszam stan niski na SDA, nie
wymuszając wysokiego (wymusza się przez rezystor).

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

Adam Wysocki
Guest

Sat Oct 25, 2008 6:45 pm   



Konop <konoppo@gazeta.pl> wrote:

Quote:
A czy Slave nie ma prawa przyciągnąć SCL do masy, jeśli nie nadąża z
transmisją czy coś?? :>...

Ma, ale u mnie to leci za wolno, żeby to zrobił :)

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

Adam Wysocki
Guest

Sat Oct 25, 2008 6:45 pm   



Konop <konoppo@gazeta.pl> wrote:

Quote:
A układ zasilasz z LPT czy z zewnątrz??

Z LPT.

Quote:
Ile prądu bierze??

Tyle ile 24C08 - max 3mA (podczas zapisu), przy odczycie 1mA.

Quote:
Szukałeś jakiś "szpilek" na zasilaniu?? Masz jakiś kondensator po stronie
pamięci??

Spróbuję jak będę w domu (jutro) dorzucić jakiegoś 100nF, dzięki :)

A, pytanie - jest możliwe że za wolna transmisja powoduje tego typu błędy?
Po zmianie stanu każdego z pinów czekam (testowo) pół sekundy.

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

Adam Wysocki
Guest

Sat Oct 25, 2008 6:45 pm   



NoName <nn@nn.pl> wrote:

Quote:
A zapytam z ciekawosci dlaczego nie wykorzystasz linii I2C z Peceta ?

Ten kod ma być przenośny, jak ruszy na PC, to przerzucę do mikrokontrolera.

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

J.F.
Guest

Sat Oct 25, 2008 7:26 pm   



On Sat, 25 Oct 2008 17:38:32 +0000 (UTC), Adam Wysocki wrote:
Quote:
Konop <konoppo@gazeta.pl> wrote:
A czy Slave nie ma prawa przyciągnąć SCL do masy, jeśli nie nadąża z
transmisją czy coś?? :>...

Ma, ale u mnie to leci za wolno, żeby to zrobił Smile

Czy po zmianie bitu zegara odczekujesz troche przed odczytem danych ?
Uklady I2C sa dosc wolne i pecet potrafi przekroczyc ich predkosc.

Jesli nie w tym problem .. podlaczylbym normalny zasilacz 5V,
zamiast tej diody wsadzil tranzystor i zrobil prawdziwe OC.

A jesli i to zawiedzie .. odpalic komputer pod dosem.

J.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Niedeterministyczne działanie magistrali I2C z pamięcią 24C08 - co może być nie tak?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map