Hallo Tim
Erstmal danke für die Antwort.
Am Anhang findes du das komplette .c-File. Die Funktion "I2C_Task()"
wird zyklisch aufgerufen.
Ich verwende überigens ein ATMEGA88.
>Du braucht auch noch 0x50 und 0x58
0x10 = TWSTO: TWI STOP Condition Bit
0x50 = TWI Enable Acknowledge Bit & TWSTO: TWI STOP Condition Bit
0x58 = zusätzlich noch TWI Write Collision Flag?
Falls du die 0x50 und 0x58 von "Figure 21-14" hast, muss ich dir leider
sagen, dass dies der Code im TWSR ist, welches nur gelesen werden kann.
Die ganze Steuerung findet ja mit dem TWCR statt und da habe ich TWEA
gesetzt. Ich muss allerdings gestehen, dass ich nicht ganz verstanden
habe was Atmel bei den 3 Bedingungen meint. Meiner Ansicht nach, sind
das alles Dinge die mich nicht betreffen da ich im MasterReceiver Mode
arbeite und nicht im Slave:
>The TWEA bit controls the generation of the acknowledge pulse.
>If the TWEA bit is written to one, the ACK pulse is generated on the TWI bus
>if the following conditions are met:
>1. The device’s own slave address has been received.
>2. A general call has been received, while the TWGCE bit in the TWAR is set.
>3. A data byte has been received in Master Receiver or Slave Receiver mode.
>By writing the TWEA bit to zero, the device can be virtually
>disconnected from the 2-wire Serial
>Bus temporarily. Address recognition can then be
>resumed by writing the TWEA bit to one again.
>Ausserdem denke ich mal das dem "case 10:" noch ein 0x fehlt....
Das ist korrekt so, ich habe die cases Dezimal nummeriert
Grüsse Raph