Dlaczego przy odczycie danych z ADC, zawsze w zmiennej Pv, mam tê sam± warto¶æ co w Vv? Przecie¿ zgodnie z not± katalogow± prze³±czam wej¶cie w czasie, gdy bit ADEN jest wyzerowany. Odczytywanie pojedynczo pinów mikrokontrolera przebiega prawid³owo, a odczyt dwóch za jednym razem jest ok.
volatile unsigned char temp; // niepotrzebne dane // >>>>>>>>>>> odczyt regulacji mocy >>>>>>>>>>>>>>>>
ADCSRA &= ~(1 << ADEN); // wy³±czenie bitu enable ADMUX &= ~(1 << MUX3) | ~(1 << MUX2) | ~(1 << MUX1) | ~(1 << MUX0); // ustawianie wej¶cia, ADC0 ADCSRA |= (1 << ADEN); // w³±czenie bitu enable
ADCSRA |= (1 << ADSC); // pocz±tek konwersji while ( ADCSRA & (1 << ADSC) ); // czeka na koniec konwersji temp = ADCL; Pv = ADCH; // odczyt regulatora mocy
// >>>>>>>>>>> odczyt napiêcia akumulatora >>>>>>>>>>>>>>>>
ADCSRA &= ~(1 << ADEN); // wy³±czenie bitu enable ADMUX &= ~(1 << MUX3) | ~(1 << MUX2) | ~(1 << MUX1) | ~(1 << MUX0); // ustawianie wej¶cia ADMUX |= (1 << MUX0); // ustawia ADC1 ADCSRA |= (1 << ADEN); // w³±czenie bitu enable
ADCSRA |= (1 << ADSC); // pocz±tek konwersji while ( ADCSRA & (1 << ADSC) ); // czeka na koniec konwersji temp = ADCL; Vv = ADCH; // odczyt napiêcia akumulatora
Pzdr. Krzysztof.