Forum: Compiler & IDEs App Note AVR311 (TWI-Slave)


von Flo S. (tuxianer)


Lesenswert?

Hallo,

hat sich zufällig jemand einmal die Arbeit gemacht, die App Note AVR311 
für den GCC Compiler zu portieren? Der Code wurde ja für IAR 
geschrieben.
Oder hat gar jemand eine schlankere Slave Library in Benutzung?

Für den Master nutze ich die Library von Peter Fleury, und bin mit 
dieser eigentlich zufrieden.

Folgende Funktionalitäten aus dieser nutze ich:
1
i2c_start_wait(adr+I2C_WRITE);
2
i2c_write(byte);
3
i2c_stop();
1
i2c_start(adr+I2C_READ);
2
byte = i2c_readAck();
3
i2c_stop();

Nun benötige ich auf dem Slave die Funktionen, welche darauf reagieren. 
Diese sollten ja eigentlich nur einen Bruchteil der AVR311 ausmachen.

Viele Grüße

Edit: das habe ich jetzt gefunden: 
Beitrag "TWI/I2C Atmega32 <-> Atmega8 mit AVR311 & AVR315". Das scheint fehlerfrei 
zu compilieren. Aber eine schlankere Variante wäre mir eigentlich 
lieber.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich habe mir da letztens meine eigene Implementierung geschrieben.
In erster Linie ist das eine state machine, die in der TWI-ISR
abgearbeitet wird, und die in Abhängigkeit vom aktuell gültigen
TWSR dann die Statusübergänge organisiert.  Nebenläufig tickt dann
ggf. eine zweite state machine los, die eine (bzw. mehrere) ADC-
Messungen anleiert.

Ich könnte mir gar nicht so recht vorstellen, warum man dafür
jeweils noch extra Funktionen implementieren will; der eigentliche
Aufwand liegt doch darin zu verwalten, dass die verschiedenen
Zustände ordentlich ineinander übergehen, unabhängig davon, was
der master denn gerade genau von einem will (und der darf so ziemlich
alles wollen, egal wie unsinnig es ist — man muss dann halt mit der
passenden Antwort aufwarten).

von Flo S. (tuxianer)


Lesenswert?

Könntest du deine Implementierung bitte mal hochladen? Wie gesagt die 
App Note von Atmel ist mir eigentlich viel zu groß und unübersichtlich, 
für dass, was ich möchte.
Nur um mir etwas eigenes zu schreiben bin ich noch nicht gut genug mit 
dem I2C Protokoll vertraut. Da müsste ich mich erst noch einarbeiten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Florentin S. schrieb:
> Könntest du deine Implementierung bitte mal hochladen?

Naja, veröffentlichungsreif finde ich das nicht.  Du hast Post.

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.