Tach zusammen! Ich arbeite mit einem ATmega88 und habe ein Problem beim Umschalten der Baudrate. Ich möchte Daten mit einer Baudrate von 62 empfangen, in ein Feld schreiben und mit einer Baudrate von 2400 an einen PC weiterleiten. Die Daten stehen auch richtig in dem Feld drin, nur zeigt mir ein Terminalprogramm auf dem PC immer mehr Daten als ich gesendet habe. Muss ich beim Umschalten der Baudrate im Programm irgendwas beachten? Ich setze im Moment einfach vor meiner Sende-Routine die Baudrate hoch und danach wieder runter. Kann man das so einfach machen? Gruß, Coach.
Erstmal: Warum empfängst du mit 62Bit/s?Zwingt dir das eine ander Hardware auf?Is nich nur extrem langsam sonder auch unüblich. 2. Was für einen Quarz hast du dran,wie sieht dein Baudraten-Teiler aus? 3. Wartest du,bis fertig empfangen/gesendet wurde,bevor du umschaltest? und zu guterletzt: Is alles richtig verschaltet? Code&Schaltplan wär z.B prima um die Raterei zu beenden ;)
Ich muss so langsam übertragen weil mein Übertragungsmedium ziemlich träge ist. Ich würde gerne noch langsamer, aber 62 ist das niedrigste was bei 4 MHz geht (UBRR = 4031). Und langsamer kann ich den Controller nicht takten, weil sonst nicht mehr alle Interrupts durchkommen. Beim Empfang schreibe ich die Daten in ein Feld bis ein LineFeed erkannt wird. Dann schalte ich um und versende das Feld in einer Schleife. Danach schalte ich wieder um. Schaltung müsste passen. Wenn ich das Medium überbrücke und direkt mit einer Baudrate sende funktioniert alles. Es liegt also am Umschalten. Kann es sein, dass ich dabei irgendeine Reihenfolge einhalten muss? Vielleicht erst den UART disablen und danach wieder enablen oder so?
>Vielleicht erst den UART disablen und danach wieder enablen oder so?
Ich würde zuerst die RXC etc Flags löschen, dann die Baudrate ändern
und dann die Baudrate ändern.
Was ist das denn für ein Medium? Wasser?
Hast du an Reflexionen gedacht? (Deswegen wohl die wahnsinnge
Baudrate...)
Alternative: Software-UART über einen Timerkanal.Dann liesse sich auch weniger als 62Bit/s machen. Startbit,Stopbit,Parität,paar Datenbits... Und der hardware-UART bleibt für die PC-Kommunikation frei.
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.