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

[Atmega8] Napięcie bandgap w ADC

Rolandd 05 Lis 2010 19:36 1667 2
  • #1 8706635
    Rolandd
    Poziom 12  
    Witam szanownych forumowiczów.
    Napisałem taki oto kod, w celu sprawdzenia działania napięcia Vbg (bandgap) podawanego na wejście przetwornika AD w atmedze8:
    #define F_CPU 1000000UL
    #include <avr/io.h>
    #include <util/delay.h>
    
    void adcInit()
    {
    	// źródło odniesienia - AVCC = 5V
    	ADMUX |= _BV(REFS0);
    	// wyrównanie do lewej
    	ADMUX |= _BV(ADLAR);
    	// kanał wejścia - Vbg
    	ADMUX |= _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
    	// zezwolenie na konwersję
    	ADCSRA |= _BV(ADEN);
    	// częstotliwość dla taktowania przetwornika 125kHz
    	ADCSRA |= _BV(ADPS1) | _BV(ADPS0);
    }
    
    int main()
    {   
    	DDRB = 0xff;
    	adcInit();
    	while(1)
    	{
    		ADCSRA |= _BV(ADSC);
            while(ADCSRA & _BV(ADSC)){};
    		PORTB = ADCH;
    	};
    	return 0;
    }

    Testując układ w Protelu na porcie B dostaję same jedynki, w rzeczywistym układzie, a więc w praktyce na porcie tym mam zaś same niskie napięcia więc zera. Na domiar złego, czytając dokumentację mam wrażenie, że ustawiając flagi w ten sposób:
    ADMUX |= _BV(MUX3) | _BV(MUX2) | _BV(MUX1);

    [Atmega8] Napięcie bandgap w ADC
    powoduję, że na wejście ADC podaję napięcie referencyjne równe Vbg=1.30V, co powinno dać jakieś 0100001010 (ADCH = 01000010). W każdym razie na pewno nie same jedynki czy same zera. O co tu chodzi? Czym jest napięcie bandgap, czy jest one rzeczywiście równe 1.30V? Czy jest ono podawane na wejście ADC, skoro w układzie dostaję same zera na wyjściu, tak jakby napięciem wejściowym była masa?
  • #2 8706760
    gaskoin
    Poziom 38  
    Wybacz, że zadam być może trywialne pytanie, ale czy podłączyłeś pin AVCC do zasilania ?
  • #3 8706817
    Rolandd
    Poziom 12  
    Tak jak bozia (czytaj: datasheet) przykazała podłączyłem AVCC przez 10uH dławik do VCC oraz 100nF do masy. VREF przez 100nF do masy. GND do masy.

    Już dawno nauczyłem się, że zasilany układ działa lepiej :)
REKLAMA