Forum: Mikrocontroller und Digitale Elektronik ADC Interrupt Problem


von Bjoern Biesenbach (Gast)


Angehängte Dateien:

Lesenswert?

Hallo !
Ich habe folgendes Problem mit der Programmierung meines
Mikrocontrollers:
Das Programm soll soll später mal so funktionieren, dass ich durch
setzen des ADSC Bits den AD-Wandler starte, und das entsprechende
Unterprogramm ausgeführt wird. Zur gleichen Zeit soll natürlich der
Timer mit entsprechenden Answeisungen weiterlaufen.
Mein Problem ist nun, dass der AD-Wandler garnicht mehr aufhört,
sondern munter weiterarbeit, obwohl er im Single-conversion Modus
arbeiten sollte. Dadurch kommt der Timer dann garnicht mehr an die
Reihe.
Ich weiss nicht, wo mein denkfehler liegt. Es wäre sehr schön, wenn ihn
jemand für mich finden könnte :-)
Anbei liegt der Code, an dem ich derweilen verzweifle.

Vielen Dank schonmal im vorraus !

von ingo (Gast)


Lesenswert?

Hallo,
dein Programmstürzt ja ab! Du du rufst nicht oft genug pop auf, bevor
dein ret in der Subroutine relaisaus kommt. Du musst ja davor erst
wieder alles vom Stack abrufen, was Du seit dem Interrupt darauf
abgelegt hast.

von Bjoern Biesenbach (Gast)


Lesenswert?

relaisaus:
  push temp
  ldi temp,0x00
  out PORTB,temp
  pop temp
ret

da ist doch eigentlich alles in Ordnung ?!

von ingo (Gast)


Angehängte Dateien:

Lesenswert?

nein, wegen:

ADC_ISR:
     push temp
     push r17
     in temp,SREG
     push temp

das musst Du doch auch noch wieder "poppen".

Dass das am Ende von der ADC_ISR steht ist Quatsch, weil das garnicht
durchlaufen wird. Probier mal angehängte Datei!

von Bjoern Biesenbach (Gast)


Lesenswert?

Vielen Dank, jetzt funktionierts !!

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.