App Note AVR311 (TWI-Slave)

OP #2104279
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.
Moderator Persönliche Seite #2104301
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).
OP #2104311
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren