Forum: Mikrocontroller und Digitale Elektronik Taktteilung bei Mega162?


von Sebastian (Gast)


Lesenswert?

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

von mmerten (Gast)


Lesenswert?

Im Auslieferungszustand ist CKDIV8 aktiviert, also Quarztakt wird intern
durch 8 geteilt (Table 101 im Datenblatt).

von Sebastian (Gast)


Lesenswert?

Fusebits:

CKSEL0 : 1
CKSEL1 : 0
CKSEL2 : 1
CKSEL3 : 1
SUT0   : 1
SUT1   : 0
CKOUT  : 1
CKDIV8 : 0

CKDIV8 ist doch deaktiviert oder nicht?

von Sebastian (Gast)


Lesenswert?

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!

von mmerten (Gast)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

Hi

0 = programmed -> aktiviert

Matthias

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
Noch kein Account? Hier anmelden.