Archiv verlassen und diese Seite im Standarddesign anzeigen : Quarz verursacht Reset
Hi Leute,
ich habe folgendes Problem:
Wenn ich meinen ATMega32 mit einem 16MHz Quarz betreibe, dann resetet er in unregelmäßigen Abständen. Wenn ich den internen 8MHz Takt benutze läuft er einwandfrei. Auch mit einem 7.3MHz Quarz scheint es ohne Probleme zu funktionieren.
Fuses für Quarz: LFuse 0xFF
Fuses für 8MHz: LFuse 0xE4
HFuse immer 0xDF, also BOD deaktiviert.
Für die Spannungsversorgung benutze ich einen 7805T. Daran habe ich zur Zeit ein Steckernetzteil angeschlossen, welches auf 7,5V eingestellt ist und 700mA liefert.
Hat jemand ähnliche Erfahrung mit diesem Problem?
Reichen die 700mA etwa nicht aus, wenn der Mega32 auf 16MHz läuft?
(Es sind ansonsten noch zwei L297 und zwei L298, sowie ein MAX232 verbaut, werden jedoch nicht "aktiv" betrieben, und ein LCD display, welches einfach immer einen Wert hochzählt)
mfg
zerush
Hubert.G
28.02.2008, 17:38
Um so viel mehr Strom braucht der Mega32 nicht wenn er mit 16MHz läuft. Es wird sich da wohl eher um ein SW-Problem handeln. Wieso bist du sicher das es ein Reset ist?
Besserwessi
28.02.2008, 17:44
Die Atmels brauchen rund 1 mA pro MHz Taktfrequenz. Da sollten die rund 10 mA mahr nichts ausmachen. Mögliche Ursachen für sporadischen Reset sind: Softarefehler, fehlenden Entkopplungskondensatoren, weder pullup noch Kondensator an der Reset Leitung, instabile Versorgungsspanng (z.B. fehlende Kondesatoren am Regler).
Hi,
schonmal Danke für die Antworten!
@Hubert.G:
Ich habe nur ein kleines Testprogramm drauf. Dieses zählt eine 16Bit Variable hoch und gibt dessen Wert auf dem LCD aus. Anschließend noch eine Warte-Schleife, damit das nicht zu schnell geht und man auch was sieht. Beim 16MHz Quarz kommt er meist nichtmal bis 100 mit dem Zählen. Dann fängt er wieder bei 0 an. => Reset
Bei 8MHz läuft er einfach immer weiter...
@Besserwessi:
Ich habe an jeder erdenklichen Stelle 100nF Entkopplungskondensatoren. Die Eingangsspannung ist nochmal mit 1000uF gesichert, und die 5V nocheinmal mit 220uF. Ich denke das sollte reichen.
Die Reset Leitung ist mit 100k an 5V und zusätzlich durch 1uF Kondensator gepuffert.
Theoretisch sollte das reichen.
Und bei meinem kleinen Programm einen Softwarefehler, kann ich mir gar nicht vorstellen, vor allem da es ja mit 8MHz wunderbar läuft...
Ich bin echt ratlos und sehr verwirrt.
Guck mal nach, wer den Reset auslöst... steht in MCUCSR.
Es ist aber kein Mega8L, oder? Der geht nur bis 8MHz.
Die Reset Leitung ist mit 100k an 5V und zusätzlich durch 1uF Kondensator gepuffert.
Mach bei dem Widerstand eine Null weniger und einen Kondensator von 47 nF
Gruß Sebastian
Schließe mich izaseba an.
Guck mal nach, wer den Reset auslöst... steht in MCUCSR.
Es ist aber kein Mega8L, oder? Der geht nur bis 8MHz.
Nein ich habe einen Mega32 16P, der sollte 16MHz schaffen.
In MCUCSR habe ich nach dem Power-On 0x01 (ist ja auch richtig), nach einem gewollten Reset 0x02 (soweit auch gut), aber das was meiner da zeubert ergibt eine 0x00.
Was soll mir das sagen?
Zu den Widerständen:
Ich werde das mal testen, aber kann das wirklich dadran liegen? Also würde der Fehler dann nicht immer auftreten?
Sicher kann es das.
Wird der Reset für mehr als 2.5ms auf Low gezogen dann gibt es einen Reset.
Der Impuls kann also schon recht schmal sein.
Mit 100k am Reset als Pullup muß der Impuls nicht einmal viel Energie haben.
Der Plötzliche Stromhunger beim aktualisieren des LCD reicht da schon aus.
Wie oben schon gesagt wurde ist der Pullup mit 100k definitiv zu hoch
10k sind noch zu zahm.
Ich empfehle immer 5k oder sogar noch weniger.
Zusätzlich würde ich einen 47 oder 100nF Kerko vom Reset nach Masse anbringen.
Der schluckt dann die Nadelimpulse die doch noch kräftig genug wären.
StEndres
28.02.2008, 22:26
Hast du ein stabilisiertes Netzteil? Wenn du dir nicht sicher bist, dann dreh mal die Eingangsspannung eine Stufe höher und mach eine Diode in die + -Leitung zwischen Netzteil und erstem Kondensator.
Ich kann mich nur meinen Vorrednern anschliessen - versuche
die Versorgungsspannung sauber zu bekommen. Ich habe schon mal
Nadelimpulse auf dem Reset gesehen - die kammen vom µC. Eine
Kondensatorbatterie direkt am µC (10p, 1n, 10n, 100n) hat dem Ganzen
Abhilfe geschaffen.
Besserwessi
29.02.2008, 09:18
mehrere Kondensatoren an der Resetleitung sind nun wirklich übertrieben. Wenn schon so ein Aufwand dann bitte an der Versorgungsspannung und mit der Masse, Die Resetleitung sollte man besser kurz halten, da stören die extra Kondensatoren eher.
Außerdem spricht der Wert in MCUCSR dafür, das es gar kein externer Rest ist, sondern etwas anderes.
Da keine normale Resetquelle markiert ist, könnte es sich um einen Softwarefehler handeln: z.B. Stack überlauf, Fehler bei push/pop, eine fehlende ISR. Zum testen eventuell mal eine einfaches Testprogramm (led blinken ?) laufen lassen.
Sorry - ich meinte auch nicht an der Resetleitung, sondern
VCC und GND direkt unter dem Controller.
Ich erinnere mich noch an ein Resetproblem beim c't Bot. Dort war auch ein zusätzlicher Kondensator zwischen Vcc und GND am Atmega die Lösung.
Zusätzlich hatten Einige noch einen etwas dickeren Tantal direkt hinter dem Spannungsregeler zwischen Vcc und GND geschaltet. Ich weiß nicht mehr, was von beiden nun genau die Probleme behoben hat. Ich schätze mal Ersteres.
Hubert.G
29.02.2008, 12:32
Zeig doch einmal deine genaue Schaltung und das Layout, vielleicht kann man dann etwas genaueres sagen und muss nicht nur raten.
Also...
erstmal einen großen Dank an alle!!
Ich habe den Reset-Pullup nun auf 6k verkleinert und zusätlich mit 100nF gepuffert. Außerdem noch einen 100nF an VCC und wo ich grad dabei war dem LCD auch nochmal 100nF spendiert...
Trotzdem: Reset...Reset...........Reset....
Aber so schnell gibt man ja nicht auf, und siehe da... eine kalte Lötstelle an den Quarz-Kondensatoren! Neu gelötet, angeschaltet.... läuft wie ne 1 !!!
Man bin ich erleichtert ;-)
Gruß an alle,
zerush
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.