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!
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
@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.
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.