Zeitdauer über externen Interrupt und Register

Gast #2022587
Lesenswert?

hallo zusammen,

ich hab eine frage zur programmierung einer zeitdauer.

ich hab am int0-eingang einen schmitt-trigger hängen der 50 hz liefert. 
wenn ich jetzt 10 sec generieren will hab ich gedacht ich mach das über 
register.
sprich: ich lade #0ah in ein register und dekrementiere den wert, bis 
ich bei 0 bin! meine frage ist, ob ich das laden und das dekrementieren 
des registers im interrupt programmieren muss oder geht das im 
hauptprogramm?

danke schon mal für die antwort.

gruß insicor
Gast #2022594
Lesenswert?

Laden 1x bei reset im Hauptprogramm, decrease in der Interruptroutine.
Wenn die 10 sich wiederholen sollen, musst du bei 0 das register neu 
beladen. Würdest du uns verraten, was du vorhast, könnten wir dir 
vielleicht noch mehr helfen.
#2022627
Lesenswert?

insicor schrieb:
> sprich: ich lade #0ah in ein register und dekrementiere den wert, bis
>
> ich bei 0 bin! meine frage ist, ob ich das laden und das dekrementieren
>
> des registers im interrupt programmieren muss oder geht das im
>
> hauptprogramm?

Das kannst du mit Interrupt oder im Hauptprogramm machen.
Ist aber beides schlecht.

Du nimmst einen Timer. So ein Timer heisst mit vollem Namen 
Timer/Counter.
Dann lädst du in den Counter einen Capture-Wert, in diesem Fall 500 und 
wenn dieser erreicht wird löst der Counter einen Interrupt aus.

Mit deiner Zählvariablen passt das nicht. 0x0A, hast du mit 50Hz in 
200ms auf 0 dekrementiert. Und nicht in 10 Sek.



mfg.

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