Hallo,
dieser Code soll bewirken, dass die LED an PB5 erst angehen soll, wenn
die Werte der Potis an ADC0 und ADC1 höher als 200 sind. Jedoch dimmt
die LED nur, wenn die beiden Werte unterschiedlich sind (ADC1 > 200,
ADC0 < 200). Dabei sollte sie ausgehen. Wo liegt mein Fehler?
1 | /*
|
2 | * PotentiometerCompare.c
|
3 | *
|
4 | * Created: 28.03.2013 13:54:33
|
5 | * Author: Benedikt_2
|
6 | */
|
7 |
|
8 |
|
9 | #include <avr/io.h>
|
10 |
|
11 | int main(void)
|
12 | {
|
13 | DDRB |= (1<<5);
|
14 |
|
15 | ADMUX |= (1<<REFS0); //sets Reference to AVCC
|
16 | ADMUX |= (1<<ADLAR); //sets ADC Result to ADCH
|
17 | ADCSRA |= (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); //Prescaler = 128 -> ADC Clock = 125 kHz
|
18 | ADCSRA |= (1<<ADEN);
|
19 |
|
20 | while(1)
|
21 | {
|
22 | int ADC_0 = getADC0();
|
23 | int ADC_1 = getADC1();
|
24 |
|
25 | if (ADC_0 > 200 && ADC_1 > 200)
|
26 | {
|
27 | PORTB |= (1<<5);
|
28 | }
|
29 | else
|
30 | {
|
31 | PORTB &= ~(1<<5);
|
32 | }
|
33 |
|
34 | }
|
35 |
|
36 | int getADC0(void){
|
37 | int ADC0Result;
|
38 | ADMUX &= ~(1<<MUX0); //ADC Pin = ADC0
|
39 | ADCSRA |= (1<<ADSC); //start Conversion
|
40 | ADC0Result = ADCH; //ADC Result
|
41 | return ADC0Result;
|
42 | }
|
43 |
|
44 | int getADC1(void){
|
45 | int ADC1Result;
|
46 | ADMUX |= (1<<MUX0); //ADC Pin = ADC1
|
47 | ADCSRA |= (1<<ADSC); //start Conversion
|
48 | ADC1Result = ADCH; //ADC Result
|
49 | return ADC1Result;
|
50 | }
|
Vielen Dank schonmal im vorraus,
Benedikt