Witam. Po dość długim czasie postanowiłem powrócić do programowania AVR ze względu na mały projekt który planuję w niedalekiej przyszłości. Zaopatrzyłem się w oprogramowanie, mikrokontroler i do dzieła. Po całym dniu oprogramowywania różnych peryferiów utknąłem na ADC. Otóż mam taki problem, że nie działa mi procedura obsługi przerwania od ADC umieszczona w pliku adc.c. Po przeniesieniu jej do pliku gdzie znajduje się funkcja main() wszystko działa jak należy. Poniżej zamieszczam dokładniejsze informacje:
główny plik projektu:
plik adc.h:
plik adc.c:
i jeszcze makra pomocnicze:
W podanej postaci wszystko działa. Jeżeli jednak obsługa przerwania będzie w pliku adc.c to nie jest ona w ogóle wywoływana. Nie wiem w czym może być problem bo nigdy wcześniej się z czymś podobnym nie spotkałem. Na dodatek inne przerwania działają i ich procedury obsługi są w innych plikach (Timer0, SPI). Długa przerwa od AVR też robi swoje.
Środowisko: Atmel AVR Studio 5 wersja 5.1.208,
Tryb budowania: DEBUG,
Optymalizacja: -O0
Pozdrawiam
główny plik projektu:
Kod: C / C++
plik adc.h:
Kod: C / C++
plik adc.c:
Kod: C / C++
i jeszcze makra pomocnicze:
Kod: C / C++
W podanej postaci wszystko działa. Jeżeli jednak obsługa przerwania będzie w pliku adc.c to nie jest ona w ogóle wywoływana. Nie wiem w czym może być problem bo nigdy wcześniej się z czymś podobnym nie spotkałem. Na dodatek inne przerwania działają i ich procedury obsługi są w innych plikach (Timer0, SPI). Długa przerwa od AVR też robi swoje.
Środowisko: Atmel AVR Studio 5 wersja 5.1.208,
Tryb budowania: DEBUG,
Optymalizacja: -O0
Pozdrawiam