Forum: Mikrocontroller und Digitale Elektronik UART mit Mega8 kann nur senden.. ?


von Muraer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen.

Im Anhang findet ihr die Eagle-Dateien für mein Board, auf welchem ein 
Mega8 über die serielle Schnittstelle mit einem PC kommunizieren können 
soll.

Programmiert wird in Bascom.
Das Problem: Ich kann problemlos Daten vom AVR an den PC senden und 
diese in mehreren Terminalprogrammen anschauen.
Nur: Ich kann keine Daten vom PC an den Controller senden.

Beispielprogramm:

$regfile="m8def.dat"
$crystal=3686400
$baud=2400

Dim i as Byte

Print "Hallo"

Do
If UCSRA.RXC=1 Then
i=UDR

Select case i
Case "H"
Print "Hallo"
Case "A"
print "Adieu"
Case Else
Print "Unbkannter Befehl"
End select
End if
Loop
End

In den Terminalproggis sehe ich jeweils das "Hallo", doch wenn ich dann 
ein H oder ein A schicke, passiert gar nix. Es kommt nichts zurück.
Die Terminalprogramme werden auf einem Windows98SE Laptop von 1998 
laufengelassen, der hat einen COM-Port, sollte klappen.

Darum meine Anfrage hier, ob jemand mal die Hardware prüfen könnte, ob 
ich alles richtig verbunden habe.
(brauche nur einfache Übertragung, also nix Handshake etc.)

Herzlichen Gruss und Danke

Mario

von Muraer (Gast)


Angehängte Dateien:

Lesenswert?

Hier noch das Board

Gruss
Mario

von Muraer (Gast)


Lesenswert?

Mir ist gerade noch etwas aufgefallen.

Ich hab ein Programm geschrieben, dass immer nur "Hallo" sendet, zum 
Testen.

Am alten Windows 98 Schlepptop kommt alles korrekt an.

Verwende ich hingegen das genau gleiche Terminalprogramm mit genau den 
gleichen Einstellungen unter Windows XP (hab zwei PCs probiert), dann 
kommt garnix an. Hänge ich den AVR danach an den Laptop, kommt wieder 
alles sauber an....
Wieso will das unter XP nicht?

Das Empfangsproblem besteht aber auch beim Windows 98.

Herzlichen Gruss
Mario

von Karl H. (kbuchegg)


Lesenswert?

Mach mal folgendes:
Im Twerminalprogramm stellst du ein 'No Handshake'

Deine RS232 ist auf dem Bord dahingehend nicht sehr gut
beschaltet. Wenn du sowieso kein Handshake haben willst,
dann mach die Beschaltung so wie hier:

http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

Achte darauf, wie die Pins 4,8,6 beschaltet sind.

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

[OT]
Geiler Schaltplan!
[/OT]

Sonst kann ich mich nur Karl-Heinz anschliessen.

von Muraer (Gast)


Lesenswert?

Aaalso,
ich hab mal die Schaltung aus eurem Link hergestellt.

Nun kann ich an den PCs gar nix mehr lesen. (Bei XP ging es unterdessen 
auch).

ABER:

Der AVR sendet alle 50mS etwas.
Wenn ich am Oszi gucke (messe gegen GND), dann "zuckt" es regelmässig 
auf am AVR an Pin PD1, am Kabel (PC-Seite) zuckt es an Pin3.
Der AVR sendet also etwas...

Nur: Wieso kommt bei den PCs nichts an? Baudraten stimmen, Handshake ist 
aus..??

von Michael U. (Gast)


Lesenswert?

Hallo,

Brücken drin?

DTR - DSR und RTS -CTS jeweils auf der PC-Seite brücken, auch wenn ohne 
Handshake eingestellt ist. Die Controller-ICs reagieren da sehr 
verschieden, weil das meist schon in der Hardware ausgewertet wird.
Müßten Pin 6 mit Pin 4 und Pin 7 mit Pin 8 gebrückt sein, wenn ich jetzt 
nicht mit der Belegung irre.

Gruß aus Berlin
Michael

von Muraer (Gast)


Lesenswert?

Ich habs genau so gemacht, wie es im obigen Schaltplan steht.

wie meinst du denn, auf PC-Seite brücken... Da kann ich ja nur Stecker 
einstecken. Mehr ja nicht.
Ich hab jetzt Pin 4,6,8 auf meinem Board gebrückt.
Pin 2 ist mit Pin 14 des MAX verbunden, Pin 3 mit Pin 13 des Max, Pin 5 
liegt auf GND.

Mein Kabel:
2==>3
3==>2
5==>5

von Magnus Müller (Gast)


Lesenswert?

> ich hab mal die Schaltung aus eurem Link hergestellt.

Das ist gut.

> Nun kann ich an den PCs gar nix mehr lesen. (Bei XP ging es unterdessen
> auch).

Das ist schlecht.

> Der AVR sendet alle 50mS etwas.
> Wenn ich am Oszi gucke (messe gegen GND), dann "zuckt" es regelmässig
> auf am AVR an Pin PD1,

Das ist wiederum gut...

> am Kabel (PC-Seite) zuckt es an Pin3.

Das ist nun wiederum schlecht, da Pin3 TXD ist (hier kommen die Daten 
vom PC raus)!

> Der AVR sendet also etwas...

Das mag sein... nun musst du nur noch auf einer Seite Pin 2 mit Pin 3 
tauschen und gut is.

Gruß,
Magnetus

von Michael U. (Gast)


Lesenswert?

Hallo,

habe eben erst in Deine "Schaltung" geschaut, das dürfte so nicht 
klappen... Der MAx legt Dir die Quittungsleitungen fest und wenn Du Pech 
hast, will der Controller im PC dann nicht.

Gruß aus Berlin
Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

laut seiner Schaltung hat er Pin 2 ist mit Pin 14 des MAX verbunden, das 
ist Rx auf der AVR-Seite. Sein Kabel hat Pin 2 auf Pin 3 PC, das würde 
also stimmen.
Die umgekehrte Richtung laut Schaltung und Kabelbeschreibung auch.
Wenn das Kabel selbst gebaut ist, auf der PC-Seite Brücke zwischen 4 und 
6 sowie zwischen 7 und 8 (jeweils!, nicht alles miteinander...).
Wenn es ein voll beschaltetes Kabel ist, kannst Du natürlich auch auf 
der AVR-Seite brücken. Das würde mich aber wundern, denn ein 1:1 Kabel 
hätte dann auch 2 mit 2 und 3 mit 3 verbunden. Fertige gekreuzte Kabel 
(eben 2 mit 3 und 3 mit 2) sind Null-Modem-Kabel, da ist der Rest meist 
auch speziell beschaltet bzw. gebrückt...

Ich benutze immer 1:1 mit allen 9 Adern beschaltet, auf der AVR-Seite 
eine Buchse, dort dann 2 und 3 gekreuzt und obige Brücken.

Kabel sind normale 9pol. Sub-D-Verlängerungen aus der Kramkiste.

Gruß aus Berlin
Michael

von Magnus Müller (Gast)


Lesenswert?

Wenn die vom AVR gesendeten Daten beim PC auf Pin 3 ankommen kann das 
nicht funktionieren!!!

von Muraer (Gast)


Lesenswert?

Ah, I hobs!
Hab die Leitungen auf MAX-Seite getauscht.

Jetzt geht alles!

Herzlichen Gruss und vielen Dank!

Mario

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.