Hallo Ihr (hoffentlich) Wissenden! Ich habe auf der Basis des AVR-Dokumentes AVR312 ein kleines Programm geschrieben, das einen ATtiny zu einem I2C-Slave machen soll. Genauer gesehen habe ich eigentlich nur den 312-Code geklaut ... Als Master fungiert mir ein Arduino mit der dazugehörigen WIRE-Bibliothek. Wenn ich damit einen PCF8574 ansteuere, dann klappt das ganz prima, also scheint mein Master wohl zu funktionieren. Wenn ich mein USI-Slave-Programm nun auf einen ATtiny2313 lade, dann klappt es auch, ich kann Daten vom Master zum Slave senden und danach per Abfrage wieder zurücksenden lassen. Wenn ich es aber auf einen ATtiny861A portiere, dann geht es nicht mehr. Obwohl der Code (abgesehen von den Konstanten) der gleiche ist, und obwohl die USI-Schnittstelle doch eigentlich die Gleiche sein sollte. Es scheint irgendwie so zu sein daß der Overflow-Interrupt beim 861A nur ein einziges Mal ausgelöst wird, während er beim 2313 mehrmals ausgelöst wird. Es scheint so, daß das USIDR-Register beim 861A nicht das Byte enthält, das gerade auf dem Bus gesendet wurde. Fällt dazu irgend jemandem etwas Sinnvolles ein? Zum Beispiel einen Hinweis, daß ich in den Datenblättern irgend einen Nebensatz übersehen habe, der einen gravierenden Unterschied zwischen den beiden USIs beschreibt, oder so? Vielen Dank für Euere Kommentare. Trööt!
:
Verschoben durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.