Delay mit Keil µVision für den XC167

Gast #848316
Lesenswert?

Hi zusammen,
ich würde gerne in mein Programm eine Verzögerung reinprogrammieren von 
ca. 1s, eigentlich ist die Zeit egal, ich möchte nur eine Diode ein- und 
ausschalten so, dass man sie noch blinken sieht.
Habe da was von der Delay Funktion gehört, wie lautet dieser Befehl 
genau und was muss ich alles für Headers includen?
Danke
#1892962
Lesenswert?

Hallo,

ich habe für diesen Zweck einen Timer genommen.
Habe ihn so initialisiert, dass er in Abständen von 1ms einen Interrupt 
auslöst.
Will ich nun eine bestimmte Zeit warten, setze ich mit einer Funktion 
eine globale Variable auf die zu wartende Zeit in Millisekunden und 
starte den Timer.
Der Timer zählt nun im Interrupt die Variable herunter und stoppt wenn 
diese Null erreicht.
Im Programm polle ich nun diese Variable und laufe erst weiter, wenn 
diese Null erreicht hat.

So habe ich mir die Suche nach fertigen Funktionen erspart. Auch musste 
ich mir keine Warteschleife selbstbauen.

Natürlich hat diese Vorgehensweise den Nachteil, das der Controller 
nichts anderes machen kann, wärend er wartet.
Für meine Anwendung war es egal, da es zu dem Zeitpunkt nichts anderes 
zu tun gibt.

Wenn Du nur eine LED blinken lassen willst, kann dies komplett in der 
Interruptroutine gemacht werden.
Einfach den Überlauf des Timers entsprechend timen und in der Routine 
den Ausgang toggeln.
Dies hat den Vorteil, dass der Controller in der Hauptschleife noch 
Arbeit leisten kann.

Grüße

Christian

Edit:

Ups, zu spät aufs Datum geschaut.
Naja, vielleicht hilft es anderen weiter.

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