www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interrupt und Timer = Problem ?


Autor: Ilon Bickel (Gast)
Datum:
Angehängte Dateien:

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

Autor: Sebastian Wille (Gast)
Datum:

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

Autor: crazy horse (Gast)
Datum:

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

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.