Forum: Mikrocontroller und Digitale Elektronik Attiny mit Uhrenquarz


von Jesse (Gast)


Lesenswert?

Hi,

ich möchte eine Echtzeituhr mit dem Attiny261 bauen. Ich habe gelesen, 
daß man einen 32Khz Quarz direkt anschliessen kann.

Frage 1: was für einen Quarz brauche ich dafür, vor allem mit welcher 
Kapazität?

Frage 2: Wie Schalte ich per Software zwischen externem Quarz und 
internen RC-Oszillator um?

Danke im Voraus.

von Sascha W. (sascha-w)


Lesenswert?

Jesse schrieb:
> Hi,
>
> ich möchte eine Echtzeituhr mit dem Attiny261 bauen. Ich habe gelesen,
> daß man einen 32Khz Quarz direkt anschliessen kann.
ohne jetzt im Datenblatt nachgesehen zu haben - gehe ich mal davon aus 
das der das unterstützt (Timer2 - async.Mode)

> Frage 1: was für einen Quarz brauche ich dafür, vor allem mit welcher
> Kapazität?
32.768kHz, 6pF oder 12pF - meist weis man sowiso nicht was man bekommt

> Frage 2: Wie Schalte ich per Software zwischen externem Quarz und
> internen RC-Oszillator um?
gar nicht - die Fuses musst du so einstellen, das der tiny mit internem 
RC-Oszillator arbeitet, dann kannst du per Software den asyncronen Takt 
für den Timer aktivieren, der dann mit dem externen Quarz getaktet wird.

Sascha

von Thomas E. (thomase)


Lesenswert?

Jesse schrieb:
> ich möchte eine Echtzeituhr mit dem Attiny261 bauen. Ich habe gelesen,
> daß man einen 32Khz Quarz direkt anschliessen kann.
Den kannst du dann als CPU-Clock für alles benutzen.
Den Asynchron-Mode mit Timer 2 können nur die Atmegas. Attinys haben 
nicht mal einen Timer 2.

Wenn du eine Batterie-Ühr bauen willst, nimmst du einen Atmega48pa, für 
eine netzbetriebene Uhr suchst du mal nach Peter Danneggers "Die genaue 
Sekunde". Dann kannst du auch den 261 verwenden.

mfg.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Thomas Eckmann schrieb:
> Den kannst du dann als CPU-Clock für alles benutzen.

Würd ich vermutlich so machen. Viel Rechenpower braucht eine solche Uhr 
ja eh nicht, der ATtiny reicht bestimmt.

> Den Asynchron-Mode mit Timer 2 können nur die Atmegas. Attinys haben
> nicht mal einen Timer 2.

Stimmt, auch neuere ATtinys haben meist nur zwei Timer (0 und 1). Die 
Timer können allerdings auch asynchron betrieben werden, das heißt, sie 
können jeden beliebigen Takt verarbeiten, der von außen zugeführt wird 
(max. 1/4 des CPU-Takts).

von error (Gast)


Lesenswert?

>Die Timer können allerdings auch asynchron betrieben werden, das heißt, sie
>können jeden beliebigen Takt verarbeiten, der von außen zugeführt wird
>(max. 1/4 des CPU-Takts).
Dann braucht es aber einen Quarzoszillator und nicht nur den Quarz.

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

error schrieb:
>>Die Timer können allerdings auch asynchron betrieben werden, das heißt, sie
>>können jeden beliebigen Takt verarbeiten, der von außen zugeführt wird
>>(max. 1/4 des CPU-Takts).
> Dann braucht es aber einen Quarzoszillator und nicht nur den Quarz.

Völlig richtig. Deswegen lieber gleich das Quarz für den 
Mikrocontroller-Takt verwenden. Bei einem so langsamen Takt braucht der 
ATtiny auch nur sehr wenig Strom.

von Sascha W. (sascha-w)


Lesenswert?

Markus W. schrieb:
> Völlig richtig. Deswegen lieber gleich das Quarz für den
> Mikrocontroller-Takt verwenden. Bei einem so langsamen Takt braucht der
> ATtiny auch nur sehr wenig Strom.
das schon, aber man will ja auch noch an die Daten rankommen und bei 
32kHz Takt wird schon alles recht langsam.

Sascha

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Sascha Weber schrieb:
> das schon, aber man will ja auch noch an die Daten rankommen und bei
> 32kHz Takt wird schon alles recht langsam.

Ach was, 32 kHz ist gar nicht so langsam - ok, vorausgesetzt, man 
programmiert in Assembler.

von Jesse (Gast)


Lesenswert?

Danke schon mal für die vielen Antworten.

Das Problem ist, daß ich außerdem noch eine schnelle Clocksource für PWM 
etc benötige,
und die Atmegas können wieder keinen High-Speed PWM.

Ich denke, ich werde einen externe Echtzeituhr verwenden.

von (prx) A. K. (prx)


Lesenswert?

Jesse schrieb:

> Das Problem ist, daß ich außerdem noch eine schnelle Clocksource für PWM
> etc benötige, und die Atmegas können wieder keinen High-Speed PWM.

Soweit ich erkennen kann ist der Tiny 261 in der Lage, gleichzeitig sein 
Highspeed-PWM via PLL aus dem internen RC-Oszillator und den 
Prozessortakt aus einem 32KHz Uhrenquarz ableiten. Du hast also 
einerseits eine schnelle Clocksource für PWM und andererseits eine 
langsame für die Uhr.

Wobei eine Uhr auch mit einem höherfrequenten Quarz funktioniert. Da der 
Prozessortakt durch einen per Software programmierbaren Prescaler läuft 
lässt sich der Stromverbrauch dadurch drosseln, nur der Oszillator 
selbst braucht dann etwas mehr Strom. Hängt halt davon ab, wieviele 
Mikroampere akzeptabel sind.

von spess53 (Gast)


Lesenswert?

Hi

>Soweit ich erkennen kann ist der Tiny 261 in der Lage, gleichzeitig sein
>Highspeed-PWM via PLL aus dem internen RC-Oszillator und den
>Prozessortakt aus einem 32KHz Uhrenquarz ableiten. Du hast also
>einerseits eine schnelle Clocksource für PWM und andererseits eine
>langsame für die Uhr.

Nein. Bei Verwendung der PLL ist nur interner Takt mit 16 oder 8 MHz 
möglich.

MfG Spess

von Peter D. (peda)


Lesenswert?

spess53 schrieb:
> Bei Verwendung der PLL ist nur interner Takt mit 16 oder 8 MHz
> möglich.

Nö, es geht beides:
"The PLL is enabled when the CKSEL fuses have been programmed to 0x0001
(the PLL clock mode is selected) or the PLLE bit has been set to one."


Peter

von spess53 (Gast)


Lesenswert?

Hi

>Nö, es geht beides:
>"The PLL is enabled when the CKSEL fuses have been programmed to 0x0001
>(the PLL clock mode is selected) or the PLLE bit has been set to one."

Im aktuellen Datanblatt steht:

The internal PLL is enabled when CKSEL fuse bits are programmed to 
‘0001’ and the PLLE bit of PLLCSR is set. The internal oscillator and 
the PLL are
switched off in power down and stand-by sleep modes.

MfG Spess

von (prx) A. K. (prx)


Lesenswert?

Peter Dannegger schrieb:

> "The PLL is enabled when the CKSEL fuses have been programmed to 0x0001
> (the PLL clock mode is selected) or the PLLE bit has been set to one."

Mit CKSEL=0001 ist aber der Quarzoszillator abgeschaltet.

von Peter D. (peda)


Lesenswert?

12.12.6 PLLCSR – PLL Control and Status Register


Peter

von (prx) A. K. (prx)


Angehängte Dateien:

Lesenswert?

6.2 Clock Sources. 0001 => XTALx sind I/O-Pins.
6.2.2 High-Frequency PLL Clock

Technischer Hintergrund könnte sein, dass der Timer so zwar schneller 
läuft als die CPU, aber aus der gleichen Taktquelle abgeleitet und damit 
nicht asynchron ist. Folglich keine Synchronisierung zwischen CPU und 
Timer erforderlich ist.

Man kann zwar die PLL programmiert abschalten, aber das ändert nur die 
Taktfrequenz, nicht die Taktquelle.

von Peter D. (peda)


Lesenswert?

A. K. schrieb:
> Man kann zwar die PLL programmiert abschalten, aber das ändert nur die
> Taktfrequenz, nicht die Taktquelle.

Nur wenn sie nur Timertakt ist.

Wenn sie gleichzeitig auch CPU-Takt ist, ist sie immer an:
"When the PLLE is set, the PLL is started and if needed internal 
oscillator is started as a PLL reference
clock. If PLL is selected as a system clock source the value for this 
bit is always 1."


Peter

von (prx) A. K. (prx)


Lesenswert?

Ok, ich glaube ich habe Atmels Sprache nun dekodiert.
- Wenn CKSEL == 0001, dann ist die PLL eingeschaltet.
- Wenn CKSEL != 0001, dann wird in diesem Satz überhaupt nichts gesagt.
Damit wäre aber asynchroner PLL-Betrieb möglich, wie ich ursprünglich ja 
annahm.

Da andererseits 0001 bedeutet, dass die CPU von der PLL versorgt wird, 
und damit PLLE automatisch gesetzt ist, darf man die Bedingung in 6.2.2 
"... and PLLE bit of PLLCSR is set" wohl als eher irreführend als 
hilfreich ansehen.

Damit wäre spess53 wieder am Zuge.

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


Lesenswert?

Jesse schrieb:
> Das Problem ist, daß ich außerdem noch eine schnelle Clocksource für PWM
> etc benötige,
> und die Atmegas können wieder keinen High-Speed PWM.

Dann nimm doch einen ATtiny261 als Koprozessor.  Ich denke, das ist
auch die Idee dahinter: wer eine Highspeed-PWM machen will, will
oft Motoren oder sowas treiben, die dann zuverlässig laufen muss.
Da macht es sich gut, wenn man auf diesem Controller nur eine kleine,
überschaubare Aufgabe abarbeiten lässt und den Rest dem Hauptprozessor
überlässt.

Man muss ja nicht unbedingt mit Gewalt alles in einen Chip werfen.

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.