Witam was, mam takie pytanie nawet kilka, są one spowodowane tym, że chce poukładać wiedzę jaką zdobyłem i zdobywam.
1. Przerwania ADC
Zakładając, że przerwania mam uruchomione wpis do rejestru ADIE.
To jak one działają
Przerwanie uruchamia się po zakończeniu pomiaru i tu pytanie czy to jest jednoznaczne z zakończeniem konwersji ? Widziałem gdzieś kod na sprawdzenie zakończenia konwersji raz w przerwaniu raz w pętli programu.
2. Jeżeli jestem w trybie free runing to jak zatrzymać ADC tak by we/wy PORTC spełniały jakąś tam inną funkcję
zapis w stylu
Nie bardzo chce działać, pomiar nadal się wykonuje.
3. Jaki jest poprawny kod na sprawdzenie zakończenia konwersji
4. Będąc w trybie Nie- free runing , taki zapis
Uruchamia jedno przetwarzanie (tak mi się wydaje) ?, to żeby wyliczyć średnią kilku pomiarów muszę dać w przerwaniu pętle ? i zsumować kilka wyników ?
Czyli
pętla 10x { ADCSRA |= _BV(ADSC); , sprawdzenie_warunku_na_zak_konwersji, odczyt wartości}... suma / 10 = wynik
5. wynik z przerwania można odczytać w pętli ?
Zaznaczam, że nasiedziałem się trochę w google ale każdy ma inne pomysły i zaczynam się z tym gubić trochę.
Będę wdzięczny za pomoc.
Pozdrawiam
1. Przerwania ADC
Zakładając, że przerwania mam uruchomione wpis do rejestru ADIE.
To jak one działają
Przerwanie uruchamia się po zakończeniu pomiaru i tu pytanie czy to jest jednoznaczne z zakończeniem konwersji ? Widziałem gdzieś kod na sprawdzenie zakończenia konwersji raz w przerwaniu raz w pętli programu.
2. Jeżeli jestem w trybie free runing to jak zatrzymać ADC tak by we/wy PORTC spełniały jakąś tam inną funkcję
zapis w stylu
void adc_off(){
ADCSR &= ~_BV(ADEN);
}
Nie bardzo chce działać, pomiar nadal się wykonuje.
3. Jaki jest poprawny kod na sprawdzenie zakończenia konwersji
while(bit_is_set(ADCSRA,ADSC)) {}; // ten
while(ADCSR&_BV(ADEN)); // czy ten, czy bez różnicy
4. Będąc w trybie Nie- free runing , taki zapis
ADCSRA |= _BV(ADSC);
Uruchamia jedno przetwarzanie (tak mi się wydaje) ?, to żeby wyliczyć średnią kilku pomiarów muszę dać w przerwaniu pętle ? i zsumować kilka wyników ?
Czyli
pętla 10x { ADCSRA |= _BV(ADSC); , sprawdzenie_warunku_na_zak_konwersji, odczyt wartości}... suma / 10 = wynik
5. wynik z przerwania można odczytać w pętli ?
Zaznaczam, że nasiedziałem się trochę w google ale każdy ma inne pomysły i zaczynam się z tym gubić trochę.
Będę wdzięczny za pomoc.
Pozdrawiam