Fehler bei Entfernungsmessung
Hallo!
Ich bin das Programmbeispiel im RN-Wissensbereich zum auslesen eines srf08 durchgegangen...
ich denke mal, dass ich alles so abgetippt habe, dass es passen sollte....
er gibt mir aber immer in zeile 70
Code:
I2cwbyte Sf08_adr_0 + 1
Errors aus: Invalid datatype + variable not dimensioned
hier ist erschtma der programmcode von mir:
Code:
'###############################################################################
'# #
'# entfernung_1.bas #
'# #
'# Aufgabe: Messen von Entfernungen via SRF08 #
'# #
'###############################################################################
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Const Sf08_adr_0 = &HE0 ' I2C Adresse
Const Sf08_c_range = 100 ' Reichweite
Const Sf08_c_gain = 1 'Empfindlichkeit
Dim Lsb As Byte
Dim Msb As Byte
Dim Ival As Word
'###############################################################################
'# Setzten des Range Wertes #
'###############################################################################
i2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cwbyte Sf08_c_range
I2cstop
'###############################################################################
'# Setzten des Gain Wertes #
'###############################################################################
i2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 1
I2cwbyte Sf08_c_gain
I2cstop
'###############################################################################
'# Messung auslösen #
'###############################################################################
i2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 0
I2cwbyte 81
Waitms 70
'###############################################################################
'# Ergebnis abholen #
'###############################################################################
I2cstart
I2cwbyte Sf08_adr_0
I2cwbyte 2
I2cstart
I2cwbyte Sf08_adr_0 + 1
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Ival = Makeint(lsb , Msb)
'###############################################################################
'# Ergebnis abholen #
'###############################################################################
Print "Die Entfernung beträgt" Ival "Meter."
und dann hab ich noch ne frage:
was ist der unterschied zwischen ack & nack?
MfG Jürgen
Re: Fehler bei Entfernungsmessung
Zitat:
Zitat von [IN
Crusher]Hallo!
Ich bin das Programmbeispiel im RN-Wissensbereich zum auslesen eines srf08 durchgegangen...
ich denke mal, dass ich alles so abgetippt habe, dass es passen sollte....
er gibt mir aber immer in zeile 70
I2cwbyte Sf08_adr_0 + 1
Tja, da isse wieder, die Bascom Rechenschwäche. Was habe ich da schon geflucht :-(.
Leider akzeptiert Bascom die berechnete Übergabe der Deviceadresse nicht.
Man muss es also umständlich entweder so lösen:
Sf08_adr_0_read = Sf0ß_adr_0 + 1
I2cwbyte Sf08_adr_0 _read
oder gleich eine Konstante mit der Readadresse definieren.
Zitat:
was ist der unterschied zwischen ack & nack?
Ack sagt dem Slave (in diesem Fall) es werden noch mehr Daten gelesen, Nack erzählt ihm, daß dies das letzte benötigte Byte war.
Grüße
Henrik