Frequenz-Verwirrung

Gast #1310603
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 :)
Moderator Persönliche Seite #1310618
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.
#1310623
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.
Gast #1310650
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!
Moderator Persönliche Seite #1310699
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren