mikrocontroller.net

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


Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike R. (thesealion)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unsauber: delay(x) -> gibt es schon fertig

besser timer verwenden

Autor: mfg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christoph Borowski (cborowski)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.