Witam mam problem mianowicie mój kod:
i funkcja która odczytuje pomiar:
gdy wywoluje funkcje w main :
To na wyświetlaczu pojawia się tylko jeden z pomiarów, mierze na dwóch kanałach napięcia z 2 różnych potencjometrów, powinny widnieć dwa wyniki a jest tylko jeden z nich w dwóch miejscach.
Kanały to ADC0 oraz ADC1.
Nie mam pojęcia jak sobie z tym poradzić, wprowadzić jakieś dodatkowe opóźnienia? Wykonuje pojedynczą konwersje, za każdym razem ustawiam ADSC na 1 potem czekam aż wyzeruje i zczytuje dane.
ADMUX|=(1<<REFS0); //napiecie referencyjne to AVCC, pin AREF podlaczone przez kondensator do GND
ADMUX|=(1<<ADLAR); //ustawiamy rozdzielczosc 8 bit
ADCSR|=(1<<ADEN); //wlaczenie przetwornika ADC
ADCSR|=(1<<ADPS2)|(1<<ADPS1); //ustawienie dzielnika na 64, 8Mhz/64=125kHzi funkcja która odczytuje pomiar:
uint16_t pomiar(uint8_t kanal)
{
ADMUX|=((ADMUX&0xF8)|kanal); //ustawiamy kanal ADC1
ADCSR|=(1<<ADSC); //start pomiaru to ustawienie 1 na ADSC
while(ADCSR & (1<<ADSC)); //dopoki ADSC sie nei wyzeruje trwa konwersja
return ADCH;
}
gdy wywoluje funkcje w main :
while(1)
{
lcd_czysc_ekran();
lcd_pozycja(0,9);
lcd_int(pomiar(1));
lcd_pozycja(1,9);
lcd_int(pomiar(0));
_delay_ms(1000);
}To na wyświetlaczu pojawia się tylko jeden z pomiarów, mierze na dwóch kanałach napięcia z 2 różnych potencjometrów, powinny widnieć dwa wyniki a jest tylko jeden z nich w dwóch miejscach.
Kanały to ADC0 oraz ADC1.
Nie mam pojęcia jak sobie z tym poradzić, wprowadzić jakieś dodatkowe opóźnienia? Wykonuje pojedynczą konwersje, za każdym razem ustawiam ADSC na 1 potem czekam aż wyzeruje i zczytuje dane.