Forum: Mikrocontroller und Digitale Elektronik ATtiny85 Takt setzen


von Dirk K. (dekoepi)


Angehängte Dateien:

Lesenswert?

Moin Moin zusammen,

vorhin sind meine gestern bestellten ATtiny85 angekommen. Da ich mein 
Shiftregister-Test-PCB schon mit Sockel (und Stützkondensatoren ;) ) 
vorbereitet hatte, brauchte ich den nur noch reinstöpseln, USBasp 
irgendwie ranstecken, Programm anpassen (ATmega328: auf PORTC, ATtiny85: 
hat nur PORTB).
Die Voreinstellungen für avrdude waren schnell anzupassen, unter 
Hardware kann man dann ja den Zielprozessor einstellen. Habe dort 
ATtiny85 ausgewählt, man kann dort auch den Takt einstellen. Ich habe 
jetzt mal den krummen 11,xxxMHz-Takt ausgewählt. Damit soll der ATtiny85 
laut irgendeinem Online-Rechner auch mit 3,0V laufen (plane den Betrieb 
direkt an einem LiIon-Akku von 4.2-3.0V).
Vom Delay-Loop her musste ich aber massiv anpassen; 16MHz auf dem 
ATmega328 brauchten 3200 NOPs für gewünschten Zustand, der ATtiny85 
jetzt 250 - und ist damit noch etwas langsamer; 200 war mir schon zu 
schnell, kommt aber eher hin.
Das ist ziemlich genau der Faktor 16. Ich vermute daher, der ATtiny85 
läuft nicht mit 11,xxx, sondern mit 1 MHz.

Daher die Frage, wie stelle ich das ein? In der Eclipse-AVR-Toolchain 
offenbar nicht. Klappt das aus dem Programm heraus? Der kleine AVR hat 
laut Datenblatt ja sogar 'ne PLL nebst internen Oszillator.

: Bearbeitet durch User
von Fuse (Gast)


Lesenswert?

CKDIV8 Fuse?

von Conny G. (conny_g)


Lesenswert?

Und die AVRs haben meines Wissens keinen internen 11,x Mhz Takt, die 
haben nur 8 MHz und den Div8.
Also die Div8 Fuse löschen, dann hast Du 8 MHz.

von MWS (Gast)


Lesenswert?

Dirk K. schrieb:
> Klappt das aus dem Programm heraus?

Im AVR GCC über clock_prescale_set(x) in power.h

http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html

> Der kleine AVR hat
> laut Datenblatt ja sogar 'ne PLL nebst internen Oszillator.

Die ist für was anderes.

von der alte Hanns (Gast)


Lesenswert?

>Die ist für was anderes.

Die PLL-Frequenz kann durchaus als Systemtakt dienen, man kommt damit 
bis auf 16 MHz. Nur macht der Rest des Controllers dies bei 3.0 V nicht 
mit, es bleiben dann wieder nur 8 MHz.

von BattMan (Gast)


Lesenswert?

Dirk K. schrieb:
> Vom Delay-Loop her musste ich aber massiv anpassen; 16MHz auf dem
> ATmega328 brauchten 3200 NOPs für gewünschten Zustand,

Schon mal was von TIMER gehört....für was man die wohl verwenden kann.
Manchmal verstehe ich es nicht. NOPen sich zu Tode.

von Dirk K. (dekoepi)


Lesenswert?

Tjo BattMan, natürlich kann ich Timer.

Manchmal muss es aber eine schnelle Fingerübung sein. Und da ist ein NOP 
eindeutig schneller hingezaubert.

Timer kommt dann mal, wenn ich richtig langeweile habe.

... eine etwas sinnfreie Beschwerde. Es gibt Mercedes, warum fahren den 
nicht alle?

@MWS/alterHans und die anderen: Danke für die Tipps :) Werde mich wohl 
mal genauer mit dem Datenblatt auseinandersetzen und dann mal zusehen, 
ohne Fuses zu verdrehen den Takt aufzumachen :)

: Bearbeitet durch User
von Dirk K. (dekoepi)


Lesenswert?

Nachtrag: Der Tipp mit clock_prescale_set() war super, Danke MWS - jetzt 
rennt der Kleine mit 8 MHz, direkt gespiesen durch einen 18650er 
LiIon-Akku und macht nichts anderes, als LEDs am Schieberegister zu 
blinken.
Habe mir dazu grade auch ein ISP->ATtiny85-Board gelötet, ist einfacher, 
den Prozessor so zu beschreiben. Auch, wenn ich ihn hin- und herstecken 
muss.

Jetzt geht es ans Aufräumen: Mal Timer auf dem Lütten antesten, 
vielleicht noch andere "Animationen" basteln. Eine gute Übung, um damit 
und zwei Schieberegistern einen 3x3x3-Cube anzutreiben. Habe zwar 
Mini-Arduinos bis zum Umfallen, aber für so ein bisschen LED-Blink-Blink 
sind die einfach noch zu groß dimensioniert.

: Bearbeitet durch User
von der alte Hanns (Gast)


Lesenswert?

> es bleiben dann wieder nur 8 MHz.

Stimmt nicht ganz: wenn man sich die Mühe macht, die einzelnen Exemplare 
auszumessen, dann lässt sich per OSCCAL der Systemtakt weitgehend 
anpassen, man kommt also auf die (bei 3.0 V zulässigen) 11.7 MHz.

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.