Verfuster ATMega32, 32khz Quarz

OP #2923888
Lesenswert?

Hallo,

ich bin sehr neu auf dem Gebiet und habe das erste mal einen Chip 
gefust. Natürlich spricht das Ding jetzt kein Wort mehr mit mir. Vlt 
könnt ihr mir helfen.

Ich versuche eine simple Digitaluhr zu bauen und habe daher einen 
32.768khz Quarz beim Conrad besorgt. Ein Display 1x16Zeilig konnte ich 
schon ansprechen und war sehr glücklich ;-)

Jetzt war es an der Zeit für den externen Oszilator, um eine Sekunde 
korrekt zu definieren und so habe ich mit dem Fusecalc 
(http://www.engbedded.com/fusecalc) die Config
Low: 0xC9, High 0x89 eingestellt.

Aufgebaut habe ich es wie im Datenblatt beschrieben:
http://www.mikrocontroller.net/attachment/79603/crystal.jpg

Jetzt habe ich schon selbst gemerkt, dass CKOPT eingeschaltet ist und 
somit die internen Kondensatoren ebenfalls aktiv sind. Daher habe ich 
den aufbau auch einmal ohne die 22pF aufgebaut. Ging leider auch nicht.

Jetzt habe ich mehrere Fragen:
1) Kann ich den Chip mit dem derzeitig Fusesetting noch irgendwie 
retten?
2) War meine Überlegung grundsätzlich richtig? Also mit dem 32khz und 
den fuses?
3) Was wäre die korrekte fuseconfig gewesen?

Viel Text und hoffentlich viel Erkenntnisse für mich.

Danke fürs Lesen und bis bald
Christian
#2923912
Lesenswert?

Puh.
So einfach ist das jetzt nicht mehr.
Dreh mal die ISP-Programmierfrequenz so tief runter, wie es nur geht. 
Die darf nicht höher als 1/4 deiner µC-Taktfrequenz sein. Und bei 32kHz 
wirds da dann mit den üblichen Einstellungen schon eng.

Generell: Den 32kHz Quarz würde ich nicht als Taktversorgung des Mega 
verwenden. Wenn, dann kommt der als externer QUarz an den Timer 2 und 
taktet den Timer 2 direkt.

Da aber auch dann der Takt nicht 100% exakt 32768 Hz sein wird, muss der 
genauso mit Kondensatoren abgeglichen werden, wie jeder andere Quarz 
auch. Daher meine persönliche Meinung: Bringt nicht so viel, wie es sich 
zunächst anhört. Da nehm ich lieber einen Baudratenquarz, mit dem ich 
mit einem schönen Vorteiler am Timer 1 auf einen schönen Basistakt 
komme, und gleiche das ganze mit dem CTC Modus sauber ab. Dann hab ich 
dadurch wenigstens noch eine vernünftige Arbeitsgeschwindigkeit des µC, 
so dass der seine Aktionen in vertretbarer Zeit erledigen kann. Und ich 
denke mal in Summe wird unterm Strich auch kein höherer Stromverbrauch 
rauskommen. Sicher, bei einer geringeren Taktfrequenz ist der 
Stromverbrauch geringer, dafür ist der µC aber auch langsamer und es 
dauert länger, bis er wieder in den Sleep kommen kann. Ich habs 
allerdings nicht gemessen, d.h. ich kanns nicht beweisen.
(Firma: TravelRec.) Persönliche Seite #2924083
Lesenswert?

