Interrupt und Timer = Problem ?

Gast #58080
Guten Abend!

Ich habe mal etwas mit Assembler-Mikrocontroller-Programmierung
angefangen. Als Grundlage habe ich den 90S2313 von Atmel.

Ich habe ein Programm, welches mittels Timer LEDs blinken lässt. Über
eine Taste will ich jetzt den Timer deaktivieren und wieder aktivieren
können. Das deaktivieren klappt ja noch, der Timer hält an, aber das
anschließende aktiveren geht einfach nicht mehr. Die Routine "on"
wird gar nicht erst aufgerufen.

Als Anhang hab ich die dazugehörige asm-Datei dran gepackt, vielleicht
kann ja jemand helfen.

MfG
Ilon
Angehängte Dateien:
Gast
Hi,

verwendest Du an Deinem Schalter einen externen PullUp-Widerstand?

Sonst versuch 'mal nach der DDR-Initializierung noch folgendes:

ldi r16,0xFF
out PortD,r16

So aktivierst Du die internen PullUps von PortD.

Sebastian
Gast
auf den ersten Blick folgender grober Schnitzer:

on:
  push temp
  ldi temp, 0b00000101
  out TCCR0, temp
  pop temp
  ret        //führt aus der INT0-Routine zurück, ohne das I-Flag wieder
zu setzen

off:
  push temp
  ldi temp, 0
  out TCCR0, temp
  pop temp
  ret

int0_handler:
  in temp, TCCR0

  cpi temp, 0
  breq on         ; entweder dahin
  brne off        ; oder dahin

  reti            ;hier kommst du nie an

mit der Folge, das das I-Flag niemals gesetzt wird und damit auch
niemals ein weiterer Int bearbeitet werden kann.
Ausserdem solltest du in ISRs immer das SREG sichern.

Antwort schreiben

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