Frage zu I2C-Implementation

OP #575210
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe hier eine Master-Slave-Anwendung mit zwei PICS, welche über I2C 
kommunizieren können.

Die Funktion ist etwa so:
1. Master sendet Befehl
2. Slave schiebt Befehl in ein Array (löschen des Arrays (neuer Befehl) 
bei Empfang einer neuen Adresse
3. Slave arbeitet den Befehl ab, wenn dazu alle Daten empfangen wurden.

Meine Frage: Wie sollte sich der Slave verhalten, während er die dem 
Befehl entsprechenden Funktionen ausführt?

Soll er ein ClockStretching machen? Aber dann wäre ja der Bus für die 
anderen blockiert?
Oder soll ich einfach die Schnittstelle abschalten? Allerdigns weiß ich 
nicht, wie viele Daten für die Befehle mitkommen.

Was meint ihr??
Gast #575247
Lesenswert?
• ▲
▼
Wenn z.B. ein EEPROM mit schreiben beschäftigt ist, reagiert es auf I2C 
Anfragen mit einem Not Ack. Das wäre wohl auch hier angebracht.
Es muss also nur der Master so programmiert sein, das er bei einem Not 
Ack. es einfach nach einer Zeit noch mal probiert.

> Allerdigns weiß ich nicht, wie viele Daten für die Befehle mitkommen.
Warum weisst du das nicht? Ich denke du bist der Entwickler :)
#580706
Lesenswert?
• ▲
▼
Wenn der Master genug gesendet hat, sendet er STOP.

Wenn der Master genug empfangen hat, sendet er aufs letzte Byte NACK und 
STOP.

Wenn der Slave genug empfangen hat, sendet er aufs letzte Byte NACK.

Wenn der Slave genug gesendet hat, kann er dies dem Master nicht 
mitteilen (geht vom Bus, d.h. sendet 0xFF).

Kann der Slave zeitweilig keine neuen Daten senden/empfangen (alle 
Puffer voll), dann geht er vom Bus (AA=0), d.h. der Master kriegt NACK 
auf die Adresse.


Beim 8051 heißt das ACK/NACK-Bit "AA" (Assert Acknowledge flag)


Peter

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.