Bräuchte Hilfe! Finde meinen Fehler nicht!

Gast #1430363
Lesenswert?

Hallo,

Ich möchte mit einem atmega16 eine Stoppuhr bauen (Übung bin Anfänger)

Mit einem Taster starte ich die Stoppuhr. -> funktioniert

mit einem 2. Taster der einen Interrupt auslöst (INT0/ steigende Flanke)

soll die Uhr gestoppt werden. -> funktioniert

durch nochmaliges drücken des Interrupttasters soll die Zeit von der 
gleichen Stelle weiterlaufen.  -> funktioniert nicht !!!!

Stattdessen geht die uhr wieder auf 0, d.h. er macht immer einen Reset, 
so glaube ich, weil er die Sekunden nur nach einem Reset löschen kann.

Vielleicht kann mir jemand helfen.

Danke im Voraus
Angehängte Dateien:
Gast #1430371
Lesenswert?

stopp:

  push  temp

  tst    taste1  ;stopptaste schon mal gedr�ckt?
  breq  n_gedrueckt  ;nein dann.

  dec    taste1  ;tastenmarker auf null setzen
  dec    taste2  ; wenn die zeile fehlt ist der starttaster aus!!

  in    temp, tccr0
  ori    temp, 0x04  ;cs02 anmachen --> prescaler auf 256 -> timer l�uft 
los
  out    tccr0, temp

  out    tcnt0, timer ;gespeicherter timerstand zur�ckladen

!! Hier fehlt ein pop temp !!

  reti
Gast #1430380
Lesenswert?

Hi

>stopp:
>push  temp
>  tst    taste1  ;stopptaste schon mal gedrückt?
>.............
>  out    tcnt0, timer ;gespeicherter timerstand zurückladen
>       !!!!!!!!!!!! hier fehlt ein pop temp
>  reti

>n_gedrueckt:
>  in    timer, tcnt0 ;timerstand merken
>...............
>ende_st:
>  pop temp
>  reti

Besser du gewöhnst dir an, Unterprogramme, IS-Routinen mit einem 
Eintritts- und einem Austrittspunkt zu versehen. Macht die Fehlersuche 
einfacher.

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren