przetwornik ADC w ATiny

Nov 09, 2005 0 Replies

witam mam takie pytanie: chciałbym odczytać wartość napięcia podanego na przetwornik jednak z jakiegoś powodu nie działa mi:/, wykonuję taki kod: void main(void) { // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif



// Input/Output Ports initialization // Port B initialization // Func5=In Func4=Out Func3=Out Func2=In Func1=In Func0=In // State5=T State4=0 State3=0 State2=T State1=T State0=T PORTB=0x00; DDRB=0x18;



// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00;



// External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: Off GIMSK=0x00; MCUCR=0x00;



// Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00;



// Analog Comparator initialization // Analog Comparator: On // Digital input buffers on AIN0: Off, AIN1: Off DIDR0=0x03; ACSR=0x00; ADCSRB = 0x00; ADCSRB |= 128; //enable ADC (ADEN) while (1) { odczytADC(2); //tutaj obrabiam wynik(niestety nie ma go :/ } } } int odczytADC(int ch) {



int res; ADMUX = ch; //numer wejść ai przetwornika ADCSRB |= 64; // Start AD conversion (ADSC) while (1) { int koniec; koniec=ADCSRB & (255-64); // sprawdza czy zakończyła się konwersacja if (koniec==0) { //zakończyła sie konwersacja res= ADCL; res+=(256*ADCH); //zapis do result wyniku z przetwornika break; } } return res; } czy ktoś może ma pomysł co robie źle, alebo jakieś funkcje wykonujące pomiar przetwornikiem ADC (attiny13)



dzięki za pomoc pozdrawiam marcind


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required