Dave Pr schrieb:
> Das PWM-Signal wechselt nur zwischen 1ms und 2ms. Also nur an den
> Maxima.
>
> Hier mal mein Programmcode, vielleicht seht ihr ja meinen Fehler, ich
> jedenfalls sehe da nicht mehr viel :D
Und der Code ist von der Standard-Hauptschleife
1 | ...
|
2 |
|
3 | while( 1 )
|
4 | {
|
5 |
|
6 | ....
|
7 | dein Code
|
8 | ....
|
9 | }
|
10 | }
|
umrahmt?
Wenn: ja.
Was denkst du: Wieviele Durchläufe durch diese Schleife wird wohl dein
µC in, sagen wir mal, einer Zehntel Sekunde schaffen. Eine Zehntel
Sekunde deshalb, weil du es kaum schaffen wirst, deine Tasten kürzer zu
als eine Zehntel Sekunde gedrückt zu halten.
Also: Was denkst du - wie oft?
50-tausend mal, 100-tausend mal?
irgendwo da dazwischen wird wohl die Lösung liegen.
Du siehst also nur deswegen die PWM an jeweils den Grenzwerten, weil das
Hoch- bzw. Runterzählen so schnell geht (bei jedem Durchlauf um 1
erhöhen bzw. verringern), dass du als langsamer Mensch überhaupt keine
Chance hast, da in Einzelschritten die PWM hochzuzählen. So schnell
kannst du eine Taste gar nicht drücken und wieder loslassen, dass dein
µC das nur ein einziges mal innerhalb der while Schleife auswerten und
als 'Taste gedrückt' werten würde.
Du musst unterscheiden zwischen:
* Tu etwas, SOLANGE eine Taste gedrückt ist
* Tu etwas, wenn eine Taste niedergedrückt WURDE
Das zweite beinhaltet, dass die Taste zwischendurch auch wieder
losgelassen werden muss, ehe dann das nächste mal eine gedrückte Taste
eine Aktion auslöst. #Eine# Aktion - und nur Eine.