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