Hallo! Ich habe ein Problem mit meinem ATmega8 und UART. Es will einfach nicht. Ich habe alles so gemacht wie im Tutorial, software kopiert, und Hardware gleich auf einem Steckbrett aufgebaut. Nur kommt nur etwas an, wenn ich den AVR an die Stromversorgung anschliesse bzw. abklemme, dann kommt kei häufigen Wechesel mal kurz müll auf den Schirm... sonst bleibt das Hyperterminal weiss. Ich habe mir ein anderes Programm besorgt, dass mir die angekommenen Daten anzeigt. HTerm. Dort kommt zwar viel mehr an, jedoch nur fehlerhafte Daten (sind markiert). Einstellungen wie BAUD und so sollte auch alles stimmen. Im Datenblatt stand man solle für den MAX232A 0.1uF Kondensatoren verwenden nicht wie im Tutorial beschrieben 10 bis 50 uF auch dieser wechsel hat keine Besserung gebracht. Am MAX kann ich die +10V und -10V messen... Kann es sein, dass es wegen zu langen Leitungen (auf dem Steckbrett) nicht funktioniert? Kondensatorn sind ganz nah dran, aber die Datenleitungen.... Hat sinst noch jemand eine Idee was los sein könnte???
Betreibst Du den Mega8 mit internem Oszillator? Wenn ja, vergiss es. Der ist zu ungenau für UART...
@Pfi: Hast Du berücksichtigt, daß die Register UBRRH und UCSRC auf der selben Adresse liegen und beim Beschreiben über ein gesetztes / gelöschtes Bit (ich glaube es heisst "URSEL") unterschieden werden? Ich habe vor einigen Tagen auch damit zu kämpfen gehabt ;) Gruß, Magnetus
Ach so... vieleicht können wir Dir besser helfen, wenn Du den Code (als Anhang) postest.
Hallo! Also ich benutze genau den Code aus dem Tutorial hier. Und ich benutze den internen Oszillator, ist der wirklich so ungenau? Dann muss ich zwingend einen externen nehmen? Schade...
Hab grad gesehen, dass man den internen Oszillator auch trimmen kann. Könnte man das Problem vielleicht so beheben?
Können tut man schon, nur wollen tut man nicht. Wenns im Winter kälter wird, driftet dir nämlich der interne Osc. weg.
Schade... Aber gibt das nicht probleme mit dem seriellen Programmieren, wenn man auf eine externe Taktversorgung umstellt?
Warum sollte es? Dem Programmierer ist doch ziemlich Wurscht, wo der µC seinen Takt herbekommt. Hauptsache er hat einen. Das was du hier immer wieder als neuen Thread liest, ist ein ganz anderes Problem: Leute die ohne Kenntnisse an den Fuses rumspielen, die ohne Sorgfalt arbeiten (Fuses neu schreiben ohne vorher mal die vorhandene Fuse- belegung eingelesen zu haben), die keine Datenblätter lesen, kurz und gut: die sich selbst aus dem µC aussperren. Ansonsten ist die Umstellung auf einen externen Quarz so einfach wie einem Baby den Schnuller klauen.
OK, danke! Dann werde ich das so machen... Dass auf den externen Quarz umstellen einfach ist weiss ich auch, aber eben, wollte nicht einen AVR abschiessen. Danke nochmals wenns nicht funktioniert, dann melde ich mich nochmals
Hallo Pfi, bevor Du die Fuses umprogrammierst, versuche es mal so: 1. Beim Init des UARTs etwa vierzig mal 0xAA oder 0x55 über die Schnittstelle senden. Das bringt z.B. Seriell-USB-Wandler mit Auto-Baud-Funktion dann schon auf den richtigen Trichter. 2. Baudrate senken. Bei Baudraten von 9600 ist der Fehler mit dem internen RC-Oszillator akademisch klein, weil das Signal länger dauert und die Synchronisation innerhalb der 9 Bits (Startbit + 8 Datenbits) nicht mehr so arg kritisch, weil die Bits immer nur in der Mitte abgetastet werden. Bis das letzte Bit so arg verstellt ist, dass es verpasst wird, muss die Baudrate schon arg daneben liegen. mfg gerd
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.