www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Problem


Autor: Steven Br (steven1992)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi
Ich weiß einfach nicht was ich noch machen soll. Ich versuche ein 
Programm in Bascom zu schreiben, wenn ich an den Microcontroller 
ATMEGA32 von einen Terminal Programm (HTerm) An sende dann soll eine 
LED, die an PORTD.6 ist aufleuchten und bei Aus ausgehen. Hier ist mal 
der Code:

$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialin = Buffered , Size = 20

Dim Na As String * 10

Print "Start"

Enable Interrupts
Main:
Do

   If Ischarwaiting() = 1 Then
   Input Na
      If Na = "An" Then
      Portd.6 = 1
      End If

      If Na = "Aus" Then
      Portd.6 = 0
      End If

   End If

Wait 1
Loop

Es passiert absolut nichts mit der LED. Nur der PC empfängt, das was ich 
gesendet habe. Wär nett, wenn ihr mir helfen könntet.

Autor: tastendrücker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>   If Ischarwaiting() = 1 Then

Das heisst doch, die If-Bedingung ist "wahr", wenn EIN Zeichen da ist. 
--> Kann also nicht "An" (=2 Zeichen) oder "Aus" (=3 Zeichen) sein.

Versuch das mal z. B. mit

   If Ischarwaiting() = 1 Then
   Input Na
      If Na = "A" Then
      Portd.6 = 1
      End If

      If Na = "X" Then
      Portd.6 = 0
      End If

   End If

Autor: Steven Br (steven1992)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm funktioniert leider immer noch net, aber kann ISCHARWAITING() nicht 
nur 1 und 0 annehmen, weil in der Bascom Referenz steht:

If there is no character waiting, a zero will be returned.
If there is a character waiting, a one (1) will be returned.
The character is not retrieved or altered by the function.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1/ Ich sehe im Moment nicht, dass du die Datenrichtung des Portd.6 Pins 
auf Ausgabe gestellt hast (DDR). Direkt nach dem Reset ist die 
Datenrichtung Eingang! Daher gehört für mich z.B. vor das DO die Zeile

   DDRD6 = 1

Eine Skizze wie die LED angeschlossen ist, wäre auch nicht schlecht, da 
es heir auch Fehler geben kann. Oder kannst du das ausschliessen?

2/ In der Doku von Bascom sehe ich nicht, wie die Eingabe von INPUT 
abgeschlossen werden muss. Ich denke die Eingabe ist mit \r\n oder \r 
abzuschliessen, d.h. du musst im Terminalprogramm eine Zeile eingeben, 
die dann ohne das Zeilenendezeichen in der Variablen na landet.
http://avrhelp.mcselec.com/index.html?input.htm

Wenn du nur einen Buchstaben haben willst, kannst du mit INKEY() 
arbeiten
http://avrhelp.mcselec.com/index.html?inkey.htm

3/ Du kannst dem INPUT einen weiteren Parameter mitgeben, der dir auf 
dem Terminalprogramm anzeigt, ob du im Eingabemodus bist. Das ist fürs 
Debuggen ziemlich hilfreich.

   If Ischarwaiting() = 1 Then

      Input "Eingabe -> ", Na
      Print "Eingabe = ["; na; "]"

      If Na = "An" Then
        Portd.6 = 1
      End If

      If Na = "Aus" Then
        Portd.6 = 0
      End If

   End If

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.