logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 i program odczytujacy wartosci

jarekz90 21 Lip 2011 14:20 875 2
REKLAMA
  • #1 9742193
    jarekz90
    Poziom 13  
    Witam mam problem mianowicie mój kod:

    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=125kHz


    i 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.
  • REKLAMA
  • #3 9742416
    jarekz90
    Poziom 13  
    pomogło dziękuje :)
REKLAMA