Forum: Mikrocontroller und Digitale Elektronik Zeitdauer über externen Interrupt und Register


von insicor (Gast)


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

von Philipp (Gast)


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.

von Thomas E. (thomase)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.