Witam.
Mam problem z prawidłowym ustawieniem TIMER2 oraz TIMER0 w procesorze Atmega 328P. Jestem na etapie poznawania poszczególnych projektów z niebieskiej książki M. Kardasia. Chciałem zmodyfikować zawarte tam projekty: 05_PWM oraz 03_Multi_LED, tak aby działały na innym niż tam ustawiony. Korzystam z Eclipse Luna skonfigurowanym zgodnie z
tym poradnikiem.
Po przeanalizowaniu noty katalogowej wydawało mi się, że wystarczy dodać parę literek przy nazwach poszczególnych bitów (np. TCCR0A zamiast TCCR0) oraz zmienić procesor w ustawieniach projektu. Jednak mimo dokładnego sprawdzenia nazw bitów w nocie oraz dokładnej analizy kodu wciąż wyskakuje mi ten niepokojący komunikat.
Poniżej załączam pełen kod programu.
Kłopotliwe linijki to: 23-26, 38-41, 52 oraz inne zawierające nazwę OCR0A.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oto wpis z konsoli:
Kod:
14:16:34 **** Incremental Build of configuration Release for project 05_PWM ****
make all
'Building file: ../main.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=11059200UL -MMD -MP -MF"main.d" -MT"main.d" -c -o"main.o" "../main.c"
../main.c: In function 'main':
../main.c:23:2: error: 'TCCR0A' undeclared (first use in this function)
../main.c:23:2: note: each undeclared identifier is reported only once for each function it appears in
../main.c:24:16: error: 'COM0A1' undeclared (first use in this function)
../main.c:25:2: error: 'TCCR0B' undeclared (first use in this function)
../main.c:26:2: error: 'OCR0A' undeclared (first use in this function)
../main.c:38:2: error: 'TCCR2A' undeclared (first use in this function)
../main.c:39:2: error: 'TCCR2B' undeclared (first use in this function)
../main.c:40:2: error: 'OCR2B' undeclared (first use in this function)
../main.c:41:2: error: 'TIMSK2' undeclared (first use in this function)
../main.c:41:16: error: 'OCIE2A' undeclared (first use in this function)
make: *** [main.o] Błąd 1
14:16:37 Build Finished (took 2s.482ms)
Jak widać problemem jest komunikat: 'BIT' undeclared (first use in this function). Dodam, że z timerów korzystałem również w projekcie 03_Multi_LED, który po wyżej opisanych modyfikacjach kompiluje się bez problemu. Mało tego, gdy do tamtego projektu skopiuje wadliwe procedury, to w nim nie wyświetlają mi się żadne errory i również jest możliwość kompilacji. Czyli tak jakby, gdy timer jest ustawiany w pliku main.c problem jest, a gdy w innym pliku źródłowym to go nie ma.
Próbowałem również utworzyć nowy projekt i zjawisko jest jeszcze ciekawsze: w pliku main.c komunikaty jak najbardziej się pokazują, jednak po utworzeniu dodatkowego pliku źródłowego i wklejeniu tam linijek dotyczących timera, udaje się skompilować projekt mimo wyskakujących błędów (wyskakują te same błędy jak w main.c, ale kompilacja przechodzi).
Mam jeszcze jeden mały problem który dotyczy projektu 03_Multi_LED, bo o ile wcześniej kompilował się bez żadnych problemów, to gdy zacząłem mu wklejać do testów TIMER2 z projektu o PWM, to zaczął mi wyskakiwać dziwny warning przy funkcji:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Wyskakujący komunikat zawiera taką treść:
Cytuj:
'TIMER0_COMP_vect' appears to be a misspelled signal handler [enabled by default]
Również z nim nie potrafię się uporać.
Jest to mój pierwszy post na tym forum. Pozdrawiam wszystkich i z góry dziękuję za udzielone wskazówki
