Forum: Mikrocontroller und Digitale Elektronik RasPi und AVR mit I2C (TWI) verbinden


von Christoph P. (m_pfc)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

Ich beschäftige mich gerade mit dem TWI / I2C Bus insbesondere mit einem 
AT90CAN128 als Slave und Einen Raspberry als Master.

Auf dem Slave läuft ein simples Programm auf Basis der Bibliothek von 
www.jtronics.de (bzw. die von ihm bereitgestellte main.c)
auf dem RasPi sind die I2C-tools installiert und ich finde auch den AVR 
mit i2cdetect.

Meine Frage ist wie und wo ich den Inhalt von rxbuffer und txbuffer auf 
dem Pi lesen bzw schreiben kann.

Um es noch konkreter zu machen:

Der PI soll in rxbuffer[0] und rxbuffer[1] jeweils einen Wert schreiben 
und der AVR soll daraufhin reagieren und eine Antwort in txbuffer[0] und 
txbuffer[1] schreiben.

ein Beispiel hab ich als code angefügt.

Ich bedanke mich schon jetzt für hilfreiche Antworten.

von (prx) A. K. (prx)


Lesenswert?

Ein Mikrocontroller als I2C-Slave an einem RasPi funktioniert nur bei 
recht niedriger Bitrate und bei kurzer Interrupt-Latenz, da der RasPi 
einen Hardwarefehler enthält.

https://www.mikrocontroller.net/articles/Raspberry_Pi_Einführung#Errata

: Bearbeitet durch User
von Christoph P. (m_pfc)


Lesenswert?

Wie kann ich denn Einfluss auf die Bitrate und die Interruptlatenz 
nehmen?
Und wie kann ich von dem Raspi aus auf die jeweiligen Register (rxbuffer 
txbuffer) zugreifen?

von (prx) A. K. (prx)


Lesenswert?

Christoph P. schrieb:
> Wie kann ich denn Einfluss auf die Bitrate und die Interruptlatenz
> nehmen?

Die vom I2C Treiber des RasPi verwendete Bitrate lässt sich im RasPi 
einstellen. Mehr dazu weiss das Web.

Die Interruptlatenz deines AVRs hängt massgeblich von deinen 
Programmierkünsten ab. Wobei ich vorausgesetzt hatte, dass du den 
I2C-Slave über Interrupts betreibst, anders gehts am RasPi sowieso 
praktisch nicht.

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.