Forum: Mikrocontroller und Digitale Elektronik ATtiny 45: Bug in Clockumschaltung (CLKPR)


von Winfried (Gast)


Lesenswert?

Hallo zusammen,

experimentiere gerade etwas mit dem ATtiny45. Es geht um die
Clockumschaltung. Folgendes Verhalten zeigt sich:

- bei 8MHz RC intern funktioniert der /8 Divider (Fuse CKDIV8)

- bei 6.4MHz RC intern wird immer /8 dividiert, egal wie CKDIV8 gesetzt
ist

- bei 128KHz RC intern funktioniert CKDIV8 auch wie erwartet

- die Stromaufnahme im Idle Mode ist bei 6.4MHz / 8 sehr hoch. Bei
8Mhz/8 sind es bei 3V 330uA, bei 6.4MHz/8 sind es dagegen 1.42mA.

- die dynamische Umschaltung der Frequenz während des Betriebes über
den Clock Prescaler CLKPR funktioniert überhaupt nicht, egal welche
internen Taktquellen ich ausgewählt habe. Das Programmstück zur
Umschaltung sieht so aus:

;Speed Divider Set
cli
ldi a, 0b10000000
out CLKPR, a
ldi a, 0b00001000
out CLKPR, a
sei

Ich hab da keine Idee mehr, was ich falsch machen könnte, vermute so
langsam wirklich einen Bug im Chip. Die Teile sind ja noch brandneu.
Zumal meine frisch gekauften aus der 32KW 05 stammen. Vielleicht lag da
noch was im Argen.

Hat jemand schon mit dem Tiny 45 experimentiert und weiß näheres?

(Benutze AVRISP und AVRStudio neueste Version 4.12 Build 460)

von Winfried (Gast)


Lesenswert?

Hab weiter experimentiert. Komischerweise funktioniert es, wenn man
statt "out" eine direkte Ram-Adressierung verwendendet:

.def a           = r16


              ;Speed Divider Set
              cli
              ldi a, 0b10000000
              sts CLKPR+0x20, a
              ldi a, 0b00000000
              sts CLKPR+0x20, a
              sei

Allerdings hat der 6.4MHz Takt weiterhin sehr merkwürdiges Verhalten.
Bei dem funktioniert auch die Taktumschaltung nicht.

Siehe hierzu auch meine Weblogeinträge vom 8.1.2005:
http://www.wikidorf.de/reintechnisch/Inhalt/AVRWeblog

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.