Hey Leute! Ich will mich ein wenig mit µC-Programmierung befassen.. in letzter Zeit habe ich mich an UART versucht. Könnt ihr vielleicht mal einen Blick über meinen C-Code werfen? Das wäre super. Bin etwas ratlos. Wenn ich µC und PC miteinander verbinde -- im HyperTerminal kommt nix an! Liegt's eventuell an der Baudrate / Frequenz (bzw. am prozentualen Fehler)? Ich verwende den internen 8 MHz Takt beim Atmega8. :( Danke euch!
dass gar nix ankommt klingt zwar komisch, aber bitte schau dir erst diesen Artikel an: http://www.mikrocontroller.net/articles/AVR-Tutorial:_UART Da ist ein kurzer Absatz der mit roter, fetter Schrift ("WICHTIGER HINWEIS!") beginnt! "Auf Grund permanent wiederkehrender Nachfrage sei hier..."
Ein UART nimmt man immer folgewndermassen in Betrieb : -repetitives Senden eines Characters vom Controller zB 0x62 und messen mit dem Oszilloskop. -Senden einses Strings zum Hyperterminal. -Echo eines Characters, der vom PC kommt.
@ gast (Gast) >Da ist ein kurzer Absatz der mit roter, fetter Schrift ("WICHTIGER >HINWEIS!") beginnt! >"Auf Grund permanent wiederkehrender Nachfrage sei hier..." Vielleicht muss er noch grösser sein. Und blinken. Und Sirensound dazu abspielen. Oder vieleicht ein Rap-Video? Grandmaster RC-O into the Mike Proz aint cool man!!!! Natürlich optisch zielgruppengerecht mit T*****en hinterlegt ;-) Huch, wo bin ich? MFG Falk
Wenn gar nichts ankommt, dann könnte es auch ein Hardware Problem sein. Eine fehlerhafte Baudrate erkennt man meist daran, dass am Terminal unsinnige Zeichen erscheinen. Wenn aber gar nichts ankommt, dann würde ich mal die ganze Verkabelung testen. Einfacher Test: Nimm den Prozessor aus dem Sockel. Verbinde im Sockel den Tx Pin mit dem Rx Pin durch eine Drahtbrücke. Wenn du jetzt im Hyperterminal Tasten drückst, dann laufen die durchs Kabel, durch den Pegelwandler (Max232) zum µC Sockel. Dort dann über deine Drahtbrücke und ab gehts in die Gegenrichtung zurück zum PC. Siehst du mit der Drahtbrücke immer noch keine Zeichen, dann hast du ein Hardwareproblem. Untersuche mal ob dein Kabel korrekt ist (gekreuzt - nicht gekreuzt) PS: Im Hyperterminal muss die 'Flusssteuerung' auf 'keine' stehen.
So hab den Takt mal auf den externen Quarz gelegt. Kommt leider immer noch nix an. Braucht man jetzt ein Nullmodemkabel oder ein "normales" Kabel? Laut Tutorial darf's ja KEIN Nullmodemkabel sein. Hatte ich aber dran (okay es war Selbstbau, aber sollte trotzdem gehen). Verstehe ich aber auch nicht warum das nicht geht. Allerdings tut's ein "normales" Kabel auch nicht. Es kommt wirklich rein gar nichts an. Ein Oszi hab ich leider auch nicht zur Hand! ;) >Nimm den Prozessor aus dem Sockel. Verbinde im Sockel >den Tx Pin mit dem Rx Pin durch eine Drahtbrücke. Das werd ich glaub ich gleich mal probieren! Im Quellcode hat wohl auch noch ein
1 | #define F_CPU 8000000
|
gefehlt. Danke euch allen soweit.
>>Nimm den Prozessor aus dem Sockel. Verbinde im Sockel >>den Tx Pin mit dem Rx Pin durch eine Drahtbrücke. >Das werd ich glaub ich gleich mal probieren! Ja das klappt! Also kann ich den MAX232 als Fehlerquelle schon mal ausschließen, richtig? Bleiben eigentlich nur noch Verkabelung und Software, oder?
Peter wrote: >>>Nimm den Prozessor aus dem Sockel. Verbinde im Sockel >>>den Tx Pin mit dem Rx Pin durch eine Drahtbrücke. >>Das werd ich glaub ich gleich mal probieren! > > Ja das klappt! Also kann ich den MAX232 als Fehlerquelle schon mal > ausschließen, richtig? Bleiben eigentlich nur noch Verkabelung und > Software, oder? Wenn das klappt, kannst du auch die Verkabelung ausschliessen. Aber Vorsicht! Hast du am PC das sog. lokale Echo abgeschaltet? Nicht dass du die getippten Zeichen siehst, weil die lokal am PC ge-echot (blödes Wort) werden. Gegentest: Du tippst - Zeichen erscheinen. Du tippst weiter und ziehst das Kabel ab - Zeichen bleiben aus. Wenn das so ist, dann ist tatsächlich alles in Ordnung. Wenn das so ist, dann hast du noch einen Fehler im µC. Die häufigste Ursache ist nach wie vor: Quarz ist zwar am µC drann, aber der µC arbeitet immer noch mit internem Takt. Wenn du das ausschliessen kannst: Dann hast du einen Programmfehler.
>Wenn das klappt, kannst du auch die Verkabelung ausschliessen. Autsch... Ich war wohl grad nicht ganz bei der Sache! :D >Wenn das so ist, dann ist tatsächlich alles in Ordnung. Jopp, kein Echo. :) Danke dir. Werde mich weiter mit dem Problem befassen und ggf. berichten.
Okay. Muss an meinem C-Code liegen. Hab das Assembler-Code-Beispiel aus der Wiki genommen und das funktioniert.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.