PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART macht probleme!!! Einfaches testprog läuft nicht



hunni
13.08.2009, 22:41
Hallo,

ich habe eine Schaltung fertig gestellt und wollte sie nun durchchecken.also Atmega8 auf das entwicklerboard (pollin) gesteckt und geprogt.Dann hatte ich gedacht, probierste erstmal auf dem pollinding aus bevor du das in die schaltung bastelst. Nur es funktioniert nicht, hyperterm zeigt nichts an.in der simulation klappt es. Ich habe bereits max232 getauscht, atmega8 getauscht, andere taktfrequenz (5mhz und 8mhz). Es hilft nichts.

habt ihr vielleicht eine idee, oder ist mein Testprog falsch, auch wens total simpel ist. Vielleicht sehe ich den wald vor lauter bäume nicht 8-[ .


$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600

Do
Print "Terminaltest erfolgreich"

Loop

Gruß Hunni

DanielSan
14.08.2009, 06:11
Hi,

hast du den richtigen COM-Port in Hyperterm ausgewählt? Mir ist das auch schon öfter passiert.

Passt die Geschwindigkeit in Hyperterm?
Gib mal die restlichen einstellungen von Hyperterm an, evtl hast du da was falsch eingestellt.

Ach und schreib mal ein "END" an das Ende deines Programms. Daran wird es zwar wahrscheinlich nicht liegen, ist aber schöner.

Schau dir mal auf http://avrhelp.mcselec.com/index.html das Kapitel "Using the UART" an. Da muss ggf. noch an den Fusebits gearbeitet werden.

"Select your computers COM port and select baud 19200, Parity none, Data bits 8, Stop bits 1, Handshake none, emulation none."

Auf die 19200 baud kommt es nicht an das muss nur in beiden "Kisten" gleich sein. Also im PC und im Atmel. Ich würde 9600 wählen, so wie du es ja bereits gemacht hast.

MFG Daniel

Besserwessi
14.08.2009, 09:43
Der Quarz wird nur benutzt, wenn die Fuses entsprechend eingestellt sind. Sonst läuft standartmäßig der interne RC Talt mit 1 MHz.

Wenn der Takt oder die Baudrate nicht stimmt, kommt aber in der Regel immer noch ein Zeichensalat an. Wenn gar nichts ankommt ist das eher ein Porblem mit der VErkabelung oder des gewählten Ports.

Olle_Filzlaus
14.08.2009, 13:25
Hallo,

habe auch das Pollinboard und ein Kumpel hat es auch. Bei beiden geht der UART nicht. Habe mir deswegen ein USB-Konverter gebaut und drangehangen. Damit laufen auch die Testprogramme.

Ich glaube das liegt an den falschen Kondensatoren am MAX232. Bin mir aber nicht sicher. Habe es halt noch nicht zum laufen bekommen.

Vielleicht hilft dir diese Info.

cu Arno

peterfido
14.08.2009, 13:51
Das kann man Testen, indem man TX und RX auf der Mikrocontrollerseite brückt (ohne Mikrocontroller). Dann muss das, was man hinschickt auch wieder zurückkommen.

hunni
14.08.2009, 18:24
mhh ich habe alles noch mal überprüft bautrate und so... geht nicht.
vielleicht funzt das pollin tatsächlich nicht

Richard
15.08.2009, 08:29
Moin moin.

Hast Du probiert was peterfido vorgeschlagen hat? Der Tip
war richtig so etwas nennt man dann Signalvervolgung. :-)

Wenn Du TX/RX im Sockel vom Mega brückst und es kommt nix
im Terminal an, dann brückst Du TX/RX am 232 Treiber auf PC
Seite. Kommt dann etwas (richtig) an hast Du ein Hardware Problem.
Klappt das auch nicht, stimmen die Einstellungen im Terminalprogramm
nicht. Du kannst auch an TX vom Mega einfach eine LED mit R gegen
GND anschließen und die niedrigste Baudrate wählen, Dann muß
wenn der Mega sendet die Led Blinken/Flackern. Wenn nicht, sendet
der Mega NIX...

Gruß Richard

hunni
16.08.2009, 07:49
Nee das hab ich noch nicht ausprobiert. Das mit der LED is ne gute Idee. Wiso sollte wenn ich am 232 brücke noch was ankommen? Dann is doch weg oder mache ich da n gedankenfehler.

DanielSan
16.08.2009, 08:03
Da hast du wohl nen gedanken fehler.
Der Max232 macht im Prinzip nichts anderes, als die Spannungen von 15V auf 5V und anders um zu "wandeln". Da dein Atmel bei 15V sofort sterben würde.

Wenn du jetzt den 232 Brückst, schliesst du die Sende Leitung mit der Empfangsleitung des PC zusammen. So schickt der PC sich dann selbst etwas. Wenn dann im Terminal das was du Sendest ankommt, dann ist die PC-Seite deiner Schaltung in Ordnung. Der Fehler liegt dann in der Hardware. Also vom 232 bis zum Controller.

Ich hoffe ich konnte es einigermaßen verständlich zu "Papier" bringen.

MFG Daniel

hunni
16.08.2009, 22:11
ach so, nee vom pc is alles in ordnung, weil ich kurz vorher noch das teil am laptop hängen hatte (pc-->Laptop mit rs232 uraltlaptop).

Trotzdem danke für den tipp und für die erklärung

DanielSan
16.08.2009, 22:40
Dann liegt dein Fehler wohl in der Hardware zwischen 232 und Atmega.
Ist die verkabelung dort wirklich korrekt?
Evtl. ist ja das ein oder andere Bauteil dort defekt. Also ein Widerstand oder ein Kondensator oder was auch immer da noch zwischen hängt.

Falls die Verkabelung in Form einer Platine vorliegt, versuche das mal nachzuvollziehen. Vielleicht haben die ja bei der Entwicklung nen Bock geschossen.

MFG Daniel

Besserwessi
16.08.2009, 23:10
Auch wenn das mit dem PC schon mal mit anderen Geräten geklappt hat, ist der Test mit der Brücke statt dem µC sehr sinnvoll. Damit sieht man auch ob der max232 arbeitet und ob das Kabel auch richtig belegt ist und nicht irgendwie Rx/TX am Kabel vertauscht sind (Nullmodemkabel ?).

Richard
17.08.2009, 18:48
Auch wenn das mit dem PC schon mal mit anderen Geräten geklappt hat, ist der Test mit der Brücke statt dem µC sehr sinnvoll. Damit sieht man auch ob der max232 arbeitet und ob das Kabel auch richtig belegt ist und nicht irgendwie Rx/TX am Kabel vertauscht sind (Nullmodemkabel ?).

In unserer 4ma haben wir auch einen Meister, der zelegt die komplette
Anlage bis sie echt kaputt ist, anstatt wie bei Signalverfolgung üblich
sich von a >>>>B oder von B >>>>A "Duch zu Messen". Sein Problem
wenn er dadurch um Klassen langsamer ist als seine Kollegen.

Einfach mal eine Endlosschleife welche permanennt irgendetwas sendet
damit man schön messen kann, dürfte ja nicht so schwer sein? Das dann
auf beiden "Seiten" und Mensch kann auch nur mit ner LED, R nicht
vergessen, bewaffnet sehr schnell sehen ab wo es nicht mehr "Blinkt". :-)

Auf PC Seite reicht für ne Endlosschleife zur Not auch ein "Ziegelstein"
auf der Tastatur. Hypertern sollte natürlich eine Verbindung anzeigen. :-)

Sorry wenn ich etwas Ironisch klinge, aber es sind etliche gute Tip`s
gekommen. Wirklich ausprobiert wurden diese anscheinend NICHT
wirklich? Schaaaaaade eigentlich..

Gruß Richard

hunni
17.08.2009, 19:27
Ohh ich hatte vergessen zu erwähnen, das er manchmal n paar ppppp schreibt. Passt auf ich werds wie folgt machen, ich mache die schaltung fertig (hat auch rs232) und dann werd ich mal sehen ob dort das problem immer noch das is. Wenn ja is doof, wenn nich weiss ich wo der fehler liegt. Wie schon gesagt am kabel kann es nicht liegen, da der laptop noch 2 min zuvor am rechner mit dem gleichen kabel hang

CPU_Heizer
17.08.2009, 20:24
Also wenn er pppp schreibt, dann wird vom uC ja was gesendet, nur der PC empfängt das falsche.
Das liegt sehr wahrscheinlich daran, dass die Fuse-Bits im ATmega8 auf int. Clock, 1MHz gesetzt sind.

Versuch mal "$crystal" von 8000000 auf 1000000 zu ändern.

Alternativ kannst du auch alle verfügbaren Baudraten am Hyperterminal durchklicken.

Aber wenn du zwei PCs mit diesem Kabel verbunden hast, und es hat funktioniert, dann ist das doch ein Null-Modem-Kabel...?!

Aber eigentlich wurde das alles schon erwähnt...

hunni
17.08.2009, 21:52
ach ja, upps war doch nicht das gleiche 8-[ peinlich

hunni
21.08.2009, 19:03
ahh super es läuft. Vielen Dank für eure hilfe.


$regfile "m8def.dat"
$crystal = 1000000
$baud = 300

Do
Print "Test erfolgreich "
Loop


wahrscheinlich lag es an zwei dingen :
1. das Pollin board spinnt
2. wahrscheinlich war der Crystal flasch oder ach egal, hauptsache es läuft.

Vielen dank noch mal[/shadow]