mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATtiny85 Takt setzen


Autor: Dirk K. (dekoepi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Fuse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CKDIV8 Fuse?

Autor: Conny G. (conny_g)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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__...

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

Die ist für was anderes.

Autor: der alte Hanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BattMan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk K. (dekoepi)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Dirk K. (dekoepi)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: der alte Hanns (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.