bascom instr

Gast #5675620
Lesenswert?

Ich nutze software uart.
Die Variabellänge text wächst natürlich an, vorher habe ich den Inhalt 
der Variabele gelöscht.
Wenn ich bla(1) u. bla(2) nutze, funktioniert es.
Es schaltet eine Led an, oder deaktiviert eine Led.
Nehme ich aber für bla(1) z.b "weiter" u. für bla(2) z.b "stopp" 
funktioniert es nicht und ich weiss nicht wieso.


Folgenden Programmiercode habe ich:
$regfile = "m8def.dat"
$crystal = 1000000
Baud = 9600

$swstack = 32
$hwstack = 32
$framesize = 40


Config Portb.0 = Output
Led Alias Portb.0

Dim Text As String * 64
Dim Var As Byte
Dim Pos(2) As Byte
  Dim Bla(2) As String * 24
  Bla(1) = "a"
  Bla(2) = "b"

Text = ""

Open "comd.0:9600,8,n,1" For Input As #1
   Do
      Var = Inkey(#1)
         If Var <> 0 Then
            Text = Text + Chr(var)
            Gosub Pruefen
         End If
   Loop
Close #1
End

Pruefen:
   Pos(1) = Instr(text , Bla(1))
      If Pos(1) > 0 Then
         Led = 1
         Text = ""
      End If
   Pos(2) = Instr(text , Bla(2))
      If Pos(2) > 0 Then
         Led = 0
         Text = ""
      End If
Return
#5676324
Lesenswert?

frage schrieb:
> $regfile = "m8def.dat"
> $crystal = 1000000

Moin,

Lass mich raten: Interner RC-Oszi/8?
9600baud bei 1MHz ergibt 7,84% Fehler. Das kann nicht funktionieren.
Mit 4800 könnte es mit Glück funktionieren.

Grundsätzlich geht das mit dem internen RC vielleicht mal zufällig, der 
ist zu ungenau für Uart, vor allem bei dem ollen Mega8.
Nein, mit 8MHz oder geringerer Baudrate wird die Ungenauigkeit nicht 
besser!
Mit 1MHz und 9600 funktioniert es aber ziemlich sicher gar nicht.

Gruß,
Norbert
Gast #5676400
Lesenswert?

@Rufus Τ. F. ..ja hat geklappt, also ich sende Daten zum Atmega u. 
schicke sie dann direkt wieder über seriell zurück.
UND ja..es gab fehlerhafte Informationen...
DAHER nochmal einen dicken Dank an Norbert S.

Bei software uart, klappt es bei mir mit einer Taktfrequenz von 1 MHZ 
nur mit 1200 baud...

Nochmal vielen Dank für die nützlichen Informationen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren