Powinno być ? KOD -------------- void adc_init(void) // Function to initialise the ADC feature { ADCSRA=0X00; ADMUX=0X40; ADCSRA=0X47; // prescaler (128) + ADSC ADCSRA|=0X80; // ENABLE }
------------------------
Powinno być ? KOD -------------- void adc_init(void) // Function to initialise the ADC feature { ADCSRA=0X00; ADMUX=0X40; ADCSRA=0X47; // prescaler (128) + ADSC ADCSRA|=0X80; // ENABLE }
------------------------
Jan Górski pisze:
Nie wiem co masz w układzie - to Twój projekt
Taka uwaga - nie wiem skąd u programistów uC bierze się maniera do pisania w hex. Może od razu podawać adresy rejestrów zamiast ich definicji? np. ((*(volatile uint8_t *)((0x06) + 0x20))) |= 0x20; Jak piszesz ADMUX=0X40; to bez zajrzenia do dokumentacji kompletnie nie wiem o co chodzi. A zaglądanie do dokumentacji marnuje mój czas. Jak byś napisał ADMUX=_BV(REFS0); (jak twój kompilator nie ma to #define _BV(a) (1< KOD --------------
Dla zasady wypadałoby tu poczekać na zakończenie tej pierwszej konwersji.
void setup_adc() { ADMUX = _BV(REFS0); ADCSRA = 0b111;// /128 ADCSRA |= _BV(ADEN) | _BV(ADSC); while( ADCSRA & _BV(ADSC) ) ; } nie jest czytelniejsze?
Zbędne, niezdefiniowane zachowanie, ale chyba nie powinno powodować błędów.
Dlaczego ustawiasz ADLAR?
Have something to add? Share your thoughts — no account required.
Ask the community — no account required