mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC Interrupt Problem


Autor: Bjoern Biesenbach (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 !

Autor: ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bjoern Biesenbach (Gast)
Datum:

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

da ist doch eigentlich alles in Ordnung ?!

Autor: ingo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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!

Autor: Bjoern Biesenbach (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank, jetzt funktionierts !!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.