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
#4028121
Lesenswert?

@Robert (Gast)

>Wie bekomme ich die Uhrzeit auf meinen Mikrocontroller?

Über einen Timer oder eine RTC.

>Softwaretechnisch realisieren

Ja.

> oder brauche ich da erstmal einen
>Timer-Baustein wie z.B. NE555?

NEIN! Das ist bei einem Mikrocotnroller vollkommener Käse. Der hat doch 
schon einen Takt!

>Wie kann ich sowas realisieren?

Siehe Multitasking.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren