Gast
#2205165
Hallo zusammen, ich möchte einen analogen Joystick mit 2 Achsen auswerten. Dazu benutze ich bei meinem ATmega8 den AD Wandler. Da ich eine konstante Durchlaufzeit des Programms will (für spätere Regelung), nutze ich keine Interrupts. Ich will also meine analogen Werte nur "updaten", wenn der AD Wandler fertig ist mit seiner Wandlung, ansonsten möchte ich die alten Werte benutzen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Im Hauptprogramm nutze ich dann die beiden Felder von JoyStick, daher als Pointer übergeben. Kanal ist entweder 0 oder 1. Bisher ist die Durchlaufszeit von alle Codepfaden noch nicht konstant, aber das werde ich versuchen zu realisieren, wenn der Code funktioniert. Mein Problem nun an dieser Stelle, das Wandeln funktioniert, wenn ich ein größeres Delay drin habe (z. B. so etwas wie uart_puts() ) oder sonstiges Delay. Ich habe jetzt zum Testen 2 Potis an den ADCs und 2 LEDS die ich dann mit dem gewandelten analogen Signal über PWM dimme. Wenn das Programm nun mit voller Geschwindigkeit ohne jegliches Delay und mit voller Optimierung (Os3) läuft, dann wird nur auf ein Poti (ADC1) reagiert, welches dann aber beide LEDs dimmt. Beim Drehen an dem 2ten Poti passiert nichts mehr. Was mich verwirrt ist nun diese Geschwindigkeitsabhängigkeit. Hat vielleicht jemand einen Tipp, oder gar die Lösung? Irgendwie trete ich nämlich gerade ziemlich auf der Stelle. gruß Florian