www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM UART Senden geht empfangen nicht


Autor: Nette Mann (nette-mann)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir eine Platine geätzt und auch alle Leiterbahnen auf kurzschluss 
getestet. Habe den MAX 232 in SMD Form verlötet. Laut Datenblatt gibt es 
zu dem DIP IC keine Unterschiede. 
http://www.mikrocontroller.net/wikifiles/e/ee/AVR-RS232.png

Ich kann mit dem aufgelöteten Atmega 8 auch zum PC senden und erhalten 
ohne Störsignale 100 %tig das was ich mit dem Atmega versende, aber wenn 
ich vom PC etwas an den Atmega schicke, gibt es keine Reaktion darauf.

Code:
$regfile = "m8def.dat"
$baud = 19200
$crystal = 4000000

Ein Alias 1
Aus Alias 0

Dim I As Byte
Config Pinb.0 = Output
Portb.0=Aus

Print "Start"
Do
  i = Ischarwaiting()
  If i = 1 Then
    i = Waitkey()
    Select Case i
    Case "H"
      Print "Hallo"
    Case "h"
      Print "hallo"
    Case "t"
      Portb.0 = EIN
    Case Else
      Print "Unbekannter Befehl"
    End Select
  End If
Loop
End

Und ja ich habe schon eine halbe stunde gegoogelt nach gemessen und die 
SuFu genutzt. Der gepostete ode ist nur ein Testprogramm und nicht das 
Hauptprogramm

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du am 9pol. Sub-D Stecker Deines Layouts die Pins
7 (RTS) mit 8 (CTS)
und
1 (DCD), 4 (DTR) und 6 (DSR)
miteinander verbunden? Ich musste das bei allen RS-232 Schaltungen 
machen, die ich an einen seriellen Port des PC angeschlossen habe.
Es funktionierte sonst nicht, wegen Handshake/Flusskontrolle.
RTS: Ready To Send
CTS: Clear To Send
DCD: Data Carrier Detected
DTR: Data Terminal Ready
DSR: Data Set Ready
Lies' Dir mal die Spezifikation der RS-232 Schnittstelle durch :-).

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da i als Byte deklariert ist, können die Cases "H", "h" und "t" niemals 
true ergeben. I kann dann nur gleich 72, 104 bzw 116 sein.
Es sollte aber immer der Else Case durchlaufen werden.

Gruß

Rolf

Autor: Klaus De lisson (kolisson)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo nette mann,

kann sein dass dein code irgendwie auch gehen kann.
anbei aber mal meine version , die immer sehr zufriedenstellen läuft


gruss klaus

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Konnte das Problem gelöst werden? Ich habe nämlich dasselbe. Verwende 
folgenden Testcode:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

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

Dim Relaisinp As Byte

Print "Hallo Welt"

Do

   If Ischarwaiting() <> 0 Then

      Relaisinp = Waitkey()
      Print Relaisinp

   End If

Loop

"Hallo Welt" kommt korrekt am Terminal an, jedoch reagiert der 
Controller (Atmega32) auf kein gesendetes Zeichen.

Es sind am RS232 nur die Pins RxD, TxD und die Signalmasse beschaltet, 
was doch eigentlich zum einfachen Senden und Empfangen reichen sollte.

Wäre schön, wenn mir jemand helfen kann. Den Code von Klaus habe ich 
ebenfalls ausprobiert - keine Reaktion.

Viele Grüße,
Chris

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiere mal den Code aus der Bascom-Hilfe. Hier ist Ischarwaiting() 
nicht in die IF-THEN-Anweisung eingebaut.

http://avrhelp.mcselec.com/index.html?ischarwaiting.htm

Ich persönlich bevorzuge die Interrupt-Variante zum Empfangen:

http://www.rowalt.de/mc/avr/avrboard/04/avrb04.htm

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider funktionieren beide Vorgehensweisen nicht. Kann es ein 
Hardwarefehler sein? Müssen die anderen Leitungen verschaltet werden? 
Das Terminal meldet "UART Receiver Framing Error". Kann dies den Fehler 
verursachen?
Danke für die Hilfe, Chris

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probiere mal 4800 Baud. Ansonsten ist evtl. wirklich ein Fehler in der 
Hardware vorhanden. Wie genau verbindest Du den µC mit dem Computer?

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.