Hallo zusammen,
Vorneweg: Ich habe das Forum durchsucht aber bin leider nicht fündig
geworden.
Ich habe die letzten Tage damit zugebracht mich in TWI ein zu lesen und
habe eine eigene TWI-Library in Assembler geschrieben.
Ich habe das gemacht weil ich dieses Thema gerne umfänglich verstehen
und nicht einfach irgendeine Library nutzen möchte.
Ich habe allerdings ein paar Fragen:
1. Ist es möglich, dass UART und TWI sich bei der Kommunikation in die
Quere kommen?
Ich hatte vor, Werte von einem Gyro per TWI aus zu lesen und mittels
UART an den PC zu senden, jedoch sendet mein UART mir nur Müll, wobei
ich den Code 1:1 aus dem AVR-Tutorial dieser Seite übernommen hat, und
er für sich alleine auch funktioniert ("test" senden klappt wunderbar,
sobald ich den Code jedoch ins Mainprogramm zum TWI stecke, empfange ich
immer nur 0x1C)
2. Ist dieser modulare Aufbau, so wie ich es realisiert habe,
sinnvoll/richtig?
Es war mir wichtig, den Code so zu gliedern, dass ich damit umfassend
arbeiten kann (daher zb. ACK und NACK als einzelne Unterprogramme)
3. In meinem Mainprogramm funktioniert die Übertragung momentan so, dass
ich in der Initialisierung den TWI-START schicke und dann im loop
REPEAT-START schicke,
ein Register anfordere (Write),
dann REPEAT-START schicke,
dann das Register auslese (READ),
das dann per UART ausgebe und dann
wieder zu loop springe.
Es klappt jedoch nicht(!) wenn ich am Ende des Loops einen STOP-Befehl
sende und zu Beginn wieder ein START.
(Ich gehe also davon aus, dass irgendwas mit dem STOP-Befehl nicht
stimmt)
Kann mir da Jemand weiterhelfen?
Im Anhang die Library, gerne zur freien Verfügung, falls denn alles
stimmt.
Danke im Vorraus
Peter
*Edit:*
Ich muss mich selber korrigieren.
Der UART funktioniert wahrscheinlich, die 0x1C ist die Adresse des
Groskopes. Und anstatt den Wert des Registers aus zu lesen, hat er eben
diesen Wert ständig gesendet.
Dafür stehe ich nun vor dem Problem, dass das Auslesen der TWI-Daten
wohl doch nicht funktioniert.