PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uhrenquarz an Timer1



Icon2k
24.12.2010, 15:27
Hallo,
ich habe einen ATmega32, der momentan mit dem internen 1MHz Takt und später über ein externen Quarz zwischen XTAL1 und 2 auf 16MHz getaktet werden soll.
Ich will Timer1 mit einem 0,03MHz Uhrenquarz ( http://goo.gl/0dMlX ) hochzählen lassen.

Ich habe aber keine Ahnung wie das Funktionieren soll. Im RN Wissen ( http://goo.gl/izDVl ) habe ich die Pierce Schaltung gefunden ... mir ist aber nicht klar wie dieses Schaltung funktioniert und was der Pfeil mit dem Ring an der Spitze für ein Bauteil ist.

Jetzt meine Frage:
Gibt es bessere Alternativen wie die Pierce Schaltung, wenn ja welche, wenn nicht, was ist das Bauteil mit dem Pfeil/Ring Symbol?

MfG Icon

walterk
24.12.2010, 19:15
Hallo Icon2k,

mit dem Timer 2 ist dein Vorhaben möglich. Lt. Datenblatt des Atmega32, Seite 129, brauchst du lediglich einen 32768Hz Quarz mit dem TOSC1 Pin (=PORT C6) verbinden.

Der Timer 2 ist der einzige, welcher im asynchronen Modus betrieben werden kann.

Die CPU-Frequenz muss mindestens vier Mal höher sein, als die Quarzfrequenz am TOSC1 Pin.

Frohe Weihnachten,

Walter

Vitis
25.12.2010, 09:34
Quark ... zwischen TOSC 1 und 2 kommt der Uhrenquarz.
Alle Timer können als Counter asynchon laufen, aber nur auf dem
Timer is n Schwingkreis für nen Uhrenquarz mit drinnen.

DB Seite 29:

For AVR microcontrollers with Timer/Counter Oscillator pins (TOSC1 and TOSC2), the crystal is connected directly between the pins. No external capacitors are needed. TheOscillator is optimized for use with a 32.768 kHz watch crystal. Applying an external clock source to TOSC1 is not recommended.

Die CPU-Frequenz kann auch 0 sein, im Sleepmode, der Timer kann
per Interrupt den Controller aus dem Tiefschlaf holen.


DB Seite 31:

Power-save Mode: When the SM2..0 bits are written to 011, the SLEEP instruction makes the MCU enter Power-save mode. This mode is identical to Power-down, with one exception:
If Timer/Counter2 is clocked asynchronously, i.e., the AS2 bit in ASSR is set,
Timer/Counter2 will run during sleep. The device can wake up from either Timer Overflow or Output Compare event from Timer/Counter2 if the corresponding
Timer/Counter2 interrupt enable bits are set in TIMSK, and the Global Interrupt Enable bit in SREG is set.

Besserwessi
25.12.2010, 10:09
Man braucht zum Quarz an Timer2 (genauer als Resonator zum 2 ten Oszillator, der dann an timer 2 geht) zusätzlich noch 2 Kondensatoren (ca- 10-20 pf) nach Masse.

Vorne im Datenblatt steht zwar das man auch intern Kondensatoren dazu schalten könnte. Hinten in den Errata (Fehlerbeschreibungen) steht dann aber dass die internen Kondensatoren nicht funktionieren.

Der Pfeil mit den Kreis ander Spitze ist übrigens ein NOT Logic-gatter.
Wegen des Stromverbrauches ist ein externer 32 kHz Oszillator und dann an T1 in der Regel keine gute Lösung. Den 32 kHz Takt nimmt man hauptsächlich für Anwendungen mit sehr niedrigem Stromverbauch.

Icon2k
25.12.2010, 12:38
Also brauch ich den Uhrenquarz nur mit 2 Kondensatoren zwischen TOSC1 und 2 hängen .. perfekt danke euch! Ist ein bisschen einfacher wie die Pierce-Schaltung :-)

Vitis
26.12.2010, 14:30
Also bei mir in der Anwendung hab ich keine zusätzlichen Kondis am Uhrenquarz.
Einfach dran gelötet und gut ist ... :)

