www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer beim Tiny 25 CKDIV Fuse


Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich beschäftige mich gerade erstmalig mit der Timerprogrammierung und 
habe gewissse Verständnisschwierigkeiten. Ich habe schon das AVR-GCC 
gelesen und auch das datenblatt, komme aber nicht zum richtigen 
Verständnis.

Ich benutze einen AVR ATtiny 25 und möchte erst mal gerne wissen mit 
welcher Frequenz der interne Oszillator im Auslieferungszustand läuft. 
Im Datenblatt steht 2,7 - 5,5 V 0-8 MHz und 4,5 - 5,5 V 16 MHz.

1. Ich möchte den Tiny bei 5 Volt betreiben. Wie ist die Frequenz? 
Stellt er automatisch bei höherer Spannung auf die Größere Frequenz, 
oder muss ich ihm das noch sagen, wenn ja wo.

2. Die Fuses: Ich möchte nichts an den Fuses verändern, aber wie ist die 
CKDIV8 im Auslieferungsszustand eingestellt? Im Datenblatt steht etwas 
widersprüchliches:

... Note that the fuses are read as logical zero, “0”, if they are 
programmed...

weiter unten in der Tabelle:
... Fuse Low Byte | Bit No | Description Default | Value
... ---------------------------------------------------------------
... CKDIV8        |  7       Divide clock by 8   | 0 (unprogrammed)

Da steht 0 (unprogrammed), obwohl im Text was anderes steht. Außerdem 
ist der Rest der tabelle, wie im Text beschrieben, d.h. 0 (programmed) 
und 1 (unprogrammed)

Ich gehe davon aus, das der Klammerausdruck in der Tabelle falsch ist 
und (programmed) heißen soll!

In der Beschreibung der Default Werte steht: "The device is shipped with 
CKSEL = “0010”, SUT = “10”, and CKDIV8 programmed."

Programmed heißt also 0 -> CKDIV8 = 0 bedeutet also CLKPS wird resetet 
zu "0011" - > bedeutet im Auslieferungszustand wird die CLK durch 8 
geteilt.

Betrieben mit 5 Volt bedeutet 16 MHz / 8 = 2MHz Taktfrequenz???

Im Forum habe ich auch keine ähnliche Frage gefunden mit 8/16 MHz! Stehe 
ich etwa auf dem Schlauch, weil alles so klar ist?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In Abschnitt 7.3 im Datenblatt steht ganz eindeutig:
"The default clock source setting is therefore the Internal RC 
Oscillator running at 8 MHz with longest start-up time and an initial 
system clock prescaling of 8, resulting in 1.0 MHz system clock."
                              ^^^^^^^^^^^^^^^^^^^^

Das in der Tabelle im Datenblatt dürfte ein Fehler sein, der allerdings 
in meiner Version (12/06, ist wahrscheinlich nicht mehr ganz aktuell) 
nicht enthalten ist. Bei mir steht hinter CKDIV8 "0 (programmed)"...

Und nein, die Frequenz ist im Prinzip nicht von der Betriebsspannung 
abhängig, wenn man von der spannungsabhängigen Drift des internen 
RC-Oszillators absieht, die den entsprechenden Kennlinien im Datenblatt 
unter "Typical Characteristics" zu entnehmen ist.

EDIT:
Im aktuellen Datenblatt (1/08) ist es in Abschnitt 6.2.7 auf Seite 31. 
AUf Seite 153 bei den Fusebits steht aber auch korrekt "0 (programmed)" 
bei CKDIV8...

Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In meinem Datenblatt (Version 11/07) steht es leider nicht mehr so 
eindeutig:

"The default clock source setting is therefore the Internal RC 
Oscillator running at 8 MHz with longest start-up time and an initial 
system clock prescaling of 8. This default setting ensures that all 
users can
make their desired clock source setting using an In-System or 
High-voltage Programmer."

Und auf Seite 1:
ATtiny25/45/85: 0 - 8 MHz @ 2.7 - 5.5V, 0 - 16 MHz @ 4.5 - 5.5V

Daher bin ich mir auch nicht so sicher.

Aber vielen Dank für Dein bemühen in Dein Datenblatt zu schauen. Jetzt 
weiß ich wenigstens das in der tabelle ein Fehler ist.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

>Und auf Seite 1:
>ATtiny25/45/85: 0 - 8 MHz @ 2.7 - 5.5V, 0 - 16 MHz @ 4.5 - 5.5V

