Forum: Mikrocontroller und Digitale Elektronik Programmablauf für eine bestimmte Zeitdauer unterbrechen


von Christoph B. (cborowski)


Lesenswert?

Hallo zusammen,

hat jemand gerade eine C-Funktion zur Hand, die den Programmablauf für 
eine bestimmte Zeitdauer 'unterbricht'. D. h. die z. B. in einer 
Schleife 'nichts' macht und deren Ausführungsdauer abhängig von einem 
Parameter (z. B. 1000 für 1sek) ist. Das ganze für einen ATmega8 (16Mhz) 
in C.

Interessant wären natürlich auch Links zum Thema bzw. auch die 
theoretischen Grundlagen für die div. Realisierungsmöglichkeiten.

Im voraus schon mal Danke...

Christoph

von Mike R. (thesealion)


Lesenswert?

Unsauber: delay(x) -> gibt es schon fertig

besser timer verwenden

von mfg (Gast)


Lesenswert?

warum machst du's nicht interrupt-gesteuert?
die verzögerung mit schleifen ist eig ressourcen-verschwendung, aber 
wenn's sein muss: rechne dir aus, wieviele duty-cycles ein 
schleifendurchlauf bei deinem prozessor benötigt, dann weißt du wie oft 
diese dann für 1ms etc laufen muss...

von johnny.m (Gast)


Lesenswert?

Wenn es nicht auf Stromsparen ankommt, und das Programm wirklich 
unterbrochen werden soll, also der µC in der Zeit gar nichts machen 
soll, dann ist gegen die delay-Variante nichts einzuwenden. Da ist dann 
auch nichts "unsauber", da Christoph eindeutig schreibt, dass er während 
der Wartezeit nichts machen will.

Wenn es allerdings auf den Stromverbrauch ankommt, dann ist es sicher 
sinnvoller, den µC in einen sleep-Modus zu versetzen, während er auf ein 
Ereignis wartet.

Bei der Programmierung mit WINAVR (AVR-GCC) ist darauf zu achten, dass 
die _delay-Funktionen aus der delay.h in ihrer maximalen 
Verzögerungszeit begrenzt sind. Sie müssen also u.U. in einer Schleife 
mehrfach hintereinander aufgerufen werden.

von Christoph B. (cborowski)


Lesenswert?

Hallo,

danke erst einmal für die Antworten. Werde mir die delay-Funktion mal 
genauer ansehen (die kannte ich bisher noch nicht... bin halt ein 
Anfänger). Die Realisierung auf Basis von Timern und Interrupts scheint 
mir auch interessant zu sein. Da werde ich ein wenig rumsuchen, ggf. 
gibt es hier von mir noch die eine oder andere Frage dazu.

Gruss
Christoph

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.