www.mikrocontroller.net

Forum: Compiler & IDEs Uhrenquarz am ATmega 644


Autor: Horst B. (hobadberg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

habe folgendes Problem. Wollte einen Uhrenquarz an den Pins TOSC1/2 
betreiben. Nutze hierzu den Timer2/B.

Auszug aus dem Quellcode:

int main(void)
{
 ASSR|=(1<<EXCLK)|(1<<AS2);
 TCCR2B=(1<<CS22)|(1<<CS21)|(1<<CS20); Teiler 1024
 TCNT=255;
 TIMSK2|=(1<<TOIE2);

 sei();

 while(1)
 {
 //Leer
 }
 return 0;
}

ISR (TIMER2_OVF_vect)
{
//mach was
}

Wenn ich das ASSR auskommentiere, dann läuft der Timer einwandfrei.
Dann nutzt er also den CPU Takt / 1024

Der Quarz ist an TOSC1/2 angeschlossen und über 2x22P C an Masse.
Wo liegt mein Fehler. Hat vielleicht einer schon mal das Problem gehabt.
Mit dem Oszilloskop kann ich keine Schwingung am Quarz messen. Ich bin 
echt ratlos. Woran kann das liegen das der Quarz nicht anschwingt??
Den vollständigen Code hab ich leider nicht hier. Falls notwendig kann 
ich das heute abend noch mal einstellen.
Das Ganze wird mit 5V betrieben.
Danke im Voraus!!

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Horst Badberg schrieb:

>  ASSR|=(1<<EXCLK)|(1<<AS2);

Schau nochmal ins Datenblatt. Das ist nicht die richtige Konfiguration 
für einen externen Quarz.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und dann schau anschliessend noch mal in das Kapitel zum asynchronen 
Timer, aber richtig tief und gründlich, denn da gibt's auch bei richtig 
gesetzten Bits ein paar Fallen.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Uhrenquarze werden ohne Kondensatoren nach Masse angeschlossen und EXCLK 
darf nicht gesetzt werden, siehe DB, ist nur für ext. zugeführten Clock.

Autor: Horst B. (hobadberg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man seid ihr alle schnell!! Hut ab.
Danke für die Antworten.

ASSR|=(1<<AS2); hatte ich schon getestet. Läuft auch nicht! Werde das 
mal mit ohne Kondensatoren testen. Wenn es dann nicht läuft, dann kaue 
ich das DB heute mal durch.
Ich berichte!!!
LG Horst

Autor: Denny S. (nightstorm99)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Das gleiche bastel ich auch gerade und bei mir siehr es so aus:
// ASYNCRONEN TIMER2
ASSR   = (1<<AS2);
_delay_ms(100);
TCCR2B = (1<<CS22) | (1<<CS20);  // TEILER 128 für 1sek
TIFR2   = (1<<TOV2);             // Interrupts löschen (*)
TIMSK2 = (1<<TOIE2);


Grüße Denny

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> ASSR|=(1<<AS2)

Wenn außerhalb der Main kein Zugriff auf das ASSR stattfindet, wäre es 
sicherer die Veroderung wegzulassen:

ASSR=(1<<AS2)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Denny S. schrieb:

> ASSR   = (1<<AS2);
> _delay_ms(100);

Ist -- je nach Quarz -- schon recht knapp.  Manche brauchen da auch
schon mal 300...500 ms, bis sie stabil schwingen.  Sollte man einfach
im Hinterkopf behalten, man muss ja diese Zeit nicht unbedingt
tottreten.

Autor: Horst B. (hobadberg)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es ist genauso, wie Denny es beschrieben hat.
Bei mir müssen dieKondensatoren auf alle Fälle dran, sonst schwingt der 
Quarz nicht!!
Vielen, vielen Dank an alle die geholfen haben.
Als Anhang meine main.c So funktioniert es bei mir.
Ein Semikolon fehlt in der main.c (wo der Prescalerwert gewählt wird)

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Horst Badberg,

das Thema "Uhrenquarz am ATMEGA644" hatte ich auch gerade, wenn auch nur 
hypothetisch. Im Datenblatt steht dazu, dass man einen Quarz mit einer 
Kapazität von 6pF allein anschließen soll, bei höheren Kapazitäten aber 
die Schaltung mit den zusätzlichen Kondensatoren braucht.

Gruß, DetlevT

Autor: Horst B. (hobadberg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Detlev,

danke für den Hinweis. Denke das dieser Tread auf alle Fälle auch 
anderen weiterhilft. Denke so soll es in einem Forum sein.

LG Horst

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.