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
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
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.
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..??
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
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
> 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
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
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