Cześć,
napisałem sobie prosty program, który ma wyświetlać stan kilku wejść ADC na wyświetlaczu (dokładnie 5).
Sam przetwornik jest zainicjowany:
i następnie w pętli głównej odczytywany poprzez:
i dalej zmienna value jest wyświetlana na LCD.
Problem pojawia się gdy chcę odczytać kilka, np 5. W pętli głównej mam wtedy:
Wszystko byłoby ok, gdyby nie fakt, że zmieniona jest kolejność wyświetlania wyników z adc. Czyli w miejscu gdzie powinien być ADC0, pojawia się ADC4, zamiast ADC1 - ADC0. Dlaczego? Wyświetlanie na LCD jest na pewno dobrze napisane, bo każdy z przetworników pojedynczo wyświetla się na odpowiedniej pozycji. W dodatku nie chciało mi się dopisywać [C] w tytule...
Nawet przy odczycie dwóch adc, są one odwrotnie wyświetlane...
Gdzie jest błąd?
napisałem sobie prosty program, który ma wyświetlać stan kilku wejść ADC na wyświetlaczu (dokładnie 5).
Sam przetwornik jest zainicjowany:
ADCSR = _BV(ADEN)|_BV(ADIE)|_BV(ADPS1)|_BV(ADPS2);i następnie w pętli głównej odczytywany poprzez:
ADMUX = 0;
ADCSR |= _BV(ADSC);
value = ADCW; i dalej zmienna value jest wyświetlana na LCD.
Problem pojawia się gdy chcę odczytać kilka, np 5. W pętli głównej mam wtedy:
ADMUX = 0;
ADCSR |= _BV(ADSC);
value = ADCW;
//wyświetlanie
ADMUX = 1;
ADCSR |= _BV(ADSC);
value = ADCW;
//wyświetlanie
ADMUX = 2;
ADCSR |= _BV(ADSC);
value = ADCW;
//wyświetlanie
ADMUX = 3;
ADCSR |= _BV(ADSC);
value = ADCW;
//wyświetlanie i opóźnienie 500ms.Wszystko byłoby ok, gdyby nie fakt, że zmieniona jest kolejność wyświetlania wyników z adc. Czyli w miejscu gdzie powinien być ADC0, pojawia się ADC4, zamiast ADC1 - ADC0. Dlaczego? Wyświetlanie na LCD jest na pewno dobrze napisane, bo każdy z przetworników pojedynczo wyświetla się na odpowiedniej pozycji. W dodatku nie chciało mi się dopisywać [C] w tytule...
Nawet przy odczycie dwóch adc, są one odwrotnie wyświetlane...
Gdzie jest błąd?