Forum: Mikrocontroller und Digitale Elektronik Warten.abe elegant!


von tobi (Gast)


Lesenswert?

Mahlzeit zusamme.

Ich hab mich heut morgen beim mittag gefragt ob  es eigentlich eine 
elegantere Moeglichkeit gibt als per timer interrupt fuer eine bestimmte 
Zeit (s,min)zu warten...mir ist nichts eingefallen.....und bevor ich 
wieder in der Luft zerrissen werde...die library delay.h id mir bekannt 
nur is die alles andere als elegant

von Magnus M. (magnetus) Benutzerseite


Lesenswert?

Eleganter geht wohl nur so:

a) Externer Sekundenimpuls --> PinChange Interrupt --> zählen

b) Externe Real Time Clock mit Alarmfunktion

von Dennis (Gast)


Lesenswert?

tobi schrieb:
> Ich hab mich heut morgen beim mittag gefragt

Lol, die Studenten von heute :-)

tobi schrieb:
> ob  es eigentlich eine
> elegantere Moeglichkeit gibt als per timer interrupt fuer eine bestimmte
> Zeit (s,min)zu warten...

Klar: Beliebigen Timer starten und damit eine Variable bei jedem 
Interrupt hochzählen. Im Hauptprogramm zyklisch die Variable abfragen, 
wenn gerade Zeit dafür da ist. Ist Variablenwert >= Wartezeit, dann ist 
die Zeit rum. Fertig. In der Industrie Standard schon seit 
Menschengedenken.

tobi schrieb:
> die library delay.h id mir bekannt
> nur is die alles andere als elegant

delay.h ist ja eigentlich auch nur dafür da, damit man KURZE und 
halbwegs definierte Zeiten (wie bei der Initialisierung von LCDs z.B.) 
warten kann.

von Ralph (Gast)


Lesenswert?

Kommt drauf an wie lange du warten musst.

wenige µSec ( < als die Zeit die benötigt wird um den Timer zu 
konfigurieren, Starten und den abschließenden IRQ auszuführen ) ==> 
einfache loop mit NOP

Alles was länger dauert ==> Timer

von Dennis (Gast)


Lesenswert?

Ups, beim Durchlesen fällt mir auf, dass ich was Wesentliches übersehen 
habe. sorry, beachtet meine Antwort einfach nicht :-)

von Peter D. (peda)


Lesenswert?


von Marc Rupprath (Gast)


Lesenswert?

tobi schrieb:
> Mahlzeit zusamme.
>
> Ich hab mich heut morgen beim mittag gefragt ob  es eigentlich eine
> elegantere Moeglichkeit gibt als per timer interrupt fuer eine bestimmte
> Zeit (s,min)zu warten...mir ist nichts eingefallen.....und bevor ich
> wieder in der Luft zerrissen werde...die library delay.h id mir bekannt
> nur is die alles andere als elegant

Hallo;
ich finde hierfür beispielsweise die Verwendung eines RTOS elegant.

Beispiel: FreeRTOS, sofern für deinen Controller verfügbar.
Es gibt jecoch noch weitere kostenlose RTOS Systeme.

Gruß

PS:
Die Verwendung eine RTOS mag vielen "oversized" vorkommen.
Ich finde es auch bei kleineren Projekten hilfreich.

Mag jedoch jeder selber endscheiden ;-)

von W.S. (Gast)


Lesenswert?

Da ich gern mit Events arbeite, mach ich sowas mit nem "delayed_Event". 
Ist m.E. die eleganteste Version und braucht auch kein umständliches 
RTOS.

W.S.

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.