PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega32 führt Program nicht aus [gelöst]



damfino
11.12.2009, 19:10
Hallo Leute,
meine Atmegas 32 wollen einfach nicht mehr das Programm ausführen, und mir sind mittlerweile die Ideen ausgegangen, vielleicht fällt jemanden etwas dazu ein.

Die Vorgeschichte:
Es gab einmal einen praktisch funktionierenden Roboter, als bei Motorentests eine Schraube auf die Platine kam, und dadurch einer der 2 Motortreiber in Flammen stand.
Der defekte Chip wurde aus dem Sockel entfernt, Roboter neu gestartet, aber nichts ging mehr. Atmega getauscht, lässt sich nicht flashen. Wieder getauscht, auch dieser geht nicht flashen.
Die 3 Stück wurden in einem anderen System getestet, sind wirklich defekt, super, einer davon war nagelneu, dh schon defekt gekauft.
Ebenso wurde mein Programmer getestet, der funktioniert.

Wieder 2 Stück gekauft, diese kann ich jetzt flashen, aber das Programm startet immer noch nicht.
Spannung ist ok: 5,04V
Die Leitungen zu den Sensoren und LCD sind getrennt, ebenso die Leitungen zum defekten Motortreiber. Der 2. Motortreiber ist aus dem Sockel entfernt.
Angeschlossen sind nur die ISP Pins, Quarz, PB0 und PB1 für die Leds.
Reset ist über 10k an 5V angeschlossen. An den ISP Pins gehen über 1k die Leitungen zum LCD, aber diese Leitungen sind alle abgesteckt.

Beim flashen schalte ich mit einem Schalter den Reset auf 0V, da dies der Programmer nicht macht.

Wie gesagt, ich kann das Programm rüberspielen, (AVR Studio mit USB Programmer), angeblich sind die Daten korrekt. Eigenartig wird es bei den Fuse Bits, diese kann ich nur korrekt lesen und schreiben wenn ich den Atmega nicht auf Reset schalte. Ist der auf Reset, sind alle Fusebits angehakt, schalte ich den Reset aus sehe ich nur die Fusebits die ich vorher wirklich gesetzt habe.
Dieses Verhalten ist neu, früher war beim Programmieren der Atmega immer auf Reset geschaltet. Spannungsversorgung kommt vom Programmer, Akku ist abgesteckt.

Das Programm ist seit Wochen unverändert, es lässt eine Led 5x blinken, dann erst würden die Motoren starten wenn die Motortreiber da wären.

Wenn die Atmegas jetzt programmiert sind, leuchten beide Leds fix, sonst passiert nichts. Mit unprogrammierten Atmegas haben sie nicht geleuchtet.

Ich habe auch internen Takt probiert falls der Quarz was haben sollte, bei 8Mhz internen Takt ist es mal finster, mal blinken die Leds irgendwie, mal leuchten sie dauernd.
Beim 16Mhz Quarz leuchten sie dauernd.

Was kann man noch alles probieren?
Ich habe praktisch alles vom Controller entfernt was früher so angeschlossen war, alle Lötstellen nachgelötet, Sichtkontrolle sowieso.
Kann ja nicht sein dass schon wieder 2 neue Controller defekt sind?

LG

Edit
----
Ich habe das LED Blinkprogramm von RN Wissen raufgespielt da es meine vorhandene LED anspricht, das funktioniert mit 1, 2, und 4 Mhz internen Takt, mit 8Mhz intern oder 16Mhz Quarz geht nichts.
Meine eigenen Programme gehen auch nicht mit 1 Mhz....
Kann es sein das der Quarz defekt ist und alles stört? Ich kann aber die Fuses auf den Quarz setzen, und wieder rückgängig machen, somit sollte er funktionieren????

021aet04
11.12.2009, 20:04
Hast du ein Steckbrett, auf dem du die Megas testen könntest? Schreibe einmal ein Programm, in dem du z.B. eine Led mit einem Taster ein bzw. ausschalten kannst (auf dem Steckbrett). Hast du nur die Hexfile hochgeladen oder das Programm neu übersetzt. Vielleicht stimmt mit der Hexfile etwas nicht.

PS: Hast du bei der Resetleitung die Spannung gemessen?

MfG Hannes

damfino
11.12.2009, 20:15
Steckbrett habe ich keines. Am Reset hat es 5V, mit dem Schalter geht es auf 0V.
Von rn-wissen habe ich das Hexfile für die blinkende LED hochgeladen.
Meine Programme habe ich inzwischen mit mehreren Optimierungseinstellungen neu kompiliert, die gehen einfach nicht mehr.

Beim Motortreiber Crash können nur die 3 Signalleitungen Mist am Controller verursachen, die Leitungen haben aber 1k in Serie geschalten, der Controller ist inzwischen neu, die Leitungen sind inzwischen ggekappt, es sind nur mehr ein paar Widerstände und Kondensatoren übrig, die alle 12V aushalten.

