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 !
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.
relaisaus: push temp ldi temp,0x00 out PORTB,temp pop temp ret da ist doch eigentlich alles in Ordnung ?!
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.