mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wo finde ich die CKDIV-Fuse in AVR Studio ?


Autor: Lochrasterfan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wegen neuer Hardware (kein LPT-Port mehr) bin ich von meinem alten 
Parallelprogger auf den USB Prog umgestiegen und dadurch in der 
komfortablen Lage, dass ich nicht mehr mit PonyProg programmieren muss, 
sondern direkt aus dem AVRStudio (Version 4.18) proggen kann.

Jetzt bastle ich mir gerade eine Uhr mit einem ATmega 8 und frage mich, 
warum sie zu langsam läuft.

Ich verwende einen 4.194304 MHz Quarz, das ist auch in meinem Programm 
so definiert:

#define F_CPU 4194304

mein Timer-Prescaler ist folgendermaßen gesetzt:

TCCR2 = 0x04;
TIMSK |= (1<<TOIE2);

Laut Datenblatt komme ich also auf eine Interruptfrequenz von
4194304/64 = 65536 Hz

Ich habe das getestet, indem ich in der Interruptroutine ein Portpin 
toggle:

ISR(TIMER2_OVF_vect) {PORTD ^= 0x02;}

Ich würde also 32768Hz erwarten, messe mit dem Oszi aber eine Frequenz 
von 128Hz --> um den Faktor 8 zu langsam!

Jetzt habe ich natürlich als erstes die CLCKDIV-Fuse im Verdacht, aber 
ich finde sie nicht im Dialog des AVR-Studio (Vgl. Abbildung).

Noch was: unter Project -> Configuration Options -> general
ist keine Taktfrequenz eingetragen ... ändert aber auch nix, wenn ich es 
tue.

... irgendwie stehe ich auf dem Schlauch ... kann mir da jemand helfen?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Mega8 hat keine CLKDIV-Fuse, er hat 4 interne Oszillatoren für 1, 2, 
4 und 8Mhz. Es muß also irgendwas in Deiner Timerroutine nicht passen. 
Oder aber Du hast nicht auf den externen Quarz gefused. Dann dürfte Dein 
Controller aber lediglich gut 4x zu langsam sein.

Autor: Lochrasterfan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. schrieb:
> Der Mega8 hat keine CLKDIV-Fuse

Danke, Travel Rec. Das erklärt schon mal, warum ich im Datenblatt nichts 
darüber finde ...

> Oder aber Du hast nicht auf den externen Quarz gefused.

Ich dachte, das hätte ich mit obiger Einstellung der SUT_CLKSEL - Fuse 
eben schon getan?

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, okay - das mit dem Quarz paßt. Aber wie kommst Du auf den 
mysteriösen Teiler von 64? Der Timer2 ist 256 Counts breit (8 Bit), mit 
Vorteiler 4 macht das 1024. Dies als Teiler der CPU-Frequenz ergibt 4096 
Hz. Hmm... Haste noch mehr Code?

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lochrasterfan schrieb:
> Ich würde also 32768Hz erwarten, messe mit dem Oszi aber eine Frequenz
> von 128Hz --> um den Faktor 8 zu langsam!

Bei einem Prescaler von 64 Zaehlt der Timer alle 64 Zyklen um 1 weiter. 
Der Interrupt kommt aber erst bei Ueberlauf, also bei 8-bit nach 256 
Inkrementen!

Volker

Autor: Volker Schulz (volkerschulz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann macht auch seine (falsche) Rechnung Sinn:

Takt = 4194304 Hz
Prescaler = 64

= Inkrementieren mit 65536 Hz

Timer = 8-Bit

= Ueberlauf mit 256 Hz

Bei jedem Ueberlauf togglen.

= Periode von 128 Hz


Volker

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup.

Autor: Lochrasterfan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... das kann ich Nachvollziehen. Super !!
Ich brauche also nicht den Überlauf-Interrupt, sondern einen Vergleich 
...

Danke euch beiden!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt auch noch den CTC-Modus, damit kann man, in Verbindung mit der 
Output-Compare-Schaltung und dem OCRx-Register, sehr fein auflösen, wann 
der Interrupt kommen soll.

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.