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:
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:
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
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

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

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ł
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