- LiFePO4 Speicher Test         
Ergebnis 1 bis 9 von 9

Thema: komische Fehler in Bascom? was ist falsch???

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    34
    Beiträge
    841
    Blog-Einträge
    1

    komische Fehler in Bascom? was ist falsch???

    Anzeige

    Powerstation Test
    wie ist die oben genannte frage zu beantworten? ich denke ja bin mir aber nicht sicher ...

    dankeschön

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Das läst sich sehr leicht ohne besonderes Equip herausfinden indem man einfach einen langen Wait nimmt und dann einen IRQ auslöst.

    Zb. Wait 10 und bei einem Pin-IRQ (Taster am Pin) eine LED an einem anderen Pin Toggelt.(Debounce nicht vergessen)
    Gruß
    Ratber

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    34
    Beiträge
    841
    Blog-Einträge
    1
    gut die frage hat sich eh erledigt das ichs nu ganz anders mach trotzdem danke....

    nun hab ich ein anderes problem.

    ich möchte 7 zeichen auswerten ->so aufgebaut:

    "licht:1"

    demnach muss ich 7 zeichen empfangen


    da ich das rn128 funk board habe.... mache ich das mit
    Code:
    Do
      Zahl = Zahl + 1
       Z = Inkey()
       If Z <> 0 Then Licht = Licht + Chr(z)
       If Len(licht) = 7 Or Zahl = 20 Then Exit Do
    Loop
    zahl is sowas wie ein überlauf das die schleife nicht ewig weiterläuft wenn nix kommt...(ja hätte auch ne for to next schleife nehmen können.

    dannach folgt das:
    Code:
    If Len(licht) = 7 Then
       Tempo = Mid(licht , 7 , 1)
       Modus = Val(tempo)
          Select Case Modus
    
          Case 0                                                'beide Modis aus
          Portb.6 = 0
          Portb.7 = 0
    
          Case 1                                                '2. Blinkmodus an
          Portb.6 = 1
          Portb.7 = 0
    
          Case 2                                                'Landelichter an
          Portb.6 = 0
          Portb.7 = 1
    
          Case 3                                                'beide Modis an
          Portb.6 = 1
          Portb.7 = 1
    
          End Select
    End If
    hier meckert er 4 mal...ka warum...



    Code:
    in der zeile:
    tempo=mid(lciht,7,1) 
    der fehler :
    Error:46 Assignement error [Tempo: 0 MID(LICHT,7,1):200]
    dann
    Code:
    modus=val(tempo)
    der fehler :
    Error:46 Assignement error [MODUS: 0 VAL(TEMPO):200]
    Code:
    error:7 IF THEN expectet [158]
    der letzte
    Code:
    error:123 END IF expectet
    vor allem die letzten 2 versteh ich nicht....is ja alles da?!stört sich Bascom an dem select case darin???

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Ich sehe nicht wo du synchronisierst.
    Wo willst du wissen wo Anfang und Ende ist ?

    Ich würde es mit Startbit,Stopbit und am besten noch mit CRC-summe machen damit du weißt ob das "Telegramm" auch gültig ist.
    Gruß
    Ratber

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    34
    Beiträge
    841
    Blog-Einträge
    1
    hmm das is ja erst mal egal...ich will ja erst mal diese blöden fehler rausbekommen....dann kann ich den string noch überprüfen

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Is denn "tempo" sicher als "string" definiert ?

    Wär besser, du stellst den ganzen Code (aber unzensiert) da rein.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    34
    Beiträge
    841
    Blog-Einträge
    1
    ok..hier....das ganz lies noch einen temperatursensor aus..

    Code:
    $regfile = "m128def.dat" ' Bei Mega 128 "
    $framesize = 60
    $swstack = 60
    $hwstack = 60
    
    $crystal = 16000000                                         'Quarzfrequenz
    $baud = 19200                                               'Baudrate für Funkmodul
    $baud1 = 9600                                               'Baudrate für MAX
    
    Dim A As Single
    Dim B As Single
    Dim Z As Byte
    Dim Zahl As Single
    Dim Licht As String * 7
    
    'Aus- und Eingänge
    
    Ddrb = &B11000000
    
    
    
    
    'I2C Deklarationen
    
    Config Scl = Portd.0
    Config Sda = Portd.1
    
    
    Declare Function I2cstart() As Byte
    Declare Sub Ic2send(byval Databyte As Byte) As Byte
    Declare Sub Funtion I2creceive(byref Databyte As Byte) As Byte
    Declare Sub Sub I2cstop
    'Deklaration abgeschlossen
    
    
    Config Pine.2 = Output
    Rdy_hostempfangsbereit Alias Porte.2                        'Auf Low setzen wenn Empfangsbereit für Daten vom Funkmodul
    
    Config Pine.5 = Input
    Bsy_funkmodulsendebereit Alias Porte.5                      'Ist Low wenn Funkmodul frei zum senden
    
    
    Open "com2:" For Binary As #2                               'Ausgabe über zweite serielle Schnittstelle (MAX)
    
    
    Sound Portg.2 , 2000 , 800                                  'gibt einen langen Kontrollton aus
    Sound Portg.2 , 1000 , 600                                  'gibt einen kurzen Kontrollton aus
    
    
    
    Config Serialin = Buffered , Size = 120
    Config Serialout = Buffered , Size = 120
    
    Config Serialout1 = Buffered , Size = 120
    Enable Interrupts
    ' ---------------------------------------------------
    
    
    
    
    
    Print "### Initalisierung erfolgreich abgeschlossen! ###"   'Kopfzeilen senden
    Print "### Dieses Programm wurde im Rahmen einer Facharbeit von Stefan Rau geschrieben. ###"
    Print ""
    
       Wait 1
    
    
    
    
    
    Print "### Messung initalisieren... ###"
    Wait 1
    
    
    
    'i2cstart
    
    
    Dim Device As Byte
    Dim Deviceread As Byte
    Dim Lowtemp As Byte
    Dim Hightemp As Byte
    Dim Value As Word                                           '!!!!!!!
    I2cinit
    
    Device = 144                                                'Wenn alle Adressleitungen des 1621 auf GND sind.
    Deviceread = 145
    
    '----------------------------------------------Hauptprogramm------------------------------------------------------------
    B = 0
    Do
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HEE                                               'Temperaturmessung anstoßen
    I2cstop
    
    I2cstart
    I2cwbyte Device
    I2cwbyte &HAA                                               'Temperaturmessung Lesekommando
    I2cstop
    
    I2cstart
    I2cwbyte Deviceread
    I2crbyte Lowtemp , Ack                                      'LSB holen
    I2crbyte Hightemp , Nack                                    'MSB holen
    
    I2cstop
    
    Value = Lowtemp * 10
    If Hightemp = 128 Then
      Value = Value + 5
    End If
    
    
    
    
    
    
       Print "Temp:" ; Value
    
    
    B = B + 1
    If B = 15 Then Sound Portg.2 , 20 , 800 : B = 0
    Waitms 500                                                  'Pause bis zur nächsten Messung
    
    
    
    
    'lichtmodus überprüfen
    
    Rdy_hostempfangsbereit = 0                                  'empfangsbereitschaft am Funkmodul herstellen
    
    
    
    Do
      Zahl = Zahl + 1
       Z = Inkey()
       If Z <> 0 Then Licht = Licht + Chr(z)
       If Len(licht) = 7 Or Zahl = 20 Then Exit Do
    Loop
    
    
    
    If Len(licht) = 7 Then
       Tempo = Mid(licht , 7 , 1)
       Modus = Val(tempo)
          Select Case Modus
    
          Case 0                                                'beide Modis aus
          Portb.6 = 0
          Portb.7 = 0
    
          Case 1                                                '2. Blinkmodus an
          Portb.6 = 1
          Portb.7 = 0
    
          Case 2                                                'Landelichter an
          Portb.6 = 0
          Portb.7 = 1
    
          Case 3                                                'beide Modis an
          Portb.6 = 1
          Portb.7 = 1
    
          End Select
    End If
    
    'lichtmodustest
    'Portb.6 = 1
    'Wait 5
    'Portb.6 = 0
    'Wait 5
    'ende lichtmodustest
    
    
    Loop
    End

  8. #8
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    *grmpf*
    Tempo, Modus: Diese beiden Seppeln hast du gleich gar nicht definiert, wohl, um nix falsch zu machen

    Füg' das mal ein, und ein weiteres Weihnachtswunder wird geschehen
    Code:
    Dim Tempo As String * 3
    Dim Modus As Byte
    Das ist erstmal nur, damit Bascom nicht gar so verzweifelt ist.
    Wenn's nicht funzt, reden wir weiter
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.09.2006
    Alter
    34
    Beiträge
    841
    Blog-Einträge
    1
    oha....das war mein fehler.....das hatte ich schon mal drinne aber als es net funktionierte hab ich alles was ich geändert hatte wieder rausgelöscht....dann hab ich das wohl vergessen...dankeschön...

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad