www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Prescaler ATMEGA 2560 /1 im Auslieferungszustand ?


Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe eine ziemliche "Newbie"-Frage:

Ich programmiere die ATMegas 2560/1 mit der gcc-Lib in C und bin auf ein 
merkwürdiges Problem gestoßen (Clock extern ist 14.745.600 Hz):

Habe bislang mit TIMER0 und TIMER2 gearbeitet und OvFlw - Interrupts 
ausgewertet.

Nun habe ich erkannt, dass ja TIMER2 und nicht TIMER0 auf den externen 
Uhrenquartz reagiert. Ist mir vorher gar nicht aufgefallen, da ich unter 
Benutzung von TIMER0 die angezeigten Sekunden nie geeicht hatte und 
diese nur wenig langsamer liefen als die realen Sekunden ...!
Auf die PreScaler habe ich auch nicht richtig geachtet ...einfach nur 
Trial and Error! (Bin halt Newbie).

Dinge gibt's,die gibts gar nicht!

Nun aber mein Problem (nachdem ich etwas weiter überlegt habe ...):

Habe nun das Register

TCCR2B |= (1<<CS22) | (1<<CS20); //Counter/Timer2 Prescaler 128

exakt so belegt ... und siehe da, die Sekunden werden nun wirklich als 
Sekunden angezeigt (EIN Interrupt pro Sekunde) .

Wenn ich nun aber ein wenig rechne, stelle ich fest, dass ja der 
PreScaler des Prozessors auch noch einen Divisor haben muß - ansonsten 
kommen ich ja nie auf meine 32768 Hz des Uhrenquarzes: Nach Adam Riese 
müßte also das CLKPR – Clock Prescale Register die Bit-Belegung für 256 
enthalten. (128*256=32768).

Es gibt aber keine Stelle in meinem Programm, wo ich CLKPR belegt habe- 
definitiv!

Wo bitte schön, kommt die Belegung CLKPR |= (1 << CLKPS3) (entspricht 
PreScaler 256) her ???

Ich habe die Mikroprozessoren mit Beispielprogrammen bekommen. Kann es 
sein, dass diese Einstellungen schon einmal vorgenommen worden sind und 
permanent erhalten bleiben ?

Oder ist der PreScaler defaultmässig auf 256 ab Werk eingestellt ..?

Andersherum, wenn man den Chip neu programmiert, werden dann nicht die 
Default Werte gesetzt (No PreScaler), wenn man hierzu keine Belegung im 
Programm vorgibt?

Definitiv war in den Fuse Bits der PreScaler 8 (CKDIV8) nicht 
eingeschaltet (nur als Ergänzung)!

Oder gibt es irgendwelche Default  Einstellungen in der gcc-Lib 
(programmiere mit AVR Studio)

Bin ziemlich ratlos! Wo ist der Wald?


Vielen Dank für Eure Mithilfe.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Prescaler für die Clock des Timer0 ist 128, der Quarz 32768 Hz.

Das heißt, das dein Timer0 mit 256 Hz zählt, also ungefähr alle 4 ms ein 
Wert höher.
Der Timer0 ist 8 bit breit, also zählt er von 0 bis 255, dann fängt er 
wieder bei 0 an. Genau dann wird ein Timer Overflow ausgelöst, der dann 
natürlich immer wieder im 1-Sekundentakt ausgelöst wird.

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Flo schrieb:
> Prescaler für die Clock des Timer0 ist 128, der Quarz 32768 Hz.
>
> Das heißt, das dein Timer0 mit 256 Hz zählt, also ungefähr alle 4 ms ein
> Wert höher.
> Der Timer0 ist 8 bit breit, also zählt er von 0 bis 255, dann fängt er
> wieder bei 0 an. Genau dann wird ein Timer Overflow ausgelöst, der dann
> natürlich immer wieder im 1-Sekundentakt ausgelöst wird.

Upps - danke! Das habe ich ja natürlich garnicht beachtet. Der Overflow 
passiert ja erst ab 255 ...! Jau!

Alles klar - vielen Dank!

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.