timer interrupt problem

OP (Firma: tu wien) #1442804
hallo,
ich habe gerade in der uni angefangen atmega16 zu programmieren und hab 
da eine frage. ich wollte einfach nur eine stoppuhr programmieren, 
schaffe es jedoch nicht die zeit anzuhalten.
zum stoppen lese ich einfach einen button ein:

help = PINA;
if((help & 0x40)==0x40){ /*wenn PINA.7  auf 1 ist, --> uhr stoppen */
  flag = 0;
}
else{
  flag = 1;
}

soweit funktioniert das ja auch.
jetzt will ich aber im timer interrupt das flag auslesen und entweder 
einen counter dort weiterlaufen lassen oder eben stoppen, damit die zeit 
stehen bleibt:

SIGNAL(SIG_OVERFLOW1){/*timer interrupt*/
if(flag == 1){
  temp++;
}

das funktioniert aber einfach nicht. temp wird einfach immer 
weitergezählt.  ich hab auch schon probiert, dass ich einfach mal gleich 
nach dem abfragen des buttons leds ein und ausschalte. das geht auch. 
nur die abfrage im interrupt macht ein problem.
kann es sein, dass das überhaupt nicht funktioniert oder hats da ein 
anderes problem?
mfg specht
Angehängte Dateien:
OP (Firma: tu wien) #1442812
danke für den tipp, aber da ist einfach nur der kommentar alt. sollt ich 
mal ausbessern.
also das einlesen des buttons funktioniert (am pin a6)
nur das abfragen des flags im interrupt geht einfach nicht.
mfg
Persönliche Seite #1442822
Dir ist schon klar daß das bestenfalls nur dann geht, wenn der Taster 
(dauerhaft) gedrückt ist?

Ausserdem tust du dir und anderen einen Gefallen, wenn du "magische" 
Zahlen wie in TIMSK=4 vermeidest. Ich hab jetzt keine Lust das Handbuch 
runterzulagen und zu schauen was in Bit 2 codiert ist; es sollte aber 
gleichbedeutend sein zu sowas wie
1
TIMSK |= (1 << TOV1);

Johann
OP (Firma: tu wien) #1442824
ok danke für die tipps. werds gleich mal umschreiben. bin wie gesagt neu 
im programmiergeschäft. drum schaut der code vielleicht ein bisschen 
anders aus.
das es nur solange stoppt, wie der button gedrückt ist ist mir schon 
klar. ich werds noch umändern, so dass der button start - stopp toggelt
OP (Firma: tu wien) #1442830
ok werd ich machen. wird sicher noch ein langer sonntag ;)
übrigens danke für die vielen schnellen tipps. echt cool das forum hier.
das tutorial ist echt gut. im datenblatt nachlesen ist da wirklich viel 
anstrengender.

Antwort schreiben

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