Guten Abend,
an meinem ATMega1284 hängt ein 12,288 Mhz Quarz.
Nachdem ich die Fuses verändert habe, funktioniert die Kommunikation gar
nicht mehr.
>avrdude: stk500v2_command(): command failed>avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: >Unknown
status 0x00
>avrdude: initialization failed, rc=-1> Double check connections and try again, or use -F to override> this check.>>>avrdude done. Thank you.
Die Fuses hatte ich auf folgende Werte gesetzt:
-U lfuse:w:0x7f:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
was eigentlich "Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time:
16K CK + 65 ms; [CKSEL=1111 SUT=11]" entsprechen sollte.
Was habe ich falsch gemacht und wie komme ich da am besten wieder raus?
Beste Grüße.
An den Fuses liegt es nicht.
Beschaltung des externen Quarzoszillators?
Oder hast Du tatsächlich nur einen Quarz angeschlossen? Dann hilft nur
noch einen richtigen Takt anzulegen.
Tom schrieb:> was eigentlich "Ext. Crystal Osc.; Frequency 8.0- MHz; Start-up time:> 16K CK + 65 ms; [CKSEL=1111 SUT=11]" entsprechen sollte.
Tut es, aber das willst Du garnicht haben.
Tom schrieb:> Was habe ich falsch gemacht
Du willst den 'Full Swing Oscillator' 0x7F 0x99 0xF7
Tom schrieb:> wie komme ich da am besten wieder raus?
Externen Takt anlegen und Fuses neu setzen.
Nur für das Verständnis: Warum muss ein externer Takt angelegt werden,
wenn der Quarz diesen schon liefern sollte? Externer Takt wäre doch wohl
eher notwendig, wenn die Einstellung ext. Clock gewesen wäre?
Welche Frequenz soll der zu anliegende Takt haben? Rechteck?
Ein Quarz liefert keinen Takt, sondern ist Bestandteil eines
Quarzoszillators.
Du hast Ext. Crystal Osc gefust. Das meint einen Quarzoszillator.
Für einen Quarz mußt Du etwas mit Crystal full swing osc. fusen.
1MHz Rechteck sollte es tun. Bei kleineren Frequenzen mußt Du mit den
ISP Takt des STK500 runtergehen.
Ein Quarz benötigt eine Schaltung, die ihn zum Schwingen anregt.
In einem Quarz-Oszillator ist diese Schaltung integriert. Deswegen hat
der auch zwei Anschlüsse mehr, für die Stromversorgung.
Tom schrieb:> Nur für das Verständnis: Warum muss ein externer Takt angelegt werden,> wenn der Quarz diesen schon liefern sollte?
Weil er ihn halt offensichtlich nicht liefert.
Das Problem ist eine Fehlanpassung, sprich: die verwendeten
Bürdekondensatoren passen nicht wirklich zum Quarz. Der LP-Oszillator,
den du da gefused hast, reagiert sehr empfindlich auf so eine
Fehlanpassung. Er schwingt dann einfach nicht.
Ein Weg wäre, auf FullSwing umzufusen, denn der ist deutlich toleranter
gegenüber nicht optimal angepassten Quarzen. Bloß brauchst du halt erst
mal einen Takt, um das tun zu können. Dazu kannst du temporär von außen
einen Takt einspeisen, der Quarz und die Bürdekondensatoren brauchen
dazu nicht entfernt zu werden.
Der richtige Weg ist aber: die Bürdekondensatoren zu tauschen, bis die
Sache auch als LP-Oszillator anschwingt. Dann ist der Quarz deutlich
besser angepasst, was immer sinnvoll ist. Ganz egal, ob dann letztlich
FullSwing oder LP gewählt wird.
c-hater hat Recht. Die Fuses wurden für einen Quarz eingestellt.
Die meisten Beiträge darüber sind davon ausgegangen, dass "External
Clock" eingestellt wurde, das ist aber nicht der Fall.
WIe dem auch sei, du kannst den Chip wieder beleben, indem du einen Takt
(z.B. von einem fix und fertigen Quarz-Oszillator) an den Pin XTAL1
anlegst.
Okay. Nur um sicher zu gehen, dass ich das Problem genau verstanden
habe:
Die Kapazitäten am Quarz wurden so schlecht gewählt, dass der MCU diesen
nicht zu schwingen bekommt. Hätte ich nun aber genau die richtige
Kapazität gewählt, dann hätte das ganze auch funktioniert?
Was macht Full Swing jetzt anders, dass dieser fehlertoleranter ist?
Tom schrieb:> Okay. Nur um sicher zu gehen, ..........
Nur um sicher zu gehen, mal so am Rande: nachdem du dich
bereits beim Quarz-Takt nicht besonders professionell angestellt
hast muss man auch die Frage stellen ob du deinem Controller
ausreichend Abblock-Kondensatoren nach Hersteller-Empfehlung
spendiert hast .... das hat nämlich massiven Einfluss auf
die zuverlässige Funktionsweise .... auch beim Flashen.
Was? Abblock-Kondensatoren? Was ist das? Braucht es bei mir
nicht, bei mir geht's auch ohne.
Tom schrieb:> Okay. Nur um sicher zu gehen, dass ich das Problem genau verstanden> habe:> Die Kapazitäten am Quarz wurden so schlecht gewählt, dass der MCU diesen> nicht zu schwingen bekommt. Hätte ich nun aber genau die richtige> Kapazität gewählt, dann hätte das ganze auch funktioniert?
So isses (unter der Annahme, das keine grundsätzlichen Schaltungsfehler
vorliegen).
> Was macht Full Swing jetzt anders, dass dieser fehlertoleranter ist?
Der packt schlicht mehr Energie rein.
Der Vorteil ist: der Oszillator läuft auch in stark störungsverseuchter
Umgebung stabil (aber auch nur dann, wenn der Quarz korrekt angepasst
ist!). Der Nachteil: er braucht deutlich mehr Strom als der
LowPower-Oszillator.
Arduino Fanboy D. schrieb im Beitrag #5876347:
> Also gefust für Oszillator und Quarz dran gebaut.> Das läuft nicht.
Bitte sieh dir die vom TO genannten Fuse Werte an. Er hat nicht auf
externen Takt gefused sondern auf Quarz. Insoweit ist alles in Ordnung.
Er wäre aber nicht der Erste, der sich bei den Bürde-Kondensatoren
geirrt hat - wobei 10pF Abweichung nicht tödlich sind. Meist hat man um
Zehnerpotenzen falsch gewählt / gelesen.
Arduino Fanboy D. schrieb im Beitrag #5876347:
> Du sagst, du hast einen Quarz montiert.> Du sagst, du hast für einen externen Oszilator gefust.
Nö, hat er nicht.
Im Ausgangspost steht
> -U lfuse:w:0x7f:m -U hfuse:w:0x99:m -U efuse:w:0xff:m
d.h. CKSEL3..0 = 1111, was lt. DB "Low Power Crystal Oscillator 8.0 -
16.0MHz" heißt, also Quarz. Für Quarzoszillator müsste "external Clock
CKSEL3..0 = 0000" programmiert sein, oder übersehe ich da was?
Warum der Quarz nicht schwingt, ist vielleicht eine Frage der Schaltung,
des Aufbaus oder anderer Faktoren, über die wir allerdings -wie leider
oft üblich- im Unklaren gelassen werden.
Übrigens ist CKDIV8 unprogrammiert, d.h. der Takt -wenn er denn Läuft-
wird noch durch 8 geteilt, der TO hat also 1,536 Mhz Takt zur
Verfügung.
Reinhard
Georg G. schrieb:> Er wäre aber nicht der Erste, der sich bei den Bürde-Kondensatoren> geirrt hat - wobei 10pF Abweichung nicht tödlich sind.
Für den LowPower-Oszillator SIND 10pF daneben i.d.R. tödlich. Genau
das ist wohl das Problem des TO...
Tom schrieb:> Was macht Full Swing jetzt anders, dass dieser fehlertoleranter ist?
Drückt mehr Energie in den Schwingkreis.
Falls du das ganze auf einem Steckbrett aufgebaut hast, unterschätze
nicht die Kapazitäten der Steck-Kontakte.