-         

Ergebnis 1 bis 2 von 2

Thema: Fehler bei Entfernungsmessung

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.03.2004
    Ort
    37287 Wehretal
    Alter
    32
    Beiträge
    169

    Fehler bei Entfernungsmessung

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277

    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.

    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •