-
-
Erfahrener Benutzer
Roboter-Spezialist
Hallo,
der code ist für mich schlecht nachvollziehbar, es kommt noch hinzu, dass ich nicht in C programmiere. vielleicht hilft folgendes, denn so habe ich es gemacht (man beachte genau die reihenfolge beim setzen und rücksetzen von dem clock-ausgang).
in einer art basic würde das auslesen eines registers etwa so aussehen:
function read_register(Regi As byte) As byte
chipSelect=0
Regi &= 127 //muss beim Lesen immer 0 Sein
for i = 7 To 0 Step -1
Sclock=0
mosi = Regi && 2^i
Sclock=1
next i
//hier kurze pause einbauen
'-------------------------------------------
'Registerinhalt lesen
value = 0
for i = 7 To 0
Sclock=0
Sclock=1
If miso = 1 Then value += 2^i
next i
chipSelect=1
return value
du kannst das auf deinen quellcode sicher besser übertragen als ich...
die bewegungsregister werden nicht anderes ausgelesen. dort überträgt man die addresse &H50 für das motion register, wartet mindestens 75µs und taktet dann 52 bits aus dem sensor.
noch eine wichtige sache: wenn scheinbar nur die bewegungsregister falsch sind, könnte das auch an der umrechnung liegen. die bewegungswerte streuen ja zwischen -128 und 127. ist deine umrechnung korrekt bzw. hast du das bedacht? probier doch erstmal das maximumpixel-register zu lesen. an diesem kann man schön die funktion testen, denn dies register enthält ja den wert des hellsten pixel des bildes. wenn du mit einer lampe auf den sensor leuchtest, muss dieser wert sofort steigen. er kann maximal 63 (6 bit) betragen. wenn das nicht klappt, stimmt die leseroutine noch nicht.
ist jetzt vielleicht keine große hilfe, aber das kriegen wir hin!
ruppi
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen