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?
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
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?
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.
Mach bei dem Widerstand eine Null weniger und einen Kondensator von 47 nFDie Reset Leitung ist mit 100k an 5V und zusätzlich durch 1uF Kondensator gepuffert.
Gruß Sebastian
Linus TorvaldSoftware is like s e x: its better when its free.
Schließe mich izaseba an.
Das Gegenteil von "gut" ist "gut gemeint"!
Nein ich habe einen Mega32 16P, der sollte 16MHz schaffen.Zitat von uwegw
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.
Gruß
Ratber
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.
Lesezeichen