USI Two-wire komunikace pomoci Attiny2313A/4313 (I2C)

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
poprad
Příspěvky: 13
Registrován: 26 led 2013, 00:00

USI Two-wire komunikace pomoci Attiny2313A/4313 (I2C)

#1 Příspěvek od poprad »

Zdravím.
Hraji se s Two-wire komunikací (I2C) a měl bych dotazy:
- Když Master vyvolá START podmínku (SCL=High, SDA přechází na Low), kdo se postará aby následně přešlo SCL na nízkou úroveň? Musí se o to postarat na straně Slave programátor zápisem sbi PORTB,SCL v rutine přerušení USI_START?
- Když je po START podmínce SCL na nízké úrovni, musí ji MASTER testovat před tím, než zapíše první bit do SDA?
Děkuji za odpověď. Začínám s Two-wire komunikací a potřebuji o ní získat základní informace.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#2 Příspěvek od Andrea »

Sestupnou hranu na SCL musí udělat master, slave může SCL v nule podržet, než se dostane do stavu, kdy je schopen komunikovat. Takže master, poté co poprvé po startu uvolní SCL, musí testovat, jestli SCL skutečně přešlo do log. 1 a pokud ne, tak počkat. Totéž po ACK, tam také může slave SCL podržet, pokud nestíhá.
Uživatelský avatar
poprad
Příspěvky: 13
Registrován: 26 led 2013, 00:00

#3 Příspěvek od poprad »

Děkuji. Přesně o toto mi šlo.
Takže když Master vyšle START, musí zhodit SCL. Slave potom může podle svého vědomí a svědomí SCL podržet než bude náležitě pŕipravený na příjem dat. Master po tento čas musí sledovat stav SCL, to znamená, musí se pŕepnout na příjem. Je teda nutné zařadi spožďovací smyčku mezi zhodením SCL a přepnutím se do vstupního režimu (stále mluvím o Master)? Jestli ano, kolik času má dát pro Slave na to, než se rozhýbe a podrží SCL?
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#4 Příspěvek od Andrea »

Kdyby ses podíval do datašítu, je tam nakreslený ten detektor startu a z něj je patrné, že slave SCL podrží okamžitě, jakmile master dá SCL do 0 a drží ho, dokud software neshodí USISIF.
Uživatelský avatar
poprad
Příspěvky: 13
Registrován: 26 led 2013, 00:00

#5 Příspěvek od poprad »

Právě že z datasheetu to není patrné. Dokonce i slovo "okamžitě" mi nesedí... Nechci být puntičkář, ale žádný obvod na světě nedělá nic okamžitě. A právé proto jsem se ptal, kolik času mám nechat Slave aby vybavil svoje obvody a podržel SCL na nízké úrovni. Zřejmě půjde o čas, který někdo vysledoval jako dostatečný...
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#6 Příspěvek od Andrea »

No tak si slovíčkař jak chceš, když tě to baví.
Uživatelský avatar
poprad
Příspěvky: 13
Registrován: 26 led 2013, 00:00

#7 Příspěvek od poprad »

Vzala si si to osobně a to není dobře. Jde mi skutečně o praktické zkušenosti. Na zbérnici se nikdy nedělá nic okamžiě. Co když je Slave v režimu Sleep, například?

Snad už to teď bude jasné, že problém není na sběrnici. OT odmazáno. ZdenekHQ
Uživatelský avatar
ZdenekHQ
Významný člen
Příspěvky: 25519
Registrován: 21 črc 2006, 00:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#8 Příspěvek od ZdenekHQ »

Snad se teď dokážete vrátit k tématu.
Pro moje oslovení klidně použijte jméno Zdeněk
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[?
]
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“