USI TWI ATtiny84a Master Daten aus Sensor auslesen

OP #3756787
Lesenswert?
• ▲
▼
Hallo Zusammen.Ich benutze einen ATtiny4 der eine USI-Schnittstelle 
besitzt und mit einen Lagesensor BMG160 verbunden ist. Der Tiny soll die 
Sensordaten nur auslesen.Der Tiny ist am PortA(Pin6) mit SDA vom Sensor 
verbunden, sowie am PortA(Pin4) mit der Clockleitung des Sensors.

Das Programm für USI-TWI-Master habe ich im Netz gefunden und sollte 
auch funktionieren.

Nun zu meinem Problem:
Wenn ich in der Main die USI_TWI_Start_Read_Write-Funktion aufrufe, 
welcher die Adresse des Sensors sowie das Register(des Sensors) der X- 
bzw. Y Lage übergeben wird, erhalte ich in den Zwischenspeichervariablen 
X- und Y immer den Wert 15.

i2cMessageBuf[0] = (0x68 << 1) | 1 ;//Adresse vom Sensor + 1 zum Lesen
i2cMessageBuf[1] = 0x07; // X_LSB des Sensors
USI_TWI_Start_Read_Write( i2cMessageBuf, 2 );
x=i2cMessageBuf[1];

Dabei spielt es keine Rollte welches Register ich vom Sensor auslese. 
Der Wert ist immer 15

Ich bin so langsam ratlos :/
Das Programm habe ich mal angehangen.
Angehängte Dateien:
Gast #3758483
Lesenswert?
• ▲
▼
Hi, David,

> Das Programm für USI-TWI-Master habe ich im Netz gefunden und sollte
> auch funktionieren.

Im Internet findet sich leider auch sehr viel Schrott. "Internet" als 
Quelle ist kein Indiz für Qualität.
Besser nimm die Vorlagen aus der hiesigen Artikelübersicht, auch aus dem 
Roboterforum.

Ciao
Wolfgang Horn
Gast #3760373
Lesenswert?
• ▲
▼
Jaja und manchmal steht im Internet auch wie man den Sch... Benutzen 
soll:
TWI_Start_Read_Write()
TWI_Start_Random_Read()
These two functions work the same as the corresponding functions 
described above but with a few exceptions.
They don't return any error values.
Data read is not transferred into the buffer. Doing this will be done 
with the function described next.
When calling TWI_Start_Random_Read, the messageSize should be the number 
of data bytes requested plus one, not two.

Mit RandomRead muß das Register ausgewählt werden, erst dann mit 
ReadWrite lesen. So wie's bisher dasteht, wird nur der interne 
Addresszähler immer höher gedreht (vielleicht kommt ja nach Überlauf 
doch was). Oder das Ding sagt garnix, wenn keine Adresse gesetzt wurde.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.