Ich habe an einen AVR Mega162 einen 8 MHz Quarz gehängt. Wenn ich nun mit dem USART, bei dem ich eine Baudrate von 9600 eingestellt habe, kommunizieren will funktioniert das nur, wenn ich beim PC Baudrate 1200 einstelle. Läuft mein AVR statt mit 8MHz nur mit 1 MHz (Weil 1/8 x 9600 = 1200)? Die Baudrate berechne so: .equ CLOCK = 8000000 .equ BAUD = 9600 .equ UBRRVAL = CLOCK/(BAUD*16)-1
Im Auslieferungszustand ist CKDIV8 aktiviert, also Quarztakt wird intern durch 8 geteilt (Table 101 im Datenblatt).
Fusebits: CKSEL0 : 1 CKSEL1 : 0 CKSEL2 : 1 CKSEL3 : 1 SUT0 : 1 SUT1 : 0 CKOUT : 1 CKDIV8 : 0 CKDIV8 ist doch deaktiviert oder nicht?
Aha ich hab das Problem gefunden: CKDIV8 muss aktiviert sein! Aha und ich dachte, wenn man das Ding aktiviert wird der Takt durch 8 geteilt, aber ganz im Gegenteil!
gemäß Atmel-Konvention bedeutet "0" = programmed und "1" unprogrammed, allerdings invertieren manche Programme die Darstellung. Beim AVR Studio in Verbindung mit STK500 oder Atmel AVR-ISP bzw. JTAG ICE ist die Zuordnung sehr einfach, da hier die Anzeige der Fuse-Bits im Klartext erfolgt.
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.