Icon2k
26.12.2010, 15:19
Mh, ja es funktioniert auch ohne, aber irgendwie sieht man überall 2 Kondensatoren nach dem Quarz an GND. Ich weis nicht warum, aber wenns alle machen wirds schon stimmen :-)

hunni
02.01.2011, 23:10
Kannst du das auch nicht rein Softwaremäßig lösen, ich meine wenn du weist, dass du mit 330 KHZ arbeiten willst, dann mache es so wie hier im Beispiel mit Timerüberlauf:
http://www.rn-wissen.de/index.php/Bascom_und_Timer
Ich weiss ja jetzt nicht mit welcher Sprache du proggst, aber Bascom ist realitiv einfach in alle anderen Programmiersprachen zu übertragen.
Wäre vielleicht eine Alternative.

Gruß Hunni und frohes Neues :D

Icon2k
03.01.2011, 13:00
Ja, es wäre auch eine Softwarelösung möglich, aber jetzt hab ich schon ein Uhrenquarz und mit dem integrierten Schaltkreis des Atmegas ist das die einfachste lösung.
Außerdem hat der Uhrenquarz eine viel passendere Frequenz, als der Taktquarz. 32,768kHz / 256 (Prescale) / 256 (8Bit Timer) = 0.5
==> Ein Interrupt alle 2 Sekunden,
für eine Uhr, wie die QlockTwo, die nur 5Min Schritte zeigt, perfekt!
Frohes Neues!

BTW: Ich programmiere in C, da ist es aber auch nicht schwerer ;-)

hardware.bas
03.01.2011, 14:29
Im AVR-Buch von Roland Walter ist eine Lösung beschrieben, wie
der Uhrenquarz Nutzung finden kann. Leider kann ich jetzt nicht mit
praktischen Tips dienen, da ich nicht nachgebaut habe, da ichs nicht
brauche. Der bzw. die Artikel sind in diesem Buch sehr gut verständlich
erklärt, natürlich meist in der Praxissprache BASCOM. VG Micha

hunni
03.01.2011, 15:09
BTW: Ich programmiere in C, da ist es aber auch nicht schwerer
Ich weiss, in der Schule programmieren wir in C son anno tobak 8051. So war das auch net gemeint, ich benutze Bascom und C, je nachdem was ich brauche, aber hauptsächlich progge ich in Bascom. Diese Sprache ist vorallem toll für Beispiele, weil sie so einfach ist.

Super dass das mit dem Uhrenquarz klappt, wie gesagt, meines war ja nur ein Vorschlag.

Weiterhin viel Erfolg bei dem Projekt.

Gruß Hunni

Icon2k
03.01.2011, 17:59
Nein, ich wollte keine C/Bascom diskussion auslösen, ich dachte nur du hast gefragt :-)
Das sind immer diskussionen die zu nichts führen, weil beides irgendwo seine starken und vorteile hat

hunni
03.01.2011, 23:03
Ohh.... so war das garnicht gemeint, aber ok.

Hardy_JW
03.01.2013, 08:39
Ich kann nur empfehlen, bei einem Quarz auch die empfohlenen Kondensatoren anzuschließen. Ich habe den 32 kHz erst einmal nur in die Pins direkt neben den ATmega8A gesteckt (eigenes Experimentierboard) und es lief. Beim 2. ATmega, gleicher Quarz, lief nix mehr an.

Ich spendiere auch immer einen PullUp am /Reset (10 .. 47K) und einen 100 nF für die Versorgungsspannung und meist auch noch nen Elko von 47 oder 100 uF. Und ein Reset-Taster ist was Feines, zumindest beim Probeaufbau.

Es gibt nichts schlimmeres als eine Hardware, die zunächst läuft und dann sucht man die Fehler gaaanz woanders.