www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ARM LPC 2129, I2C als "passiver" Slave


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo werte Leser,

Ich wollte gerne mit meinem ARM auf einem I2C-Bus mitlauschen. 
Angeschlossen ist das Board an eine Freisprecheinrichtung mit 
I2C-Display.
Da sich mehrere Slaves auf gleicher Adresse schon mal mit ihrem 
Acknowledge stören können, wollte ich mein ARM-Board gerne passiv 
lauschen lassen - also ohne Acknowledge.

Wenn ich im Control Register das Acknowledge ausschalte, bekomme ich 
jedoch keinen Interrupt mehr. Mach ich was falsch oder soll das so sein?

Hier der Code:
I2ADR       =   0x74;
I2CONCLR    =   0x7C;
I2CONSET    =   0x40;    // mit 0x44 (AA enabled) gehts dann
I2SCLH      =   I2CHIGH;
I2SCLL      =   I2CLOW;

Würde mich über eure Ideen sehr freuen.
Gruß,
Christian

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian wrote:
> Wenn ich im Control Register das Acknowledge ausschalte, bekomme ich
> jedoch keinen Interrupt mehr. Mach ich was falsch oder soll das so sein?

Ja das ist richtig.
Das Mitlauschen ist nur mit MCs möglich, die ein abgerüstetes I2C haben, 
wo das ACK per SW erzeugt werden muß, z.B ATtiny:

Beitrag "I2C (TWI) Sniffer mit AVR"


Peter

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm. Das ist aber schade. Die Rechenleistung wäre zwar für einen SW-I2C 
bestimmt noch ausreichend, aber ich glaube diesen Schritt werde ich 
nicht gehen. Und früher oder später kommt das Display eh weg. Dann 
brauch ich das Acknowledge ja eh wieder.

Irgendwie erschließt sich mir jedoch weiterhin nicht wieso ich das 
Acknowledge abschalten kann obwohl der Controller dann gar keinen I2C 
mehr verarbeiten kann. Erscheint mir reichlich sinnlos gerade.

Christian

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian wrote:

> Irgendwie erschließt sich mir jedoch weiterhin nicht wieso ich das
> Acknowledge abschalten kann obwohl der Controller dann gar keinen I2C
> mehr verarbeiten kann. Erscheint mir reichlich sinnlos gerade.

Nein, ist nicht sinnlos.
Sondern das ist der Vorteil von I2C z.B. gegenüber ner UART.

Wenn Dein Empfangspuffer voll ist oder Du noch keine Sendedaten bereit 
hast, kann der Slave mit dem NACK dem Master sagen, daß er noch nicht 
bereit ist und er es später nochmal versuchen soll.

Z.B. die I2C-EEPROM machen das etwa 5ms lang, wenn sie die Daten 
speichern.

Bei I2C kann es also nie zu einem Pufferüberlauf kommen.


Peter

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Argh, du hast recht. Daran hab ich gar nicht gedacht. Dadurch ergibt die 
Sache wirklich Sinn.
Vielen Dank für den Hinweis und auch deine vorherigen Post :)

Ich werd mal gucken ob ich im Auto Probleme mit den 2 Slaves haben 
werde. Aufm Schreibtisch hatte ich in der Vergangenheit leider schon mal 
ausdauernde Kommunikationsprobleme beobachtet. Heute hats bei den Tests 
im Auto aber scheinbar problemfrei funktioniert. Vlt passt der neue 
Quarz bzw die neue PLL Einstellung besser zur Baudrate oder ähnliches...

Also nochmal vielen Dank für die schnelle und kompetente Hilfe und noch 
einen schönen Sonntagabend!
Christian

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.