-         

Ergebnis 1 bis 5 von 5

Thema: Taktteiler 4 wie bei PIC´s?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    12.06.2006
    Beiträge
    473

    Taktteiler 4 wie bei PIC´s?

    Anzeige

    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"

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    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

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    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).

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    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:
    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.
    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.
    So viele Treppen und so wenig Zeit!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •