AVR Taktfrequenz herausfinden 8515

Gast #4308032
Lesenswert?
• ▲
▼
Hi,
ich wollte eine Uhr mit Hilfe eines LCDs und AVR 8515 16-PU darstellen.
Die Ausgabe klappt.
Nur ist die Uhr zu langsam.
Im Datenblatt steht 16 Mhz für den 8515 16-PU


###So habe ich den Timer eingestellt:

TCCR0 = (1<<WGM01) | (1<<CS00) | (1<<CS01);//CTC Modus, Prescaler 64

OCR0 = 125-1; // Formel S. 86 Datenblatt -> [f(avr)/(f(ocn)*2*presc) -1]

TIMSK |= (1<<OCIE0);  //Compare Interrupt erlauben

###

der brauch immer 4 Sekunden  für eine echte Sekunde...
*habe ich eine Falsche Formel für OCR0?
*habe ich mich im Datenblatt vertan bezgl. 16Mhz vom AVR?
Gast #4308051
Lesenswert?
• ▲
▼
Oh habe grade eine LED Toggle Funktion mit _delay rasugenommen...
jetzt läufts schneller.
Habe weiterhin #define F_CPU 4000000UL gewählt nur zum testen.
werde es jetzt wieder auf #define F_CPU 16000000UL umstellen
Gast #4308056
Lesenswert?
• ▲
▼
Hi

>Habe weiterhin #define F_CPU 4000000UL gewählt nur zum testen.
>werde es jetzt wieder auf #define F_CPU 16000000UL umstellen

Und was soll das? Ein #define F_CPU ändert nichts an der Taktfrequenz 
des Controllers. Das muss über die Fuses passieren.

MfG Spess
Gast #4308057
Lesenswert?
• ▲
▼
Habs jetzt im Sekundentakt geschafft.

--> ja alle 4 sekunden wurde die Sekundenzahl auf meinem LCD um 1 
Sekunde erhöht.

Danke für die Hilfe .
Soweit funktioniert das.

0.5  ms?

hmm ich dachte [f(avr)/(f(ocn)*2*presc) -1] = OCR0 = 
[16Mhz/(1000Hz*2*64)-1]
=125-1

also dass bei 1000Hz jede ms ein IR kommt.
Gast #4308061
Lesenswert?
• ▲
▼
Es kommt vor allem darauf an, welche Taktquelle Du tatsächlich 
verwendest und mit welcher Frequenz die schwingt.
Das zu wissen, würde Dir erlauben, gezielt vorzugehen, bzw. Abweichungen 
auf ihre Ursache zurückzuführen.
Gast #4308062
Lesenswert?
• ▲
▼
spess53 schrieb:
> Und was soll das? Ein #define F_CPU ändert nichts an der Taktfrequenz
> des Controllers. Das muss über die Fuses passieren.

Ja genau. Das ist ja nur für die Software.
Damit der Compiler weiß womit er arbeiten soll oder?

danke für die schnellen antworten. (habe das problem ja bereits gelöst)
Gast #4308068
Lesenswert?
• ▲
▼
Es wäre halt schön, falls Du, da Du ja die Allgemeinheit um Hilfe 
bittest, dieser Allgemeinheit auch etwas hinterlässt, was ihr 
weiterhilft. Dazu gehört eine vollständige Beschreibung der Fakten. D.h. 
Quelltext und Schaltplan und Zustand der Fuses.

So, wie es jetzt ist, ist die Lösung nur Dir bekannt und mit den 
vorliegenden Fakten kann niemand sonst etwas anfangen.
Gast #4308076
Lesenswert?
• ▲
▼
Hi

>hmm ich dachte [f(avr)/(f(ocn)*2*presc) -1] = OCR0 =
>[16Mhz/(1000Hz*2*64)-1]=125-1

>also dass bei 1000Hz jede ms ein IR kommt.

Nein das würde eine CTC-Frequenz von 1kHz ergeben. Und die erzeugt zwei 
Interrupts pro Periode.

MfG Spess

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.