Programmablauf für eine bestimmte Zeitdauer unterbrechen

OP #457893
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
Gast #457902
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...
Gast #457909
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.
OP #457944
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.