Hallo an alle, habe eine Frage bezügich des Soft-PWM-Tutorials - Implementierung der Version 3 (http://www.mikrocontroller.net/articles/Soft-PWM): Sobald ich das Programm auf meinen Microcontroller schreibe, werden anschließend bei der Initialisierung des Programms alle Ports auf high gesetzt, so dass die LEDs an den Pins leuchten. Natürlich kann man die LEDs im eigentlichen Programmablauf direkt auf low setzten, so dass diese ausgehen, jedoch stört es mich etwas, dass die Leds jedes Mal kurz aufleuchten, wenn ich den µC einschalte. Kann man irgendwie verhinden, dass die Ausgänge ein Signal bei der Initialisierung bekommen? Gruß
Thomas J. schrieb: > Natürlich kann man die LEDs im eigentlichen Programmablauf direkt auf > low setzten, so dass diese ausgehen, jedoch stört es mich etwas, dass > die Leds jedes Mal kurz aufleuchten, wenn ich den µC einschalte. > > Kann man irgendwie verhinden, dass die Ausgänge ein Signal bei der > Initialisierung bekommen? > > Gruß Das ist eigentlich schon richtig so, da man den Minus Pol der LEDs gerne an den Controller legt. Die leuchten dann bei "Null" und sind bei "Eins" aus.
Mag sein, dass das so richtig ist, jedoch von mir nicht ganz gewünscht ;-) Habe zusätzlich das Problem, dass wenn ich während der Laufzeit den Port ändere (nach diesem Beispiel: Beitrag "Soft-PWM: Ausgangsport während der Laufzeit ändern ?") wird der ursprüngliche Port auch auf "null" gesetzt und alle LEDs leuchten.
Wie sinnvoll ist die dynamische Änderung des PWM-Port? Lötest du auch die Verbraucher um?
Setz den Port halt bei der Initialisierung auf den Wert, den Du willst:
1 | PWM_PORT = 0xFF; |
bzw.
1 | PWM_PORT = 0x00; |
Je nachdem wie die LEDs angeschlossen sind. Vor dem Umschalten des Ports machst Du das gleiche. Und drauf achten, dass der Timer-Interrupt nicht dazwischenfunkt:
1 | cli(); |
2 | PWM_PORT = 0xFF; |
3 | pwm_port = &PORTD; |
4 | sei(); |
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.