Hallo,
ist das bei AVR eigentlich auch so, dass der Takt mit 4 dividiert wird wie bei PIC´s. Hab da bisher nicht drüber nachgedacht, aber auch noch nicht mit auf die Nase gefallen.
THX
The Man
Hallo,
ist das bei AVR eigentlich auch so, dass der Takt mit 4 dividiert wird wie bei PIC´s. Hab da bisher nicht drüber nachgedacht, aber auch noch nicht mit auf die Nase gefallen.
THX
The Man
Chuck Norris kann Windows Vista auf einem Atmel in Assembler implementieren!
Chuck Norris coded mit 3 Tasten:"1","0" und "compile"
Hallo,
bei den ATmegas und ATtinys nicht. Wobei es Controller gibt, bei denen man den Takt über Fusebiteinstellungen durch 8(?) teilen kann. Möglicherweise ist das Bit ab Werk gesetzt, müsste man dann halt ändern.
Gruß
Jens
Beim PIC ist das so:
https://www.roboternetz.de/wissen/in...#CPU_.2F_Clock
Beim AVR etwas trickreicher
https://www.roboternetz.de/wissen/in...ruction_Cycles
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Bei vielen neuere AVRs (z.B. Mega88,Mega324) läuft der interne RC Takt mit 8 MHz und wird nach den Fuses anfangs durch 8 geteilt. Der Teilerfaktor läßt sich aber per Software einstellen (1 bis 256 soweit ich wiess).
Die kurze (vereinfachte) Variante: bei AVRs ist 1 Cycle = 1 Takt.
Natürlich ist es intern ein klein wenig komplexer, wie auf dem von PicNick verlinkten Bild zu sehen. Denn normalerweise wird während der Ausführung eines Befehls, schon der nächste aus dem Flash geladen. Im Endeffekt spielt das im laufenden Programm dann aber keine wesentliche Rolle mehr, und man kann vereinfacht davon ausgehen daß 1 Cycle = 1 Takt ist.
Natürlich muss man auch aufpassen ob der Takt denn auf seinem Weg von der Takterzeugung zum CPU-Kern irgendwo runtergeteilt wurde (was zählt ist ja der CPU-Takt). Das ist aber meist nicht der Fall (zumindest wenn man den AVR mit einem externen Quarz betreibt).
Betreibst du einen ATmega32 also mit einem 16MHz Quarz, dann kann er pro Sekunde bis zu maximal 16 Millionen Befehle ausführen (üblicherweise wird dieses Maximum natürlich nicht erreicht, da eben nicht alle Befehle nur 1 Cycle brauchen)
Das steht aber auch alles im Datenblatt...
beim ATmega32 z.B. kann man unter "AVR CPU Core" -> "Instruction Execution Timing" folgendes nachlesen:
Und unter "System Clock and Clock Options" -> "Clock Systems and their Distribution" ist z.B. noch ein schönes Blockdiagramm das zeigt wie der Takt überhaupt an die einzelnen Teile des AVR verteilt wird. Auch das kann bei der Beantwortung derartiger Fragen hilfreich sein.The
AVR CPU is driven by the CPU clock clkCPU, directly generated from the selected clock
source for the chip. No internal clock division is used.
So viele Treppen und so wenig Zeit!
Lesezeichen