Hallo, ich verwende bei 16Mhz eine Baudrate von 38000, leider werden recht viele Fehler übertragen, wisst ihr, wie ich das ändern kann? Gruß Martin
baudrate auf 38400 ändern, dadurch sinkt der Fehler von 1,2% auf 0,2%; anderen Quarz verwenden oder die UART in SW nachbilden, dann sind fast alle krummen baudraten möglich. grüße leo9
Woran erkennst du, daß Fehler übertragen werden? Die üblichen Terminalprogramme kennen z. B. nur 38400 Baud, klar das dann Fehler auftreten. Gruß Thorsten
Oh, sry meinte 38400. Das komische ist, dass die Fehler bei einem Pc mit Win 98 ME auftreten, den ich für die µC's verwende, da es mit XP grad net geht. Wenn ich den µC jedoch mit dem XP-Pc verbinde, geht es.
Aha, seltsam! Probier mal ein anderes Terminalprogramm. Hast du auch das Handshaking ausgeschaltet, vorausgesetzt du benutzt es nicht?
Hm, also wenn ich auf dem Win 98 Pc mit einer Baudrate von 2400 bei 1 Mhz sende klappt es, das dumme ist halt nur, dass ich ne Zeitmessung bauen will und da schon gern 16Mhz hätte und net immer zum XP-PC umswitchen will. An zu alter Hardware wird es bei einem PC mit 900 Mhz ja wohl nicht liegen oder?
@Martin fehlen dir Zeichen oder werden falsche Zeichen empfangen? In welcher Datenrichtung passieren die Fehler? Robert
Du willst eine Zeitmessung bauen? Erzähl mal mehr davon. Was für Zeiten willst du messen (rein interessehalber)? MH
Die Zeitmessung soll für eine Carrerabahn herhalten, jetzt muss ich mal sehn, wie ich das mach wenn das an dem einen PC nicht richtig klappt mit 16 MHZ.
Aha, Carrerabahn. Zeitmessung hab' ich auch schon gemacht. Mit der PC-Kommunikation hatte ich da nie Probleme. Das sollte eigentlich zu schaffen sein. Zum Testen auf der PC-Seite schreibe ich mir immer ein VB Programm, dass alles mitloggt. Aber warum muss denn die Baudrate so hoch sein? Ich nehme fast immer 9600.
Der Zeitmessung kann es doch herzlich egal sein, ob 16MHz oder sonstwas, hauptsache es ist quarzstabil. Falls Du es vergessen hast, der AVR kann auch rechnen, z.B. beliebige Zählwerte umrechnen in 1/1000 Sekunden oder was Du willst (kannst es aber auch den PC machen lassen). Für übliche Baudraten ist ein Standardquarz z.B. 11,0592 oder 14,7456MHz gut geeignet. Peter
@Martin, wenn ein @ angezeigt wird, was für ein Zeichen hast du stattdessen erwartet? Das deutet evtl. auf einen framing error hin. Will heissen Baudrate ist ungenau oder Datenlänge, parity, stoppbits sind falsch eingestellt. Wenn ich eine Übertragung teste, fange ich immer damit an eine binäre 0 zu senden, und schau ob die jeweils auf der anderen Seite ankommt. Du könntest z.B. auch vom PC am Anfang immer 0en senden und damit deine Baudrate am AVR abgleichen. Dazu misst man die Zeit vom Start- zum Stoppbit, teilt das ganze z.B. durch 9 oder 10 je nach Datenlänge und hat die Bitlänge. Das ist universell und geht auch mit RC Oszillatoren. Robert
Hallo, also ein Oszi hab ich (leider) nicht. Mit 38400 Baud sende ich, da mit nem 16 MHZ nur diese Baudrate geht oder?
Auf welchen Wert hast du das UBRR-Register gesetzt? Es muß für 38400Baud@16MHz auf 25 stehen.
Hallo, cih habe bisher Übertragungsraten zwichen 9600 und 19200 getestet. Bei einem Quarz mit 8MHz und RC Oszilator von 4 / 8 MHz in asm und c war es nie ein problem versuch evtl. mal einen anderen Terminal der von Br@y ist sehr gut klein fein genau ;) zumindest besser, als Hyperterminal bei ASM Habe ich die werte so defniert: .equ sramstart = 0x0060 .equ CLOCK = 8000000 .equ BAUD = 9600 .equ UBRRVAL = CLOCK/(BAUD*16)-1 ; Baudrate einstellen ldi temp, LOW(UBRRVAL) out UBRRL, temp ldi temp, HIGH(UBRRVAL) out UBRRH, temp ; Frame-Format: 8 Bit ldi temp, (1<<URSEL)|(3<<UCSZ0) out UCSRC, temp sbi UCSRB, RXCIE ; Interrupt bei Empfang sbi UCSRB, RXEN ; RX (Empfang) aktivieren sbi UCSRB, TXEN ; TX aktivieren in dieser Art sollte es auch in C kein thema sein Peter Fluery hat eine gute lib dazu in c geschrieben Gruss Jens
Hm, ich verwende im Moment noch Bascom. Und auf dem Rechner mit XP, der viel neuer ist geht es ja auch mit dem Programm.
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.