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
Unsauber: delay(x) -> gibt es schon fertig besser timer verwenden
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...
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.