ATMEGA8 Int0 + ADC-Int -> manchmal Absturz (ASM)

OP #1509149
Hallo,

bei einem ATMEGA8L ist der ADC-Interrupt und der Int0 aktiv.
Der ADC-Int. läuft zu 99% der Zeit mit 5000sps (clock 8 MHz) Ub=4V.
Alles korrekt abgeblockt usw. Das Programm ist in Assembler (AVR-Studio) 
geschrieben und belegt ca. 3700 Bytes (cseg).

Der Int0 wird mit einem Taster gegen Masse ausgelöst.
Der Pullup-Widerstand für den Pin ist aktiv.
Es ist noch reichlich RAM vorhanden (Stack).

Int0 soll später einen Flag in einem Register verändern.
Allerdings gibt es schon mit der gezeigten Int0-ISR seltsame
Probleme. Siehe Kommentar.
Das Gleiche passiert übrigens auch bei Verwendung anderer Register.

Bin etwas ratlos...

Initialisierung:
outi  MCUCR,0b00000000  ;Int0: Low-Level, Int1:Low-Level (S.65)
sbit  GICR,INT0    ;Int enabled:bit6  (S.65)

   ....main....

int0_isr:  ;es ist jeweils nur eine der auskommentierten Zeilen aktiv!
  push  r17
  ;ori  r17,0b10000000  ; manchmal RESET
  ;andi  r17,0b01111111  ; manchmal RESET
  ;ldi  r17,33         ; nie RESET !
  pop r17
  reti

Wieso kommt es manchmal zum Reset bzw. auch "Absturz" d.h. Programm 
läuft nicht mehr?

Gruß+Danke
Andreas
Gast #1509156
Hi

>  ;ori  r17,0b10000000  ; manchmal RESET
>  ;andi  r17,0b01111111  ; manchmal RESET
>  ;ldi  r17,33         ; nie RESET !

'ori' und 'andi' verändern u.U. die Flags in SREG. 'ldi nicht. Du 
solltest in der ISR SREG sichern.

z.B

   push r16
   in r16,SREG
   push r16
   ....

   pop r16
   out SREG,r16
   pop r16
   reti

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.