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.
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
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.
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).
>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.
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.
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
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.
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.
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.
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
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
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
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.
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.
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
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.
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.