Ist doch klar. Die Compiler bringen nach ein Uhr nachts immer wieder Schrott (woran das nur liegen kann???) - nur bei mir liefs gestern nach eins (nach fehlerbehafteten Abenden) sauber - ´n RC-5-Dekoder im Interrupt.
Spass beiseite. Dein guter Wille ist im Code ja schon zu sehen, aber Du musst ziemlich kräftiger wollen, wenn Du bei den Atmels bei EINEM i2c_read ZWEI Bytes (Zitat aus Deinem Code : // <== int16_t Rückgabewert) haben willst. Meine Atmels spendieren dabei immer nur ein Byte : ( .
Abhilfe: lies mal diese Schnippsel (klick) - beachte, dass dabei aus unerfindlichen Gründen (angeblich will ich, dass der Quellcode übersichtlicher ist) teilweise zwei oder drei Befehle in einer einzigen Zeile stehen. Es ist der alte Trick aus zwei Bytes ein Word zu löten. Und achte bitte auch auf die Typdefinitionen uint8_t und uint16_t.
Viel Erfolg.
Lesezeichen