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.
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
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.
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.