_delay_ms(x) braucht 8 mal länger bei ATTiny85

Gast #4151123
Lesenswert?

Seit dem WE beschäftige ich mich damit, ein IIC-OLED mit einem ATTiny85 
zu befeuern. Da die U8GLib die Tinies offiziell nicht unterstützt, habe 
ich als Alternive eine eine passende LIb im Projekt Digispark gefunden, 
sie stammt ursprünglich wohl aus der Tinosaur-Ecke.
Um es so simpel wie möglich zu halten verwende ich die Arduino-IDE mit 
speziellen ATTiny-Erweiterungen (13,25,45,85), programmiert wird mittels 
USBASP.
Im Prinzip alles prima, die Demo-Programme funzen, bzw. liefern den 
erwarteten Output. Fast.
Eine Demo verwendet die ANweisung _delay_ms, um das gemalte Bild eine 
Weile stehen zu lassen. Leider nicht die angebenen 8000 ms, sondern eine 
halbe Ewigkeit. Wenn ich die Zeitspanne auf 1000 reduziere, bleibt die 
Ausgabe ca. 8 sec stehen, bei 800 ca. 6sec.
Hier im AVR-Tut habe ich einiges gefunden, delay.h und F_CPU.
delay.h wird irgendwo in der lib includiert, F_CPU suche ich vergeblich.
Muss F_CPU zugewiesen werden?
Apropos, getaktet wird mit 8MHz intern, Fuses stehen auf 0x62 und und 
0xDF.
Gast #4151219
Lesenswert?

Ihn dünkt', er säh' 'nen Zeitversatz,
  und ward darob entsetzt.
Er guckt noch mal und merkt', es war,
  die Fuse ganz falsch gesetzt.
"Wenn's gar so einfach ist", sprach er,
  "bin ich zufrieden jetzt."
Gast #4151978
Lesenswert?

Jörg Wunsch schrieb:
> Also 1 MHz.  Stell die Low Fuse auf 0xE2.

Danke, hat geklappt, irgendwie hatte ich ein Brett vorm Kopp.
Die Tiny85 Fuses kenne ich nicht auswendig und eigentlich verlasse ich 
mich auf die in die Brennproggies eingebauten Routinen.
Im Falle des ATTiny85 waren leider nur zwei davon in der Lage, dessen 
Fuses auszulesen, interpretieren konnte sie keines, da sie außer dessen 
SIgnatur keine Infos haben.
Allerding hätte ich erwartet, dass der Burn-O-Mat die Tinies kennt.
#4152252
Lesenswert?

Martin schrieb:
> F_CPU kannst Du z.B. in den Compiler-Optionen setzen, im AVR-Studio in
> der Toolchain für den Compiler unter "Symbols".

Nein, kann man nicht. Dort wird dem Compiler mitgeteilt, mit welcher 
Frequenz der Controller läuft. Der Takt ist eine Hardwareeinstellung, 
die im Controller gemacht wird.

Die CKDIV8-Fuse ist aber nur für die Einstellung des Clock-Dividers beim 
Start relevant. Der Clock-Divider lässt sich danach auch per Software 
einstellen.

siehe "power.h"

mfg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren