Divide clock by 8 internally

AVR-Billy

Mitglied
19 Jun 2017
40
0
6
Remscheid
Sprachen
BascomAVR
Hallo Gemeinde!

Ich müsste bitte mal wissen, ob die Einstellung "Divide clock by 8 internally" auch bei
externem Takt , z.B. vom Resonator oder Crystal , auch greift ? Also wenn ich z.B. einen
2 MHz Quarz anschliesse und "Divide clock by 8 internally" anhake, ob der Takt dann 500 KHz
beträgt ?

Vielen Dank & Gruss
 

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
Ich denke du meinst das Fusebit CKDIV8 bei AVR.

Dieser Prescaler wirkt auf
  • Quarzoszillator XTAL
  • Externer Takt an XTAL2
  • Quarzoszillator TOSC und
  • interner RC Oszillator
Schau sicherheitshalber mal in das Datenblatt im Kapitel
System Clock and Clock Options


2MHz Quarz an XTAL ergibt dann 250kHz nicht 500kHz Systemclock
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3.344
61
48
Marwitz
Sprachen
BascomAVR, Assembler
Um welchen Controller gehts denn konkret?
Bei Älteren gabs welche mit diskreten internen Frequenzen.
Halbwegs aktuelle Controller besitzen üblicherweise einen System Clock Prescaler, der die eingestellte Clocksource runterteilt.
Der Teiler kann auf unterschiedliche diskrete Werte zur Laufzeit einbgestellt werden - eine Fuse kann den Zustand beim Reset festlegen (Teiler1 oder Teiler8).
Bei einigen Controllern kann die Clocksource (nur) zur Laufzeit umgestellt werden (inklusive Prescaler), diese startetn dann immer erstmal mit 1MHz aud dem internen RC-Oszi.

Im Datenblatt des Controllers findest Du üblicherweise ein Kapitel "System Clock and Clock options" oder ähnlich, da gibts dann auch ein Blockschema zu.
(Obwohl in irgendeinem DB da auch mal der System Clock Prescaler fehlte... aber später beschrieben war)
 

AVR-Billy

Mitglied
19 Jun 2017
40
0
6
Remscheid
Sprachen
BascomAVR
Hallo ...

Hoppla,sorry. Habe mich vertan. Meinte auch 4MHz , nicht 2MHz, da ich auf 500KHz kommen möchte. Und offenbar gibt es keine halbhohen Quarze mit 500KHz (?!)...Es geht aber nicht nur speziell um einen Controller. Möchte generell wissen, ob das "divide clock by 8 internally" auch auf an XTAL1/2 angeschlossene Takte wirkt. Wenn konkret,dann der 2313 und der tiny44.
Aber Dirk schieb ja, dass dem so ist.
Ich gucke aber nochmal in den entsprechenden Kapiteln.

Danke Euch.
 

LotadaC

Sehr aktives Mitglied
22 Jan 2009
3.344
61
48
Marwitz
Sprachen
BascomAVR, Assembler
Beim Tiny2313 ist im Datenblatt (zumindest in der L-Version) kein Prescaler eingezeichnet - der hat den aber.
Der interne Oszillator kann nominal auf 4 oder 8MHz arbeiten.
Diese Frequenz landet dann neben den anderen Sources (->Dirk) auf dem Clock-Multiplexer.
Der Multiplexer speist den Prescaler, der einen diskreten Teiler besitzt (1, 2, 4, 8, 16, 32, 64, 128, 256).
Beim Reset wird der Prescaler in Abhängigkeit der CKDIV8-Fuse mit 1 oder 8 beladen.
Du kannst den aber im Programm "Umsetzen".
Deine 500kHz kannst Du also auch mit Teiler8 aus den internen 4MHz oder mit Teiler16 aus den internen 8MHz gewinnen.

Beim Tiny44 ist der Prescaler eingezeichnet.
Ansonsten im wesentlichen dasselbe - allerdings hat der interne RC hier immer 8MHz.

Ob Dir die Genauigkeit eines internen Oszillators ausreicht, mußt Du entscheiden. Meist gibt es nur einen Fabrik-Kalibrationswert für 8MHz, oder es wird default dieser geladen.
Natürlich kannst Du das OSCCAL auch wieder selbst zur laufzeit beschreiben (ggf mit einem vorhandenen aber nicht automatisch geladenen Fabrik-Calibrationswert)
 
Zuletzt bearbeitet:

Dirk

Administrator
Teammitglied
28 Jan 2007
4.282
141
63
Mittelhessen, Giessen
Sprachen
ANSI C, C++, C#, Java, Kotlin, Pascal, Assembler, PHP
LotadaC hat ja schon geantwortet, da ich es schon geschrieben hatte, nochmal als Ergänzung ...

Wenn du mit "divide clock by 8 internally" das Fusebit CKDIV8 meinst, ja beide Mikrocontroller verfügen über dieses Fusebit und
teilen den Oszillatortakt durch 8 wenn das Fusebit programmiert (=0) ist.
(CKDIV8 ist von Werk aus programmiert)

Bei 4MHz Quarz erreichst du dann 500kHz Systemtakt.

In Verbindung zu CKDIV8 such auch mal im Datenblatt nach dem Register CLKPR.

upload_2017-10-29_14-25-18.png
 

dino03

Aktives Mitglied
27 Okt 2008
6.716
16
38
Sprachen
BascomAVR, Assembler
Hi,

Meinte auch 4MHz , nicht 2MHz, da ich auf 500KHz kommen möchte. Und offenbar gibt es keine halbhohen Quarze mit 500KHz (?!)...Es geht aber nicht nur speziell um einen Controller.
es gibt aber 500kHz Keramikresonatoren. Es gibt sogar welche die noch niedriger schwingen.
Wenn es nicht auf ppm genau sein soll dann muß man kein Quarz einsetzen. Keramikresonatoren gibt es als 2polig und auch als dreipolig mit bereits eingebauten Bürdekondensatoren.

Gruß
Dino
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)