Christian L. schrieb:
> Jetzt war es an der Zeit für den externen Oszilator, um eine Sekunde
> korrekt zu definieren und so habe ich mit dem Fusecalc
> (http://www.engbedded.com/fusecalc) die Config
> Low: 0xC9, High 0x89 eingestellt.
>
> Aufgebaut habe ich es wie im Datenblatt beschrieben:

Wenn Du das Datenblatt richtig gelesen hättest, dann hättest Du erkannt, 
dass der Uhrenquarz lediglich als Taktgeber für Timer2 im asynchronen 
Modus gedacht ist, nicht aber als Taktversorgung für den Mega selbst. 
Gut, Anfängerfehler. Um den Stein wieder zum Leben zu erwecken, musst Du 
den Uhrenquarz abklemmen und eine Frequenz größer 1Mhz an XTAL1 
schalten. Diese kann zum Beispiel aus einem Blechbüchsen-Oszillator von 
einer alten Grafik- oder Netzwerkkarte stammen oder Du baust Dir einen 
Generator mit einem CD4093, einem Widerstand 4k7 und einem Kondensator 
470pF auf. Dann versuchst Du über ISP die Fuses wieder auf internen 
Generator zu fusen.

Karl Heinz Buchegger schrieb:
> Da aber auch dann der Takt nicht 100% exakt 32768 Hz sein wird, muss der
> genauso mit Kondensatoren abgeglichen werden, wie jeder andere Quarz
> auch. Daher meine persönliche Meinung: Bringt nicht so viel, wie es sich
> zunächst anhört.

Der große Vorteil eines Uhrenquarzes an Timer2 ist die vollkommen 
asynchrone Betriebsweise. Man kann so den internen Generator kalibrieren 
und den Controller zur Laufzeit mit einer beliebeigen Taktrate von ein 
paar kHz bis zu etwa 14Mhz laufen lassen. Das ergibt bei den klassischen 
Megas die größte Flexibilität des Verhältnisses von Performance und 
Stromverbrauch.

Karl Heinz Buchegger schrieb:
> Sicher, bei einer geringeren Taktfrequenz ist der
> Stromverbrauch geringer, dafür ist der µC aber auch langsamer und es
> dauert länger, bis er wieder in den Sleep kommen kann. Ich habs
> allerdings nicht gemessen, d.h. ich kanns nicht beweisen.


Das stimmt. Unterm Strich ist es energietechnisch günstiger, den 
Controller schneller zu takten und nur kurz laufen zu lassen. Am 
schnellsten kommt der Controller mit dem internen Generator in Gang, was 
lediglich 6 Clocks dauert. Externe Quarze brauchen -zig Millisekunden, 
bis der Controller stabil läuft. Der Uhrenquarz kann im Sleep 
weiterlaufen, den Controller wecken und verbraucht gerade mal um 10µA. 
Bei neueren PicoPower-AVRs nur um 1µA.
OP #2924154
Lesenswert?

> Knut Ballhause schrieb:
> Wenn Du das Datenblatt richtig gelesen hättest, dann hättest Du erkannt,
> dass der Uhrenquarz lediglich als Taktgeber für Timer2 im asynchronen
> Modus gedacht ist, nicht aber als Taktversorgung für den Mega selbst.
> Gut, Anfängerfehler.

Hallo,

vielen Dank für die Rückmeldungen! Anfängerfehler ist völlig korrekt ;-) 
Aber darum gehts ja auch. ich verdiene mein Geld ja mit etwas anderem. 
Ich möchte einfach nur ein bischen basteln - und lernen!

Ich werde versuchen den Mega wieder zum Leben zu erwecken und 
anschließend die Clock des 2. Timers extern befüttern.

Danke nochmal für die Nachrichten.

Gruß
Christian
#2924164
Lesenswert?

Knut Ballhause schrieb:

> Wenn Du das Datenblatt richtig gelesen hättest, dann hättest Du erkannt,
> dass der Uhrenquarz lediglich als Taktgeber für Timer2 im asynchronen
> Modus gedacht ist, nicht aber als Taktversorgung für den Mega selbst.

Zu meiner großen Überraschung stimmt das allerdings nicht ganz. Im 
Datenblatt des Mega32 ist tatsächlich angegeben, das man einen 32kHz 
Quarz als 'Device Clock Source' benutzen kann. Da gibt es sogar eine 
eigene Fuse-Stellung dafür.

Entweder das, oder der entsprechende Abschnitt ist tatsächlich derart 
missverständlich geschrieben, dass dieser Fehler mehr als nur 
verzeihlich ist.
OP #2924187
Lesenswert?

