Forum: Mikrocontroller und Digitale Elektronik SRF02 (TWI) - Kein 255 bei Messung - 15cm zu viel


von Max D. (Firma: Hobby) (fmhweb)


Angehängte Dateien:

Lesenswert?

Hi,

wenn ich eine Messung starte und sofort die Firmware auslese, sollte ich 
ja den Statuscode 255 zurückbekommen, solange die Messung läuft. Doch 
ich bekomme immer eine 5 zurück, was wohl meine Firmware-Version ist.(?)

Tausche ich die Abfrage der Version (sofort nach starten der Messung) 
gegen das auslesen der beiden Bytes aus, bekomme ich einen anderen Wert 
als den finalen Wert nach einem Delay:

-> Messung
-> Bytes auslesen - z.B. 100 cm
-> Delay 65ms
-> Bytes auslesen - z.B. 120 cm

Da scheint die Messung noch zu laufen. Wieso bekomme ich kein 255 Status 
zurück?

Den Sensor habe ich vor 2 Monaten gekauft. Natürlich kann man schwer 
davon ableiten welche Version ich habe, aber kann 5 stimmen? Gibt es 
schon höhere Versionen?

Das zweite Problem ist, dass ich warum auch immer bei ca. 15cm mit einem 
Lineal gemessen cm, einen Wert von ca. 30cm (stabil) vom Sensor bekomme. 
Woran kann das den liegen? Bis auf 0 hatte ich noch keinen Wert unter 
30. Kann das auch am TWI liegen? Ist das erste mal das ich damit 
arbeite. Die beiden Leitungen sind mit 4,7K Widerständen an +5V 
angeschlossen.

Snippet:
1
i2c_transmit(SRF02, 0, 81);
2
firmware = i2cRead(SRF02, 0);
3
lcd_string_Int(firmware);
4
_delay_ms(65);  //Warten auf Messung
5
range = getRange();
6
lcd_setcursor(0,2);
7
lcd_string("Range: ");
8
lcd_string_Int(range);
9
lcd_string(" cm");
10
11
uint16_t getRange(void){
12
  uint16_t x;
13
  x = i2cRead(SRF02,2);
14
  if(x){x += 256;}
15
  x += i2cRead(SRF02,3);
16
  return(x);
17
}

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
Noch kein Account? Hier anmelden.