Hallo,
da es Datenblätter zum ATtiny in verschiedenen Revisionen gibt, hier ein Link zu Atmel, damit wir das gleiche benutzen (Rev. 2586Q–AVR–08/2013): http://www.atmel.com/images/atmel-25..._datasheet.pdf
Gefunden über Google mit Suchbegriffeingabe: attiny85
Zitat:
Wie oben schon gefragt, reicht es wenn ich die Takt Frequenz vom Attiny im Code eintrage oder muss ich auch noch etwas in den Fuses verändern?
Ein nagelneuer, frisch gekaufter ATtiny85 ist auf einen Systemtakt von 1Mhz eingestellt: Interner Oszillator mit 8MHz, der durch die CKDIV8 Fuse im System Clock Prescaler (nicht Timer Prescaler) auf ein achtel, also auf 1MHz herabgesetzt wird (Datenblatt: "6.2.3 Calibrated Internal Oscillator" und "Table 20-5. Fuse Low Byte")
Zitat:
Als nächstes würde mich Interresieren wo Ihr genau die ganzen Daten aus dem Datenblatt herbekommt?
Ich schreib es dazu aber es wird Dir nicht erspart bleiben, jede Zeile, jede Tabelle und jede Fußnote selbst zu durchforsten, da so ein Datenblatt wirklich ganz gedrängt in jedem Buchstaben relevante Informationen beinhaltet :-)
Zitat:
Die CS Bits bestimmen die Quelle für den Timer/Counter richtig?
Ist das auch gleichzeitig der Prescaler?
Ja. Für Timer 0 gibt es im Datenblatt das Kapitel 11 und dort zum "11.9.3 TCCR0B" die Tabelle "Table 11-6. Clock Select Bit Description" Für Timer 1 in Kapitel 12 sieht die entsprechende Tabelle anders aus.
Zitat:
Wie genau hast Du das berechnet ?
Timerzyklusfrequenz von (1000000Hz/8 )/256=488,28125Hz
Ich bin von den Factory Default Einstellungen ausgegangen: 1MHz Systemtakt, bei den Timern in den Tabellen und im Blockdiagramm "Figure 6-1" wird er clk i/o genannt. Den Timerprescaler habe ich mit acht angenommen, da eins ja einen zu schnellen Zähltakt erzeugt hat. Also 1MHz geteilt durch acht ergibt 125000. 125000 geteilt durch die 256 Zählschritte für einen Timerzyklus ergibt die 488,28125Hz.
Zitat:
Ich verstehe es nur soweit, der Systemtakt beträgt 1Mhz ( 1000000 ) jetzt rechnet Ihr 1000000:256=3.906,25
Ja, aber mit dem angenommenen Timerprescaler von eins ist der Timerzyklus zu schnell für Deine geforderten 1kHz. Eigentlich ist die Rechnung (1000000/1)/256. Die 1 für den Timerprescaler eins habe ich vorher weggelassen.
Zitat:
Gut nur wie kommt Ihr auf dieses Ergebniss ?
(1000000Hz/8 )/256=488,28125Hz ???
Weil mit Timerprescaler von 1 der Takt zu schnell war, wird hier der Prescaler von 8 hergenommen. Die 8 muß also später mit den CS Bits eingestellt werden und nicht die 1.
Zitat:
Auch wäre es nett, wenn Ihr mir bitte nochmals irgendwie genauer sagen könntet wie Ihr die genau Frequenz berechnet ?
Ich kann es nicht genauer. Dieser und mein letzter Post haben mich erschöpft. Besser Du fragst konkret, was Du nicht verstanden hast.
Gruß
Searcher