Hi Leute !!! Ich kann's leider gerade praktisch nicht testen, deshalb frage ich mal schnell nach: Angenommen ich mache mit einem ATTiny ein einsekündiges Fade-In einer LED mittels PWM (Timer0) von 255 bis 0. Dann kommt irgendwann mal im Programm ein Powerdown. Leuchtet die LED weiter, denn Timer0 wird ja gestoppt? Sollte sie weiterleuchten, wie würde sich das Ganze verhalten, wenn der Fade-In Endwert z. B. 90 anstatt 0 beträgt? Grüße, The SphereX
@ The SphereX (Gast) >Programm ein Powerdown. Leuchtet die LED weiter, denn Timer0 wird ja >gestoppt? Wenn du ihn während der HIGH Phase der PWM anhältst.
Ich gehe mal davon aus, daß dies dann allerdings rein zufällig passiert, man per Befehl also nicht irgendwie auswerten kann, ob die PWM gerade HIGH oder LOW ist? Grüße, The SphereX
@ The SphereX (Gast) >Ich gehe mal davon aus, daß dies dann allerdings rein zufällig passiert, Nö. >man per Befehl also nicht irgendwie auswerten kann, ob die PWM gerade >HIGH oder LOW ist? Doch. Wenn du den Zähler anhältst, kannst du ihn auslesen. Genau so wie deinen PWM Wert. Das kann man vergleichen. Oder noch einfacher. Den Eingangswert des PWM-AUSGANGS einlesen, denn das geht natürlich parallel. Dann weiß die CPU, ob die LED an oder aus ist ;-)
" ... Wenn du den Zähler anhältst, kannst du ihn auslesen. Genau so wie deinen PWM Wert. ... " Also wie ich den PWM-Wert auslese, weiß ich, wobei mir dieser ja bekannt ist. Wie kann ich aber den HIGH-LOW Status des Timers nach dessen Anhalten auslesen? Steht der Wert dann in irgendeinem Register? " ... Oder noch einfacher. Den Eingangswert des PWM-AUSGANGS einlesen, denn das geht natürlich parallel. ... " Das verstehe ich leider auch nicht so ganz. Wenn der betreffende Pin als Ausgang konfiguriert ist, wie kann ich dann gleichzeitig dessen Eingangswert, was der dann auch immer ergibt, einlesen? Oder verstehe ich Dich da jetzt falsch? Grüße, The SphereX
@ The SphereX (Gast) >Also wie ich den PWM-Wert auslese, weiß ich, wobei mir dieser ja bekannt >ist. Wie kann ich aber den HIGH-LOW Status des Timers nach dessen >Anhalten auslesen? Steht der Wert dann in irgendeinem Register? Der ergibt sich aus der Logik! Wenn der Zähler >= PWM Wert ist, dann ist dein Pin HIGH. >Das verstehe ich leider auch nicht so ganz. Wenn der betreffende Pin als >Ausgang konfiguriert ist, wie kann ich dann gleichzeitig dessen >Eingangswert, was der dann auch immer ergibt, einlesen? Ja. Die Funktion zum Einlesen der Eingangspins ist immer verfügbar, auch wenn das Pin als Ausgang definiert ist.
OK, die Sache mit dem Auslesen des Timers habe ich jetzt verstanden. Geht ja tatsächlich ganz einfach über das TCNT0 Register. Was ist aber, wenn ich die LED auf volle Leuchtstärke (PWM0a = 0) einblende, und dann den Timer anhalte bzw. dann ein Powerdown folgt. In dem Fall wäre ja TCNT0 >= PWM0a immer erfüllt. Woher weiß ich dann, ob der Ausgang HIGH oder LOW ist? " ... Die Funktion zum Einlesen der Eingangspins ist immer verfügbar, auch wenn das Pin als Ausgang definiert ist. ... " Ach so ... ??? Das war mir nicht bekannt. Wenn ich einen ADC-Pin also als Ausgang konfiguriert habe, kann ich ihn trotzdem noch auslesen, so als würde er als Eingang eingestellt sein? Das verwirrt mich gerade ein wenig. Vor allem, was ich dann für einen Messwert erhalte. Etwa z. B. 1024 bei PWM0A = 0 und HIGH? Grüße, The SphereX
The SphereX schrieb: > Wenn der betreffende Pin als > Ausgang konfiguriert ist, wie kann ich dann gleichzeitig dessen > Eingangswert, was der dann auch immer ergibt, einlesen? Da hilft zur Not ein Blick ins Datenblatt. Auch für deinen ATtiny wird es da im Abschnitt "Ports as General Digital I/O" die Abbildung "General Digital I/O" geben, wo du ganz genau sehen kannst, wer-was-wie am IO-Pin zugänglich ist.
>Dann kommt irgendwann mal im Programm ein Powerdown.
Wieso irgendwann? Normalerweise macht so ein Programm das Powerdown,
nachdem das Fadein/Fadeout vollständig abgearbeitet ist. Setzt den Port
und schaltet COMnx wieder ab. Danach erst das Powerdown.
The SphereX schrieb: > Vor allem, was ich dann für einen Messwert erhalte. Etwa z. B. > 1024 bei PWM0A = 0 und HIGH? Nein, ein Portpin hat immer nur den Zustand High oder Low, was anderes kannst Du da nicht einlesen. Aber Du mußt ja auch nur abwarten bis der Port grad 'Low' ist wenn der 'Powerdown' kommt.
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.