Forum: Mikrocontroller und Digitale Elektronik ATTiny 25 als TWI Slave - Warum SCL als Output (AN 312)


von Thomas (Gast)


Lesenswert?

Hallo zusammen,

ich habe versucht einen ATTiny 25 als TWI-Slave (nur Datenempfänger) zu 
nutzen und bin zunächst kläglich gescheitert: der als Master genutzte 
ATmega48 hat entweder das ACK der Daten nicht mehr empfangen (ACK der 
Adresse funktionierte offenbar) oder hat einen allgemeinen Busfehler 
gemeldet.

Also die AN 312 (Using the USI module as a I2C slave) konsultiert und 
gefunden, dass dort SCL-Pin des Tiny auf Ausgang geschaltet wird. Warum 
denn das, eigentlich ist das doch ein Eingang? Jedenfalls funktioniert 
es so, aber ich würde schon gerne wissen: warum?

Vielen Dank,
Thomas

von Andreas K. (a-k)


Lesenswert?

Clock stretching. Wenn der Kleine noch nicht so weit ist, zieht er SCL 
in die Länge.

von Thomas (Gast)


Lesenswert?

Verstehe ich das richtig? Der Tiny als Slave kann den eigentlich den 
Takt vorgebenden Master ausbremsen, dazu muss er aber die SCL Pin 
beeinflussen können. ... und trotz Schaltung als Ausgang kann der Pin 
als Eingang für das Taktsignal genutzt werden.

Vielen Dank,
Thomas

von wjunky (Gast)


Lesenswert?

Ja!
Genau das kann der. Das Stichwort ist "Alterate Port Functions" (-> 
Doku). Die ATmegas können so sogar externe pull-ups überflüssig machen. 
Beim ATtiny25 ist das aber nicht der Fall.
Der hat beim PUOV (pull up override value) jeweils eine 0 stehen, 
erzeugt also niemals ein pull-up, wenn pull up override enable (hier 
USI_TWO_WIRE) 1 ist.

Hier findest du auch die Begründung, warum das ganze funktioniert, wenn 
du den auf Output stellst:
DDOV und PVOE sind von DDB2 abhängig. Die genaue Bedeutung kannst du im 
Datenblatt nachlesen. Tu dir den gefallen und ließ das mit den alternate 
port functions von vorne nach hinten durch...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.