LG

021aet04
11.12.2009, 20:23
Ich schaue bei mir wie das mit den Fuses ist bei Reset high und low. melde mich dann wieder. Sonst hätte ich keine vermutung. Hast du Bilder von Ober und Unterseite der Platine?

damfino
12.12.2009, 14:54
Ich habe wieder weiter experimentiert, und habe anscheinend einen kombinierten Hardware-Software Fehler:

1.) ein kleines Testprogramm für meine beiden Leds geht, auch ein selbstgeschriebenes.
2.) mein Standardprogramm geht nicht mehr!
3.) mein Standardprogramm bei dem alle Befehle zum LCD Display auskommentiert sind, geht!!
4.) Alle Programme gehen mit höchsten 4Mhz internem Takt.

Der Quarz und die dazugehörenden Kondensatoren sind fix angeschlossen, können die soweit stören dass man nicht auf den internen 8Mhz Takt umschalten kann? Ich dachte dass die Anschlüsse bei internen Takt ignoriert werden. Ich kann die Fuses auch wieder von externen auf internen Takt zurückstellen, irgendwas funktioniert also, nur das Programm nicht. COPT ist auch angehakt.

Warum die Befehle für das LCD das Programm schmeissen ist mir Rätselhaft, ich verwende die Bibliothek von Peter Fleury, und das hat schon perfekt funktioniert. Es gibt auch jetzt keine Warnings oder Errors beim kompilieren.
Das Programm startet nicht egal ob das Display angeschlossen ist oder nicht (alle Leitungen abgesteckt).

Wo können da die Fehler stecken? Quarz? Kodensatoren? ????

BurningWave
12.12.2009, 18:07
Achtung beim programmieren von AtMega32 mit dem beim AVR Studio enthaltenen AVR Prog. Dieses Programm funktioniert, wenn man als Controller den AtMega32 einstellt nicht richtig. Es zeigt die falschen Fuses an und schreibt auch Falsche (auch falsche Takteinstllungen - das könnte die Ursache bei deinen Taktproblemen sein), wenn man sie programmieren will. Auf diese Weise habe ich schon 2 Mega32 verfused. Stelle stattdessen als µC den AtMega16 ein, dann funktioniert alles.

Hubert.G
12.12.2009, 22:56
Wenn du kein LCD angeschlossen hast und die LCD-Lib nur mit R/W funktioniert dann wartet das LCD-Programm auf ready auf der Datenleitung das nie kommt. Wenn es mit LCD auch nicht funktioniert könnte dieses kaputt sein.
Abhilfe ohne LCD ist ein 22k Widerstand von DB7 nach GND.

damfino
09.01.2010, 13:42
Hab nach längerer Frustpause und Neuinstallation der Programme am neuen PC mich mit diesem Problem weitergeärgert.
Das LCD hab ich mal als defekt abgeschrieben, die Befehle im Programm rausgenommen und lasse es so laufen.
Die AVR Studio habe ich unter Atmega16 die Fuses gesetzt, macht keinen Unterschied, es wurden die angzeigt die auch unter Atmega32 gesetzt wurden.
Das Programm läuft weiterhin nur unter 1 und 4Mhz internem Takt, weder bei 2 oder 8Mhz intern, noch bei 16Mhz extern.
Die Fuses von externen auf internen Takt umzustellen geht problemlos, also sollte der Quarz funktionieren.
Ich hatte alle Anschlüsse von µC bis auf ISP, Stromversorgung und 2 LEDs gekappt um andere Fehler auszuschließen, ohne Erfolg. Hatte auch nichts anderes erwartet da früher alles passte.

LG

damfino
11.01.2010, 13:58
Habe den Fehler endlich gefunden: der 7805 war defekt und hat die Atmegas zerstört.
Meinem Multimeter nach kamen perfekte 5V raus, aber erst nach dessem Tausch funktioniert mein letzter Atmega wieder mit 16Mhz. Ich hatte den vorher auch schon verbaut, da ging er nur mit 4Mhz, also kann es nur der 7805 gewesen sein. Anscheinend wurden die Atmegas zerstört je länger sie mit dem defekten Spannungsregler in Betrieb waren. Die Anfangsprogrammierung war immer erfolgreich da hier die Spannungsversorgung vom Programmer kommt, aber sobald auf den Akku geschaltet wurde, war das der Anfang vom Ende...

LG

Hubert.G
11.01.2010, 17:20
Hast du den 7805 entsprechend mit Kondensatoren beschalten. Es könnte sein das dieser sonst bei gewissen Lastzuständen zu schwingen beginnt.

damfino
11.01.2010, 18:26
Ja, der hat seine Kondensatoren. Wahrscheinlich hat er beim Kurzschluss etwas abbekommen das mit dem Multimeter nicht zu erkennen war.