PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATmega324P mit Uhrenquarz verfused



kaijoe
12.05.2013, 22:22
Hallo,

ich habe einen 32,768 kHz Quarz an den ATmega 324P angeschlossen und
über AtmelStudio 6.1 das Fusebit SUT_CKSEL auf EXTLOFXTAL_32KCK_65MS
eingestellt. Leider funktioniert der ATmega jetzt nicht mehr. Ich dachte
mir dann mit einem Oszillator 4 MHz könnte ich an XTAL1 den ATmega
wieder zum Leben erwecken. Ging leider auch nicht.
Ich programmiere den ATmega über ISP, d.h. die ISP Clock habe ich auf kleiner 1/4, also 2 kHz
und 4 kHz eingestellt.


Hat jemand eine Idee was ich noch machen könnte?


Vielen Dank,

Kai

Hubert.G
13.05.2013, 09:44
Hast du schon einen anderen Quarz probiert?
Die richtigen Kondensatoren laut Datenblatt eingebaut?
Mit der Frequenz an XTAL1 würde ich deutlich unter 100kHz bleiben.
Wenn das alles nicht greift wird nur HV-Programmierung bleiben.

oberallgeier
13.05.2013, 10:19
...32,768 kHz Quarz ... 324P ... Fusebit SUT_CKSEL auf EXTLOFXTAL_32KCK_65MS ... funktioniert ... nicht mehr ...Nach dem Fuserechner (klick hier) (http://www.engbedded.com/fusecalc/) sollte das keine Probleme geben - wenn Quarz, Kondensatoren etc. stimmen. In ähnlichen Fällen hatte schon mein Fuseretter (klick wieder) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!) geholfen - mit dem umstellen auf internen Oszillator, z.B. Int. RC Osc.; Start-up time: 6 CK + 65 ms; [CKSEL=0010 SUT=10] - - - und danach weiter sehen.


Viel Erfolg

kaijoe
13.05.2013, 10:38
Einen anderen Quarz habe ich nicht probiert, d.h. keinen 32 kHz Quarz. Werde mir heute aber einen holen.
Kondensatoren habe ich 22 pF genommen. Laut Datenblatt müssen es wohl 12.5 pF, bzw. 9 pF sein, wenn ich das richtig gelesen habe.
Ich habe gestern mit einem anderen ATmega einen Ausgang versucht auf 32 kHz zu takten (mit _delay_ms) und das Signal dann an
XTAL1 des verfuseden ATmega angeschlossen. Leider ohne Erfolg. Wenn ich das so mache, muss ich dann auch die Fuse CLKDIV8
beachten? D.h. wenn die 32 kHz angeschlossen werden, läuft der ATmega dann eigentlich mit 4 kHz? Wenn ja müsste ich die Clock speed des Programmers
ja eigentlich auf kleiner 1 kHz stellen? Oder?

Gruß
Kai

- - - Aktualisiert - - -


Nach dem Fuserechner (klick hier) (http://www.engbedded.com/fusecalc/) sollte das keine Probleme geben - wenn Quarz, Kondensatoren etc. stimmen. In ähnlichen Fällen hatte schon mein Fuseretter (klick wieder) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!) geholfen - mit dem umstellen auf internen Oszillator, z.B. Int. RC Osc.; Start-up time: 6 CK + 65 ms; [CKSEL=0010 SUT=10] - - - und danach weiter sehen.


Viel Erfolg

Den Fuseretter hatte ich nicht benutzt. Ich habe einen 4 MHz Oszillator an XTAL1 benutzt. Aber wahrscheinlich ist die Frequenz zu hoch. Kann das sein?

oberallgeier
13.05.2013, 10:44
... muss ich ... CLKDIV8 beachten? D.h. wenn die 32 kHz ... dann eigentlich mit 4 kHz ... Programmers ... auf kleiner 1 kHz ...Genau. Fabrikmässig ist ja der Controler üblicherweise auf 8 MHz intern eingestellt UND das CKDIV8 (heisst beim mega324P nicht CLKDIV8 - ist aber dasselbe) bremst den auf 1 MHz herunter. Also muss in Deinem Fall der Programmer bei gesetztem CKDIV8 auf max 1 kHz oder weniger gestellt werden.

kaijoe
13.05.2013, 11:13
so'n Mi..... Soweit bekomme ich den Programmer nicht heruntergestellt. Das kleinste, was geht ist 2.4 kHz.
Wenn ich mit einem externen Takt deutlich unter 100 kHz bleiben soll, kann ich dann einen Ausgang eines anderen
ATmegas auf ca. 90 kHz takten (Brechnung: 90 kHz / 8 / 4 = "2.8") ? Kann ich dann die 2.4 kHz Clockspeed des
Programmers einstellen?

Hubert.G
13.05.2013, 11:23
Sollte klein genug sein für den Takt.
GND Verbindung zwischen den beiden Kontroller nicht vergessen.

oberallgeier
13.05.2013, 15:24
... Das kleinste, was geht ist 2.4 kHz. Wenn ich mit einem externen Takt deutlich unter 100 kHz ...Den oben genannten Fuseretter will ich ja nicht anpreisen wie sauer Bier. Bei Langsamtakt ist er aber recht gut; mit dem hatte ich z.B. hier (klick) (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=444694&viewfull=1#post444694) bei 57k6 Bd an der RS232 einen Takt von 30 kHz geschafft:

................http://oberallgeier.ob.funpic.de/extTakt_XAL1_m32_1833.jpg (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?p=444694&viewfull=1#post444694)
................Bild mit 5V/Div, 0,1 ms/Div.
................Tastkopf auf Controller-GND und XTAL1.

Anmerkung: die knapp über 5V werden von dem im Thread beschriebenen Widerstand "abgefangen" - meinen Controllern hats nie geschadet.

Egal wie, ich wünsch Dir viel Erfolg.

kaijoe
13.05.2013, 21:33
Ich habe es hinbekomen.
Ich habe den 32,768 kHz Quarz angeschlossen und den Programmer im AtmelStudio auf 500 Hz eingestellt.
Jetzt habe ich einen 16 MHz Quarz angeschlossen, die Entsprechende Fuse richtig eingestellt und alles läuft.

Eine Frage habe ich allerdings noch. CKDIV8 ist gesetzt. Kann ich die Fuse einfach deaktivieren, sodass der ATmega mit dem 16 MHz läuft?

Hubert.G
14.05.2013, 10:24
Ja, einfach den Haken wegnehmen, ist wie ein Schalter.

kaijoe
14.05.2013, 11:40
Ok, werde ich heute Abend mal machen und schauen was passiert.

An alle nochmal vielen Dank für euere Hilfe.


Gruß
Kai