mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frequenz-Verwirrung


Autor: Daggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daggi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.