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 :)
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.
SUT_SKSEL : Int. RC Osc. 8 MHz; Start-up time: 6 CK + 64 ms CKDiv : nicht angehakt ---> µC läuft mit 8MHz interner Takt
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.
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.
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.