I2C ACK wann wieder zurück setzen

Gast #4558044
Lesenswert?
• ▲
▼
Hallo

Ein ACK beruht laut µC Artikel auf setzen SDA auf Low im 9.Zyk
Wann wird/muss dieses Bit vom ACK Versender (8bit Daten-Empfänger) 
wieder zurück gesetzt werden damit der SDA Pin als Eingang "open-drain" 
wieder fungiert?

Bei mehrfachen Slaves mit gleicher Adresse steht aber auch, dass alle 
auf SDA auf LOW gezogen halten, beeinflusst dass nicht das Lesen jeden 
Slaves an diesem PIN, sind ja dann immer LOW?

Antworten wären sehr hilfreich um das Szenario besser zu verstehen, txs.
Gast #4558054
Lesenswert?
• ▲
▼
> Wann wird/muss dieses Bit vom ACK Versender wieder zurück gesetzt werden

Unmittelbar nach dem Ende des Taktimpulses.

Wenn mehrere Slaves auf die selbe Adresse reagieren, kannst du nicht 
mehr unterscheiden, welcher und wie viele Slaves acknowledged haben.

Deswegen macht man das normalerweise nicht. In der regel hat jeder Slave 
eine eindeutige Adresse.
Gast #4558071
Lesenswert?
• ▲
▼
Stefan U. schrieb:
>> Wann wird/muss dieses Bit vom ACK Versender wieder zurück
> gesetzt werden
>
> Unmittelbar nach dem Ende des Taktimpulses.

Also so in etwa?
1
SendACK (void)
2
{
3
while (!SCL); // Takt ist noch LOW, bit wird gesetzt 
4
SDA = 0;      // SDA PIN bekommt output(0)
5
delay_us(1);  // sollte man sowas einbauen oder eher weglassen?
6
SDA = 1;      // SDA PIN bekommt inputstatus ( pulluped = high )
7
}
8

9
SendNACK (void)
10
{
11
// _do_nothing
12
}


txs!
Gast #4558102
Lesenswert?
• ▲
▼
Du ziehst die Leitung auf Low, sobald der Taktimpuls beginnt. Und du 
lässt sie wieder los, sobald der Takt endet. Also eher so:

// Warte auf Takt
while (SCL==High);
SDA=Output_und_Low;
// Warte auf Ende des Taktimpulses
while (SCL==Low);
SDA=Input;

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.