I2C clock stretching
Moderátor: Moderátoři
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
I2C clock stretching
Na obrázku je to ten první byte, pak je pauza a následná další komunikace.
Jak to vlastně je? Tvrdá pauza je taky řešení, ale škoda 150ms, když je to výjimka jednou denně.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Keď som robil čítanie a zápis do 24LC16, riadil som zvlášť CLOCK aj DATA. Keď sa čakalo na ACK, tak sa čakalo. Nezáležalo ako dlho. Stačí urobiť nejakú krátku slučku, kedy stojí CLOCK a kontroluje sa DATA kedy príde ACK, potom sa pokračuje. Ak sa slučka skončí a ACK nepríde, nasleduje skok na ERROR.
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Navíc onen zákazník i hezký český pojmy překládá do vlastní angličtiny, takže mu občas vůbec nerozumím. I tady se rozčiloval, že je to "ACK stretching" a ne "clock stretching" a pak z něj vypadlo, že už na to narazili, I2C se kousala a oni nevěděli proč, protože to prostě ignorovali.
P.S. Bavíme se třeba o měniči a on řekne, že tam bude nějaká disipace. Chvilku se mně kouří z hlavy, než mně dojde, že mluví o účinnosti. A tak je to pořád.
PotPalo má zřejmě pravdu, podíval jsem se v klidu do dokumentace I2C a ten ACK skutečně spadne do nuly i bez hodin. Pak je to jasný.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Psát na tohle SW driver je tedy docela pakárna. Pokud bych přidal z definice I2C, že to může být multimaster komunikace s detekcí kolizí, pojmenoval bych to skoro jako horor.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
Softvérovo to ošetriť nieje ťažké (a dalo by sa aj čisto hardvérovo, pokiaľ má master signál WAIT), treba mať v MASTER vstupno-výstupný port SCL (prípadne dorobiť vstupný, stačí akýkoľvek vstup, oddeliť odporom od SCL OUT). Potom už len podmienka: pokiaľ SCL OUT (=high) <> SCL IN (=low), je aktivované clock stretching slave zariadením, a treba čakať (až pokiaľ SCL IN nebude tiež high). Ak som to teda správne pochopil. Pokiaľ to pri tom zároveň používa aj ACK na SDA, tak stačí sledovať ten.
Ľudovo povedané, SLAVE kecá MASTERovi do CLOCKu.
Skôr potrebujem nájsť zmysel života (alebo spriaznenú dušu opačného pohlavia). Sebavedomie som nikdy nemal, tu nieje čo zdvíhať.ZdenekHQ píše:...Jen potřebuje zvednout sebevědomí...
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
V tomto prípade by to hardvérovo išlo spraviť tak, že medzi CLK na master a CLK na slave dať rezistor, a operačným zosilňovačom podľa stavu [Vmaster>Vslave] aktivovať WAIT.
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
Každopádně pak si ten slave ten clock vygeneruje vlastně sám tím, že uvolní SCL.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
- ZdenekHQ
- Významný člen
- Příspěvky: 25519
- Registrován: 21 črc 2006, 00:00
- Bydliště: skoro Brno
- Kontaktovat uživatele:
PotPalo píše:V tomto prípade by to hardvérovo išlo spraviť tak, že medzi CLK na master a CLK na slave dám rezistor, a operačným zosilňovačom podľa stavu [Vmaster>Vslave] aktivovať WAIT.
Tak tady jsi se skutečně zbláznil. Už si dej STOP bit.
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?]
edit:
Prečo? Ono by to aj fungovalo, skrátka pokiaľ slave drží clock dolu, master má čakať. Len aby slave nezamrzol, to by to zamrzlo komplet. Inak uznávam, že je to blbosť, je to iba krajné riešenie pokiaľ by to už softvérovo nešlo inak.ZdenekHQ píše:...Tak tady jsi se skutečně zbláznil. Už si dej STOP bit.