Forum: Mikrocontroller und Digitale Elektronik AVR resettet auf mysteriöse Art


von Daniel (Gast)


Lesenswert?

Hallo Leute!

Ich habe letzten ein Programm für einen ATMEGA8 in BASCOM AVR
geschrieben, mit dem ich jetzt eine ganze Menge Ärger hab. Kann es
sein, daß der "WAIT"-Befehl und die BASCOM-internen Befehle zum
steuern des 1WIREbusses auf den 16-Bit Timer zurückgreifen? Immer wenn
ich in der Interruptserviceroutine einen "WAIT"-Befehl aufrufe, oder
meine Routine zur Temperaturmessung aufrufe, dann resettet der
Controller einfach. Wodurch kann so ein Selbstreset überhaupt
auftreten? Dann wüßte ich wenigstens, in welcher Richtung ich
weitersuchen muß. Ich bin für jede Hilfe dankbar.

   Gruß

von Mathias (Gast)


Lesenswert?

hmm einmal der Watchdog, dann ein Fehler in der Interrupt Vektor
Tabelle.. aber was das mit dem Wait Befehl zu tun hat.. ka.. vielleicht
hast du auch ein problem mit dem stack.. poste doch mal deinen
quellcode..

von Christoph W. (christoph)


Lesenswert?

@Mathias : IE nutzer ? Zu oft auf zurück gedrückt ?

Disassembliere das Programm mal und schaue, was Bascom an besagten
Stellen macht. Könnte villeicht etwas schwieriger werden, aber
villeicht hilfts. Genau aus dem Grund schreib' ich Firmware nur mit
Assembler, weil ich mich bei der Fehlersuche auf Hardwareebene nicht
noch mit den Bugs mancher Compiler herumschlage  möchte (und weil der
Code mit Asm so und so effektiver wird).

von Daniel (Gast)


Lesenswert?

Danke für die Antworten! Die aktuelle Version des Quellcodes hab ich
grad nicht hier, den werde ich morgen oder übermorgen posten. Den
Watchdog habe ich nicht aktiviert. Ich denke die 1WIRE-Routinen werden
dies auch nicht tun. Ich habe ne Menge Lokaler Variablen in den
Subroutinen. Vielleicht ist der Stack auch zu klein? Aber dann gibt der
Compiler doch ne Fehlermeldung raus, oder? Wo kann ich den den erzeugten
ASM-COde anschauen?

Gruß

von Hartmut Gröger (Gast)


Lesenswert?

Hi

@Christoph

Ich kann dir nur zustimmem. Nur in Assembler weiss man was der
Prozessor macht.

MfG HG

von Rolf Magnus (Gast)


Lesenswert?

> Ich kann dir nur zustimmem. Nur in Assembler weiss man was der
> Prozessor macht.

Ne. Man weiß nur, was er machen sollte. Was er tatsächlich macht, weiß
kein Mensch. ;-)

von Daniel (Gast)


Angehängte Dateien:

Lesenswert?

So, hier ist nochmal der Quelltext. Wie kann ich denn nun den erzeugten
ASM-COde anschauen? Geht das mit ascom, oder brauche ich da ein extra
Programm für?

Gruß

von Daniel (Gast)


Lesenswert?

Ich habe jetzt einfach mal zur Sicherheit den Stack erhöht und siehe da,
es funktioniert plötzlich. Allerdings hab ich jetzt an anderen Stellen
noch kleine merkwürdige Fehler, denen ich nochmal auf den Grund gehen
muß. Ich würde mich auch freuen, wenn mir jemand nochmal sagt, wie
und/oder mit welchem Programm man sich den von BASCOMAVR erzeugten
ASM-Code anschauen kann. Das wäre für die Zukunft sehr hilfreich.

Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.