Forum: Mikrocontroller und Digitale Elektronik bascom instr


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von frage (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Hallo,
ich habe eine Frage zu instr.

In basic geht folgender Befehl:
if instr(text,"Hallo") > 0 then

end if

aber anscheinend unter bascom nicht.
Keine Ahnung wieso.

von Karl M. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dann schau mal hier nach:

https://avrhelp.mcselec.com/index.html?instr.htm

Wird wohl auch daran liegen, dass Mann und Frau immer eine Variable 
nutzen muss.

von frage (Gast)


Bewertung
0 lesenswert
nicht 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

von frage (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hat keiner eine Lösung für das Problem?
Schade

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Du könntest ja mal den Inhalt Deiner Variablen "text" irgendwohin 
ausgeben.

von frage (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Rufus Τ. F....danke für den Hinweis...werde es gleich nochmal 
testen...beim ersten Test kamen ganz andere Zeichen an rx raus, obwohl 
ich was ganz anderes bei tx gesendet hatte.

von Norbert S. (norberts)


Bewertung
0 lesenswert
nicht 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

von frage (Gast)


Bewertung
0 lesenswert
nicht 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.

von frage (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ich korrigiere mich...leider nur eine baudrate von 600

von Norbert S. (norberts)


Bewertung
0 lesenswert
nicht lesenswert
Moin,

Der Baudratenfehler ist rechnerisch bei 600 kein Stück besser als bei 
1200.
Daß das ein Trugschluss ist, kann man nicht oft genug wiederholen.
Es war dann nur Zufall, daß es bei 600 besser ging.
Der RC ist zu ungenau! Geringere Baudrate macht es nicht besser!

Gruß,
Norbert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.