www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik TWI Interrupt-Leitung


Autor: G. Ast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hab folgendes Problem: Per TWI sind ein Master mit ca 10 Slaves 
verbunden. Jetzt müssen die Slaves aber auch die Möglichkeit haben, 
Daten an den Master zu senden. Folgendes ist mir dazu eingefallen:

a) Interruptleitung
Eine Leitung die von den Slaves von Low auf High wieder auf Low gezogen 
wird. Der Master merkt das und fragt alle Slaves durch, ob sie was zu 
melden haben.

Problem: Was passiert, wenn mehrere Slaves gleichzeitig Daten anfragen, 
also die Leitung gleichzeitig auf High schalten?

b) Kontinuerlich Nachfragen
Der Master fragt kontinuierlich von den einzelnen Slaves Daten an.

Problem: Belastet den Bus und den Master?

c) sperate TWI-Leitung zum handeln der Daten
Auf einem Seperaten TWI-Bus wird kontinuierlich nachgefragt, ob Daten 
anliegen.

Problem: Setzt vorraus, dass jeder uC 2 TWIs hat.

Was soll ich machen?

Viele Grüße :)

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was evtl. zu überlegen wäre ist wenn jeder mal Master ist.
Das heißt dein Master ist der einzige der Anweisungen gibt. wenn er 
nichts zu tun hat macht er sich zum Slave.
Deine Slaves machen sich nur dann zum Master wenn sie etwas loswerden 
wollen. So kannst du dir die zusätzliche Interrupt Leitung sparen.
Das geht aber nur wenn die Slaves auch als Master eingesetzt werden 
können.

Autor: G. Ast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gute Idee, aber der Master muss Master bleiben, da er per UART an einen 
Rechner angebunden ist und die Kommunikation auf dem Bus loggt und auf 
manche Daten reagiert.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

> a) Interruptleitung
> Eine Leitung die von den Slaves von Low auf High wieder auf Low
> gezogen wird. Der Master merkt das und fragt alle Slaves durch,
> ob sie was zu melden haben.

> Problem: Was passiert, wenn mehrere Slaves gleichzeitig Daten
> anfragen, also die Leitung gleichzeitig auf High schalten?

Ich habe hier so etwas Ähnliches am laufen, mit einer „Bussy“ Leitung. 
Am Slave wird an einem freien Port ein NPN- Transistor angeschlossen. 
Wenn der Slave Daten zum abholen hat, dann setzt er das „Bussy“ und der 
Transistor schaltet nach Masse durch. Diese Leitung wird einfach mit dem 
Master verbunden, dass muss nicht einmal ein Interrupt sein (es muss nur 
der interne Pull-Up Widerstand eingeschaltet sein). Wenn der Port am 
Master also gegen Masse gezogen wird, dann hat irgendein Slave Daten die 
abgeholt werden müssen. Der Master kann nun den I2C-Bus abklappern und 
die Daten einsammeln. Werden die Daten von dem Slave abgeholt der das 
„Bussy“ gesetzt hat, dann löscht der Slave das „Bussy“ nachdem die Daten 
erfolgreich ausgelesen wurden wieder. Die „Bussy“ Leitung geht damit 
wieder gegen High. Bleibt die „Bussy“ Leitung aber weiterhin auf Low, 
dann hat auch noch ein anderer Slave ein „Bussy“ gesetzt und wartet 
darauf dass die Daten ausgelesen werden. Auf diese Art und Weise können 
keine Daten „verschluckt“ werden und der Master weis auch immer wann 
Neue Daten abgeholt werden müssen...

LG Jens

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uart hat doch mit TWI nichts zu tun. Wenn er über UART befehl bekommt 
irgendetwas auf die TWI Leitung zu schreiben macht er sich eben solange 
wieder zum Master der TWI Leitung

Autor: G. Ast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias Korrmann schrieb:
> Uart hat doch mit TWI nichts zu tun. Wenn er über UART befehl bekommt
> irgendetwas auf die TWI Leitung zu schreiben macht er sich eben solange
> wieder zum Master der TWI Leitung

der master soll aber u.A. auch alles auf dem TWI Bus auf dem Rechner 
loggen

klingt gut, Jens, so werd ichs machen, vielen dank ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.