Gast
#1675732
hallo Zusammen, bin ein Änfanger mit Atmega8 und habe einen Kontroller gebauert mit 2 analogen Joysticks (jeweils mit 2 Potentiometer X und Y richtungen). X-Richtung des Joystick 1 ist mit PC0(ADC0) verbunden und Y- Richtung mit PC1(ADC1). Um das Ergebnis zu testen habe ich noch eine LED an PC5 gelötet. Die Spannung bewegt sich zwischen ca. 4.93v und 0.02v , wenn ich Joystick nach links oder rechts steuere. Ruhlage liegt bei ca. 2,5v. Ich habe erst mal das Testprogramm für Y-Richtung des Joystick 1 geschrieben. LED soll leuteten, wenn Wert klein als 50 ist. Aber leider funktionniert das nicht. LED bleibt immer „an“, als ich das Programm hochgeladen habe, obwohl ich Joystick bewegt habe. Ich habe mit AVR Studio 4.15 programmiert und mit PonyPorg2000 durch ISP das Programm hochgeladen. ------------------------------------------ #include <avr/io.h> #include <util/delay.h> void main() { int sample,i,value; DDRC |= (1<<5); //PC5 als Ausgang ADMUX=(0<<REFS1)|(1<<REFS0)|(1<<MUX0); // ADC Ref auf Avcc, PC1 gewaehlt ADCSR=(1<<ADEN)|(0<<ADPS0)|(1<<ADPS1)|(1<<ADPS2); // ADC eingeschaltet, 64 Bit Prescale while(1) { sample=0; for(i=0;i<64;i++) { ADCSRA=0b01000000; //single conversion mode ein while(ADCSRA & (1<<ADSC)); //warten bis konvertierung abgeschlosen sample+=ADCW; //aufsummierung der samplewerte, ADCW ist Ergebnis } value=sample/64; //aritmethisches mittel der samplewerte if (value > 50) PORTC &= ~(1<<5); //schaltet LED aus else PORTC |= (1<<5); //schaltet LED ein } }
