ungewollter Reset

Gast #154872
Hallo zusammen,
habe das Problem, das der 2313 in unregelmäßiger Reihenfolge
resettet, wenn ich externe Interupts an Int0 über einen
Fototransistor (siehe schaltung) anlege.
Wo kann das herrühren?
Watchdog kann ausgeschlossen werden, ist deaktiviert!
Speisespannung kommt aus Bleiakku und ist stabil.
Kann es an der Eingangsbeschaltung des Int0 liegen?

Danke und Gruß Holger
Angehängte Dateien:
Gast #154874
Kann es am Programm liegen?

Gibst Du innerhalb der IR-Routine Interrupts wieder frei?
-> mehrfacher IR-Aufruf -> Stack läuft über -> Absturz -> Reset ??

1-2 100nF-Kondensatoren parallel zum 470uF solltest Du noch einbauen.

Stefan
Gast #154876
Hallo zusammen,
schon mal Danke für die schnelle Reaktion!!
Es ist sicher, dass es ein Reset ist, da das Programm in einer Loop
läuft und nur durch Reset die LED an PD5 gesetzt wird und
beim ersten Int0 abgeschaltet wird.
Interupts werden während der IR-Routine freigegeben,
da parallel auch noch ein Timer läuft, der bei Überlauf einen
Int. auslöst und eine Variable hochzählt.
Kann es sich dann um einen "Prell-Effekt" der Lichtschranke handeln?

Gruß Holger
Gast #154877
Hat der 2313 nicht einen Hardware-Stack? Wenn ja, hast Du mit 99.99999%
ein Softwarefehler.

Im übrigen ist Dein 7805 falsch beschaltet: Der 470uF Kondensator
gehört an den Eingang (auf die 12 Volt Seite). Zusätzlich baust Du noch
einen 100nF Kondensator zwischen VCC und GND an Dein 2313 ran. Ein
Kondensator am Ausgang des 7805 ist Blödsinn.
Gast #154879
BEVOR Du innerhalb der IR-Routine andere IRs freigibst, musst Du den
INT0 sperren, sonst wird er mehrfach aufgerufen -> bis der Stack durch
die IR-Push-Adressen überläuft.

INT0/1 kann entweder level- oder flankengetriggert erfolgen. Im ersten
Fall bekommst Du bei Dauer-low immer wieder einen IR, im zweiten Fall
bei jeder Flanke.

Stefan
Gast #154881
Hallo zusammen,
der Int0 ist flankengetriggert für fallende Flanke konfiguriert.
Will heißen, wenn Licht eingeschaltet wird, dann Int0.
Licht ausschalten oder eingeschaltet lassen sollte doch keine
Auswirkung haben.

Gruß Holger
Gast #154883
Hallo zusammen,
kann es sein, dass Sprünge in Prozeduren innerhalb einer
Interrupt-Routine unzu(ver)lässig sind?
Habe zwei solcher Sprünge etwas umgebaut, sodass der Code jetzt
innerhalb der Routine abgearbeitet wird und der Fehler scheint
weg zu sein.
Übrigens programmiere ich mit AVRide.

Gruß Holger
Gast #154884
Unzurvelässig sind solche Sprünge nicht, sondern Dein Programm ist
unzuverlässig. Du hast ganz offensichtlich einen Stack-Überlauf.

Aber wie "crazy horse" schon mal geschrieben hat, stell' doch
einfach Deinen Source hier rein. Alles andere hat keinen Wert. Wenn Du
Angst hast, dass jemand etwas abkupfert, dann musst Du alleine mit
Deinem Problem fertigwerden!
Gast #154885
Hallo Holger,

auf die Schnelle sind mir zwei Dinge aufgefallen:

1.: Schließe mal einen 47pF-Kondensator direkt noch an Reset, andere
Seite an GND.

2.: Verwendest Du bei Deinen Interrupts auch "reti". Ein "ret" wäre
hier falsch!!!

Sonst stell' mal Dein Programm rein...

Sebastian
Gast #154887
Hallo zusammen,
AVRide ist ein kleiner Assembler, der auch für Anfänger (wie mich)
recht einfach zu verstehen ist.
Gibt es eine Möglichkeit, vielleicht durch einen Registereintrag
festzustellen ob ein Stack-Überlauf stattgefunden hat?
Wenn ja, welches Register ist das?

Gruß Holger

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.