Forum: Mikrocontroller und Digitale Elektronik AVR: TCCR2 Problem


von Bene (Gast)


Lesenswert?

Hallo alle zusammen,
ich versuche gerade meinen Counter2 mit einem Uhrenquarz im asynchronen 
Modus zu betreiben.
Dabei versuche ich mit dem Befehl

TCCR2 = (1<<CS22) | (1<<CS21);

Den Prescaler zu aktivieren.
Im Simulator in AVR-Studio 5 setzt er diese Bits aber nicht.
Hatte jemand anderes auch schonmal dieses Problem?
Woran könnte das liegen?

Gruß und Danke schonmal.

: Verschoben durch Moderator
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bene schrieb:
> Im Simulator in AVR-Studio 5 setzt er diese Bits aber nicht.

Simulation ist Schall und Rauch.  Auch ein Simulator kann sich irren.
Wie sieht's am lebenden Objekt aus?  Selbst, wenn der Simulator die
Bits setzt, glaubst du, der simuliert dann auch noch einen fiktiv
vorhandenen 32-kHz-Quarz?  Am besten noch mitsamt der 500 ms
Anlaufzeit? :-)

Davon abgesehen: Simulator ist nicht gleich Simulator, und simuliertes
Device nicht gleich simuliertes Devices.  Du müsstest also schon
wenigstens dazu schreiben, welcher AVR.  (Kann man Simulator V1 und
V2 im AVR Studio 5 noch explizit auswählen?  In jedem Falle V2
bevorzugen.)

von Bene (Gast)


Lesenswert?

danke für die schnelle Antwort.
Ich verwende den Atmega8.
Im Controller hat er auch nicht funktioniert.
Ich habe aber zur Funktionsüberprüfung ein LCD-Display, weshalb ich 
nicht überall Fehler ausschließen kann.
Ich muss den Code erst mal etwas bereinigen, dann werde ich ihn mal 
posten.
Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bene schrieb:
> danke für die schnelle Antwort.
> Ich verwende den Atmega8.

Der benutzt möglicherweise noch den alten (handgestrickten) Simulator.
Schau mal nach, was die Doku an Dingen beschreibt, die im Simulator
nicht (oder nicht vollständig) implementiert sind.

> Im Controller hat er auch nicht funktioniert.

Da kannst du allerdings nicht erkennen, ob er die Bits nicht
gesetzt hat, denn der ATmega8 hat kein Debug-Interface.  Dafür
hättest du dann einen ATmega88 stattdessen benutzen müssen.

> Ich habe aber zur Funktionsüberprüfung ein LCD-Display, weshalb ich
> nicht überall Fehler ausschließen kann.

Um zu sehen, ob der Timer funktioniert, kann man in einer ISR bei
jedem Überlauf ein Pin wackeln lassen.  Das ist schnell getan.

Denk dran: nach dem Setzen von AS2 im ASSR braucht der Quarz eine
beachtliche Zeit zum Anschwingen (mehrere 100 ms); in dieser Zeit
kannst du vom Timer noch nichts erwarten.

von Bene (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
Ich hab jetzt mal das c-file angehängt.
Ich habe es so geändert, dass ich über LEDs die Rückmeldung bekomme.
Die LED nach   "while(ASSR & 0x07);"  fängt leider nicht an zu leuchten.
Ich verzweifle gerade etwas.
Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bist du dir denn sicher, dass dein Quarz (mitsamt seiner Außen-
beschaltung, Lastkondensatoren etc.) funktioniert?

Ich vermute hier ein Hardwareproblem in dieser Richtung, kein
Softwareproblem.

von Bene (Gast)


Lesenswert?

Ich habe jetzt nochmal ein paar Tests gemacht.
Dabei habe ich mit Hilfe von leuchtenden LEDs festgestellt, dass der 
Quarz nur etwa einmal pro Sekunde schwingt und relativ schnell aufhört.
Hat hier jemand schon eine Quarz-Lastkapazitäten-Kombination (32,768khz) 
die gut funktioniert?
Ich habe einen Quarz von Conrad, wo aber nicht so genau ersichtlich ist 
ob Cl= 6pF oder 12,5pF.
Ich habe gerade bei Reichelt gesehen, dass dort welche gibt, die genau 
beschriftet sind.
Verwendet hier jemand einen davon?
Gruß
Bene

von Jens N. (midibrain)


Lesenswert?

Guten Morgen,

mir fällt auf das hier einmal das verODERn fehlt:
Bene schrieb:
TCCR2 = (1<<CS22) | (1<<CS21);

besser so:

TCCR2 |= (1<<CS22) | (1<<CS21);

Gruß

von Bene (Gast)


Lesenswert?

Das hab ich in meiner aktuellen Version übernommen.
Es ändert sich dadurch aber leider nichts.
Ich bin mir ziemlich sicher, dass es am Quarz liegt.
Deshalb bräuchte ich unbedingt eine Empfehlung bezüglich Quarz bzw. 
Lastkapazität.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bene schrieb:
> Ich bin mir ziemlich sicher, dass es am Quarz liegt.

Bist du dir denn sicher, dass der Quarz überhaupt in Ordnung ist?

von Bene (Gast)


Lesenswert?

Ja, ganz sicher.
Ich hab mehrere davon hier liegen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bene schrieb:
> Ja, ganz sicher.
> Ich hab mehrere davon hier liegen.

Dann kannst du wohl nur mal mit verschiedenen Kapazitäten
experimentieren.  Worst case ist dein Quarz ungeeignet, weil sein
Serienwiderstand vielleicht zu hoch ist für die benutzte Oszillator-
schaltung.  Diese kleinen 32-kHz-Quarze sind in ihren Daten nicht so
besonders.  Vielleicht hast kannst du ja aus irgendwelchem Elektronik-
schrott noch einen anderen recyclen?  Je größer, um so besser.

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
Noch kein Account? Hier anmelden.