Forum: Mikrocontroller und Digitale Elektronik Frequenz-Verwirrung


von Daggi (Gast)


Lesenswert?

Hallo,


ich blicke nicht durch bei der taktfrequenz von meinem AVR.

Ich habe ein eigenes Board mit einem 8Mhz Quartz-Oszillator.
Fuses:

- 8 Mhz Crystal Osc Startup 1k CK 0ms eingestellt
- CKDIV nicht angehakt

damit läuft meine cpu bei  8 Mhz, habe ich auch so in F_CPU geschrieben:
F_CPU = 8000000L

damit funktioniert mein UART (baudrate berechnet sich ja aus FCPU)

aber jetzt habe ich hier noch ein STK500 und will hier den internen takt 
nutzen.

woher weiss ich wie hoch der getaktet ist?

fuse: Int RC-Osc 6CK + 65ms
CKDiv angehakt.

was hab ich hier jetzt für einen takt?

der tab hardware-settings sagt mit: 3.686MHz ist das jetzt also mein 
takt? wo kommt der her? Im TAB Advanced steht calibrate to freq 8.0 MHz 
was hat es damit auf sich??

jedenfalls kommt selbst bei 2400baud nur unsinn an ... :(
(das hatte ich schonmal am laufen mit internem osc, ich weiss ja, dass 
für uart externen takt besser ist)

ich bin verwirrt :)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Daggi schrieb:

> woher weiss ich wie hoch der getaktet ist?

Aus dem Datenblatt.  Welcher Controller es ist, sagst du uns aber
nicht.

> fuse: Int RC-Osc 6CK + 65ms
> CKDiv angehakt.

Da es eine CKDIV8-Fuse gibt, muss es sich um einen neueren
Oszillator handeln, der dann permanent mit 8 MHz läuft.  CKDIV8
setzt den clock prescaler auf 1:8, also läuft der AVR mit 1 MHz.

> der tab hardware-settings sagt mit: 3.686MHz

Das ist der Takt, den der STK500 erzeugt und an XTAL1 deines AVRs
einspeist.  Da die Fuse aber auf internem RC-Oszillator steht, wird
dieser Takt ignoriert.

von Z8 (Gast)


Lesenswert?

SUT_SKSEL   : Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms
CKDiv       : nicht angehakt

--->          µC läuft mit 8MHz interner Takt

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Defaultmäßig ist der RC-Clock ca. 8MHz. Dann ist hier noch ein Teiler 
durch 8 gesetzt (müsste CKDIV sein), also ca. 1MHz Systemtakt.

von Karl H. (kbuchegg)


Lesenswert?

Wenn man gar nicht mehr durchblickt, kann man auch programmtechnisch 
grob die Tektfrequenz ermitteln, indem man mittels _delay_ms eine LED 1 
Sekunde ein und 1 Sekunde aus schalten lässt.

Ins Programm trägt man zb 1Mhz für F_CPU ein.
Läuft der Prozessor, dann stimmen die 1 Sekunden.
Läuft er aber mit 8Mhz, dann blinkt die LED 8 mal in der Sekunde. Diesen 
Unterschied kann man auch mit freiem Auge gut sehen.

von Daggi (Gast)


Lesenswert?

danke für eure hilfe, jetzt seh ich langsam land. funktioneirt auch 
wieder :)

>> der tab hardware-settings sagt mit: 3.686MHz
>Das ist der Takt, den der STK500 erzeugt und an XTAL1 deines AVRs
>einspeist.  Da die Fuse aber auf internem RC-Oszillator steht, wird
>dieser Takt ignoriert.

das stk500 hat einen takt-generator? muss ich da nicht erst ein quartz 
einstecken? wenn nein, wie muss ich SUT_SKSEL setzen um den stk500-takt 
zu nutzen?


>SUT_SKSEL   : Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms

das habe ich nicht zur auswahl. alle internen möglichkeit für SUT_SKSEL 
haben keine taktangabe. (mega644)


>Wenn man gar nicht mehr durchblickt, kann man auch programmtechnisch
>grob die Tektfrequenz ermitteln, indem man mittels _delay_ms eine LED 1
>Sekunde ein und 1 Sekunde aus schalten lässt.

:) da hätte ich auch selbst drauf kommen können...

danke euch!

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Daggi schrieb:

> das stk500 hat einen takt-generator?

Ja, ist ganz pragmatisch simpel gelöst: das ist der OCx-Ausgang eines
Timers, der im CTC-Modus betrieben wird, mit "toggle output on compare
match".  Daher kann man auch maximal 3,68 MHz erzeugen (f[cpu]/2 des
internen ATmega8535).

> muss ich da nicht erst ein quartz
> einstecken?

Ja, musst du nicht.

Die Quarzfassung auf dem STK500 geht auch nicht direkt an die
AVR-Fassungen, dafür wären die Kapazitäten der Platine viel zu
groß.  Stattdessen betreibt diese einen eigenen Quarzoszillator.
Um den zu nutzen, müsste man den Jumper OSCSEL auf die andere
Seite stecken.  Aus AVR-Sicht ist das aber dann nach wie vor ein
externer Takt.

> wenn nein, wie muss ich SUT_SKSEL setzen um den stk500-takt
> zu nutzen?

Sinnvollerweise auf externen Takt stellen, aber auch jede mögliche
Einstellung eines externen Quarzes oder Keramikresonators sollte
sich nutzen lassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.