LED Fading parallel zum eigentlichen Programm

Gast #4028018
Lesenswert?
• ▲
▼
Guten Tag,

ich Versuche mich gerade an einem Mikrocontroller Projekt.
Ich möchte jetzt gerne noch LED's per PWM dimmen und das in einem 
bestimmten Zeitbereich.
Dazu muss ich dann auch die Timer/PWM in Abhängigkeit der Uhrzeit 
starten.
Wie bekomme ich die Uhrzeit auf meinen Mikrocontroller? Kann ich das 
Softwaretechnisch realisieren oder brauche ich da erstmal einen 
Timer-Baustein wie z.B. NE555?

LED soll z.B. morgens innerhalb einer halben Stunde von AUS bis voll AN 
dimmen. Das ganze soll natürlich parallel zum eigentlichen Programm 
laufen.
Wie kann ich sowas realisieren? Ich habe die PWM im Moment über eine 
For-Schleife laufen mit der ich die Werte eines Arrays ins OCRA1 
Register schreiben lasse um so die LED zu dimmen.
Während die Schleife abgearbeitet wird, passiert natürlich nichts im 
Rest des Programs. Hier sollen aber weiterhin ADC Werte erfasst werden.

Ich hoffe Ihr könnt mir ein paar Tipps geben.
Vielen Dank!
#4028040
Lesenswert?
• ▲
▼
Hallo Robert,

Du solltest die so Sachen wie State Machine oder Task handler anschauen.
Was Du vor hast, lässt sich am einfachsten durch eine feste Zeitbasis 
bsp. 1 Sekunde erledigen. Alle Sekunde kommt ein Flag von einem Timer, 
dies kannst Du nutzen um deine Zeit weiter zu zählen. Gleichzeitig 
kannst du immer anhand des Flags prüfen ob deine PWM für die LED 
geändert werden muss. Wichtig ist, dass dein Flag die kürzeste im System 
vorkommende Zeit darstellen können muss. Falls du Änderungen im 100ms 
Takt machen möchtest muss das Deine Zeitbasis abbilden können. Ist ein 
Trade-off zwischen zeitlicher Auflösung und Variablengöße die gezählt 
werden muss, man kann z.b. bei 100ms Timer Interrupt 10 mal zählen um 
dann ein Sekundenflag zu erlangen dies mal 60 gibt eine Minute usw....

Richtig gut wird das aber nur, wenn ein stabiler Referenztakt anliegt 
(Quarz) und wenn die Ausführungsdauer der Interruptroutine für das Flag 
konstant ist (Atomar ausgeführt / andere Interrupts sperren).

Gruß
Jochen

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.