przetwornik ADC w ATiny

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

Reply to
marcind
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.