Karl Heinz Buchegger schrieb:
> Knut Ballhause schrieb:
>
>> Wenn Du das Datenblatt richtig gelesen hättest, dann hättest Du erkannt,
>> dass der Uhrenquarz lediglich als Taktgeber für Timer2 im asynchronen
>> Modus gedacht ist, nicht aber als Taktversorgung für den Mega selbst.
>
> Zu meiner großen Überraschung stimmt das allerdings nicht ganz. Im
> Datenblatt des Mega32 ist tatsächlich angegeben, das man einen 32kHz
> Quarz als 'Device Clock Source' benutzen kann. Da gibt es sogar eine
> eigene Fuse-Stellung dafür.
>
> Entweder das, oder der entsprechende Abschnitt ist tatsächlich derart
> missverständlich geschrieben, dass dieser Fehler mehr als nur
> verzeihlich ist.

Hi,

das stimmt. Deshalb habe ich das ja auch nur gemacht. Dort steht, dass 
wenn man die Clock mit dem 32khz extern ansteuert solle man die Clock 
Fuses auf 1001 setzen. Das hatte ich dann ach geamcht. leider steht dort 
nicht, wie man dann SUT1 und SUT2 sowie CKOPT setzen muss. Ich denke, 
dass ich die 4 Clock-Bits korrekt gesetzt habe und mein Fuse-Fehler dann 
in einem Bit der drei anderen SUT1+2 und/oder CKOPT zu suchen ist.

By the way, das war meine eigentliche Frage in diesem Thread ;-)

Gruß
Christian
(Firma: TravelRec.) Persönliche Seite #2924502
Lesenswert?

Karl Heinz Buchegger schrieb:
> Zu meiner großen Überraschung stimmt das allerdings nicht ganz. Im
> Datenblatt des Mega32 ist tatsächlich angegeben, das man einen 32kHz
> Quarz als 'Device Clock Source' benutzen kann. Da gibt es sogar eine
> eigene Fuse-Stellung dafür.

Huh?! Oh, dann muss ich mich entschuldigen. Den Opa M32 hatte ich so 
nicht in Erinnerung. Aber im Übrigen gilt oben Gesagtes ;-).

Danke für den Hinweis, Karl Heinz!
#2924546
Lesenswert?

Woher weißt du, dass der M32 nicht mehr läuft?

Nochmal:
Die ISP-Programmierfrequnenz darf nicht höher sein, als 1/4 der 
Takfrequenz des Controllers. Wenn die zu hoch, dann kannst du auf den µC 
nicht mehr zugreifen!

Und wenn dein M32 jetzt mit 32kHz läuft, dann musst du mit der 
ISP-Frequenz in den Keller gehen!
OP #2924693
Lesenswert?

(Firma: tsx89) Persönliche Seite #2925509
Lesenswert?

Knut Ballhause schrieb:
> Ist das sinnhaft, dass in den Programmierfenstern der falsche Controller
> angegeben ist? Du schreibst von einem Mega32, angegeben ist der
> Mega8535.
>
> Edit: die Signatur stimmt auch nicht, sollte für den M32 0x1E 0x95 0x02
> lauten

Ohne Sinn: Meinst du die Screenshoots von der Koreanischen Seite, die 
der Thread-Ersteller wahrscheinlich nur zufällig herausgesucht und 
gepostet hat, um das Proggi zu zeigen? *duck & weg*
Gast #3778338
Lesenswert?

ich hoffe Du hast dran gedacht, auf dem Breadboard  kannst Du schlecht 
eine Quartzschaltung mit nur 22pF aufbauen.
Denn das Steckbrett wird selbst schon einige 10pF haben!
Entweder biegt man die Pins für den Quartz am Atmega hoch und lötet den 
Quartz direkt dran oder man nimmt eine externe Taktquelle.
Es gibt fertige Platinen mit einer RTC zu kaufen. Mit Ds1307 oder noch 
besser Ds3231.
Die geben den 32kHz Uhrentakt fertig aus und zusätzlich haben die eine 
Batterie und eine Uhr die weiter läuft.
Dazu muss man sich allerdings ein wenig mit TWI oder I2C oder IIC 
auseinander setzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren