PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit atmega16 und 16MHz Quartz



Jokill
24.03.2012, 09:31
Hallo Zusammen,
wollte meinen Atmega16 mal mit einem 16MHz Quartz laufen lassen. Aber wenn ich den 16MHz-Quartz an den Atmega stecke funktioniert gar nichts mehr, d. h. ich kann nicht mal mehr die FuseBits setzen! Bei einem niedrigeren Quartz(6MHz) läuft alles problemlos. Hatte schonmal jemand ein ähnliches Problem?

Vielen Dank und nette Grüße!

Hubert.G
24.03.2012, 11:03
Wie sieht deine Schaltung aus? Wie sind die Fuses eingestellt?

Kampi
24.03.2012, 11:28
Hast du das Fusebit nicht von Low. Freq auf High Freq gestellt?
Du kannst nicht ohne weiteres den Quarz wechseln ;)

Jokill
24.03.2012, 14:32
Fuses sind folgende:
CKOPT = 1;
CKSEL1 = 1;
CKSEL2 = 1;
CKSEL3 = 1;
CKSEL0 = 1;
SUT1 = 1;
SUT0 = 0;

Aber beim 16Mhz-Quartz habe ich ja nicht einmal mehr zugriff auf die FuseBits, sogar wenn ich auf internen oszillator umgestellt habe. Ist der Quartz vielleicht kaputt?
10MHz Quartz klappt.

Kampi
24.03.2012, 14:52
Ja wenn du das falsche Quarz hast, kannst du gar nicht mehr auf den Controller zugreifen.
Hast du nen anderen 16MHz QUarz den du testen kannst.

oberallgeier
24.03.2012, 15:11
Fuses sind folgende:
CKOPT = 1; CKSEL0 ... 3 = 1; CKSEL2 = 1; SUT1 = 1; SUT0 = 0; ...SPIEN = ?? BOOTxyz = ??


Kennst Du dieses hier (klick) ? (http://www.engbedded.com/fusecalc/)


Und wenn nix mehr geht, geht damit vielleicht doch noch etwas (klick (https://www.roboternetz.de/community/threads/45827-Fuse-irrtümlich-auf-extern-Takt-Hier-die-einfachste-Lösung!?highlight=fuseretter) schon wieder).

Thomas E.
24.03.2012, 23:54
Wichtig wäre - wie Hubert weiter oben bereits geschrieben hat - der Schaltplan. Vielleicht hast du die Abblockkondensatoren vergessen oder der Quarz kann wegen fehlender oder falscher Kondensatoren gar nicht anschwingen....

Jokill
25.03.2012, 08:57
Schaltung ist die Standardschaltung die man auch überall findet. Kondensatoren hab ich drin. Alle anderen Quartze funktionieren ja, nur der mit 16MHz will nicht. Werde mir wohl einen anderen Quartz mit 16MHz besorgen und dann testen.

restliche FuseBits:
SPIEN=0
BOOTSZ1=0
BOOTSZ0=0
BOOTRST=1

Thomas E.
25.03.2012, 10:22
Vielleicht ist der Quarzkristall gebrochen. Meiner Erfahrung nach brechen Quarze innen sehr leicht, wenn man sie zum Beispiel fallen lässt.

oberallgeier
25.03.2012, 11:20
... wohl einen anderen Quartz mit 16MHz besorgen und dann testen ...Das würde ich auch machen. Ich würde auch gleich einen anderen Controller nehmen - und den aktuell benutzten als "Verdächtigen" erstmal auf ne Experimentierplatine verbannen. MÖGLICHERWEISE wäre noch eine längere StartUptime als Test sinnvoll, sprich SUT auf 11. Damit spendierst Du zusätzliche 60 ms für den StartUp - und WENN das dann klappt, fände ich es schon eher als leichten Schaden für den Controller (ohne die Beschaltung genau zu kennen).

Viel Erfolg . . .

Jokill
31.03.2012, 10:47
Danke für die vielen Tips.
Also hab das ganze jetzt mit einem neuen Quarz und Atmega probiert, hat aber nichts gebracht.
Allerdings bin ich jetzt einen Schritt weiter. Wenn ich meine Fuses auf internen Oszillator stelle kann ich den Controller programmieren, dann den quarz einlöten, fuses auf extern umstellen und alles funktioniert wunderbar! Nur muss ich den Quarz jedes mal wieder rauslöten wenn ich den Controllern beschreiben möchte oder die fuses verstellen.
Meine Schaltung ist folgende:
http://rn-wissen.de/images/3/30/Avrtutorial_grundschaltung_mitquarz.gif

hunni
01.04.2012, 14:21
Bist du dir wirklich sicher das es ein ATMEGA16 und kein ATMEGA16A oder so ist? Ansonsten klappt nämlich auch nichts. Es gibt auch den ATMEGA16V der arbeitet nur mit 10 MHZ (stromsparversion). Die Bezeichnung steht direkt aufn µC.

Ansonsten versuch mal folgende Einstellungen:

Low: 0xFF
High: 0xD9
AVRDUDE: -U lfuse:w:0xff:m -U hfuse:w:0xd9:m

Damit müsste es normalerweise Funktionieren.

Jokill
08.04.2012, 12:02
Ich benutze einen nagelneuen Atmega16-16PU. Kann das Problem auch am Prog-Kabel oder Ponyprog liegen?



Low: 0xFF
High: 0xD9
AVRDUDE: -U lfuse:w:0xff:m -U hfuse:w:0xd9:m

Sind das Fuseeinstellungen?

Kampi
08.04.2012, 13:41
Also ich benutze für meinen Mega32 diese Fusebits:

High: 0xD9
Low: oxE4

Und eingestellt ist das so:
http://img837.imageshack.us/img837/9204/unbenanntjzl.png (http://imageshack.us/photo/my-images/837/unbenanntjzl.png/)

Der Mega32 und der Mega16 sind direkt kompatibel (abgesehen vom Flash), von daher kannst du die Fusebits nehmen wenn du diese Einstellungen nutzen willst.
Und wenn du den Takt auf extern 16MHz stellst, kommen da genau die Fuseeinstellungen raus die du oben gepostet hast.

hunni
08.04.2012, 21:08
Sind das Fuseeinstellungen? Jap das sind die Fuseeinstellungen für einen normalen Atmega16. Wie gesagt ansonsten einfach diesen benutzen:
http://www.engbedded.com/fusecalc/

Jokill
09.04.2012, 14:19
Habe das ganze mal auf einem STK500 probiert und es klappt! Anscheinend ist mein anderes Progkabel für PonyProg das Problem. Ist ein selbstgebasteltes: http://s-huehn.de/elektronik/avr-prog/avr-seriell.gif

hunni
09.04.2012, 14:50
also ich kann diesen wirklich sehr empfehlen: http://shop.myavr.de/index.php?sp=article.sp.php&artID=200006. Das teil ist nicht so teuer und funktioniert 100%.

Jokill
14.04.2012, 11:09
Problem gelöst! Hab im ProgKabel einen kleineren Kondensator (68pF) eingelötet und jetzt funktioniert alles reibungslos.
Schöne Grüße und danke für die Hilfe.