das sagt nur aus, das Atmel im Spannungsbereich 2,7V...5,5V garantiert, 
daß der AVR mit 0...8MHz getaktet werden kann und im BEreich 4,5V...5,5V 
eben von 0...16MHz.

Wo dieser Takt herkommt 8int. RC, ext. Clock, ext. Crystal, Ceramic 
Resonator) und wie hoch dieser tatsächlich ist, daß entscheidet der 
Anwender ja mit den Fuse-Einstellungen und damit, was er an den AVR 
anschließt.

Der Lieferzustand ist doch im ersten Abschnitt eindeutig angegeben:
internal RC, 8MHz, CLDIV programmiert, also :8 = 1MHz.

Damit funktioniert er in gesamten zulässigen Spannungsbereich erstmal 
und der User kann ihn dann per Fuse/ext. Beschaltung passend 
umprogrammieren.

Gruß aus Berlin
Michael

Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok! Vielen Dank für Eure Klarstellung!

Ihr habt mir sehr geholfen.

Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da fällt mir noch was ein, wie stelle ich den jetzt die F_CPU ein? Auf 8 
MHz oder schon auf 1 MHz?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen B. wrote:
> da fällt mir noch was ein, wie stelle ich den jetzt die F_CPU ein? Auf 8
> MHz oder schon auf 1 MHz?

1Mhz
Denn das ist ja die Taktrate mit der der µC wirklich arbeitet.
Wie diese Taktrate zustande kommt, ob da jetzt 8Mhz durch 8 geteilt
werden oder 100Mhz durch 100, interessiert den Programmierer
nicht weiter. Für den ist nur interessant: 1 Mio Prozessortakte
in der Sekunde.

Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt die F_CPU eingestellt:
#define F_CPU 1000000   // 1 MHz

und bekomme ein warning: F_CPU redefined.

Ist das nur nice to know, ich weiß ja, dass ich sie geändert habe; oder 
sollte ich mir sorgen machen...

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

falls Du AVR-Studio mit WinAVR benutzt: schau mal unter Project -> 
Configuration Options -> general welcher Takt dort eingetragen ist.
Das scheint die erste F_CPU Zuweisung zu sein, wenn dort was drinsteht.

Man möge mich korrigieren, immernoch ASM-Programmierer aber im Moment 
mit dem Webserver von Ulrich Radig beschäftigt und der ist in C und hat 
meine Umbauten bisher irgendwie ohne Fehler und Warnings überstanden... 
;-)

Gruß aus Berlin
Michael

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen B. wrote:
> Ich habe jetzt die F_CPU eingestellt:
>
>
#define F_CPU 1000000   // 1 MHz
>
> und bekomme ein warning: F_CPU redefined.
>
> Ist das nur nice to know, ich weiß ja, dass ich sie geändert habe; oder
> sollte ich mir sorgen machen...
Falls das nicht bekannt sein sollte: Du änderst damit sowieso nur das 
Makro F_CPU und nicht die CPU-Frequenz selber!

Wenn im Makefile nicht derselbe Wert wie oben steht, dann kann es 
passieren, dass unterschiedliche Funktionen mit unterschiedlichen Werten 
für F_CPU arbeiten. Mach die Einstellung von F_CPU also besser nur 
einmal (nämlich im Makefile bzw. den Configuration Options im 
AVRStudio) und mach sie v.a. korrekt , also so, dass die Einstellung 
auch mit dem übereinstimmt, was Du bei den Fuse Settings eingestellt 
hast. Sonst nützt das Ganze reichlich wenig.

Abgesehen davon sollte man, wenn überhaupt, schreiben
#define F_CPU 1000000UL

Autor: Steffen B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Falls das nicht bekannt sein sollte: Du änderst damit sowieso nur das
>Makro F_CPU und nicht die CPU-Frequenz selber!

Ja, das weiss ich.


>Wenn im Makefile nicht derselbe Wert wie oben steht, dann kann es
>passieren, dass unterschiedliche Funktionen mit unterschiedlichen Werten
>für F_CPU arbeiten.

Im Makefile ist der selbe Wert eingestellt

>[...] und mach sie v.a. korrekt , [...]
>Abgesehen davon sollte man, wenn überhaupt, schreiben
>
#define F_CPU 1000000UL
>

Das wars!!! Ich habe das "UL" vergessen hinzuschreiben. Nachdem ich das 
abgeändert habe, war der Fehler weg!

Ich bin so dankbar, dass es dieses Forum gibt. Als Anfänger ist und wird 
man immer gut beraten. Vor allem sieht man als Anfänger schon mal den 
Wald vor lauter Bäumen nicht mehr...

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.