Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 lut 2026, o 10:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 7 maja 2015, o 13:35 
Offline
Nowy

Dołączył(a): 06 maja 2015
Posty: 2
Pomógł: 0

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.

Składnia: [ Pobierz ] [ Ukryj ]
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:
Składnia: [ Pobierz ] [ Ukryj ]
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 :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2015, o 15:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Odniosę się tylko do dwóch rzeczy, za resztą nie nadążam :)
1.W tytule podajesz ATmega328P a w.g Twojego projektu masz wpisane ATmega32.
Obrazek
Dla AT328P po zmianie ISR'a ( to ta druga sprawa ) program się kompiluje:
Obrazek

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 maja 2015, o 16:19 
Offline
Nowy

Dołączył(a): 06 maja 2015
Posty: 2
Pomógł: 0

Dziękuję za Twoją odpowiedź. Faktycznie wyświetla się tam atmega32. Projekt był właśnie na taką atmegę robiony, a ja chciałem go przerobić by działał na atmedze 328P. Jednak nie rozumiem czemu w konsoli nadal widnieje tam taka nazwa, gdyż w zakładce Properties ustawiłem atmegę 328P. Oto dowód: Obrazek

Drugi problem został rozwiązany i warning już się nie pokazuje :)

EDIT: Problem dziś niespodziewanie ustąpił. Utworzyłem nowy projekt, dokładnie go skonfigurowałem i skopiowałem do niego kod programu. Jakimś cudem kompiluje się teraz bez żadnych błędów. Temat do zamknięcia :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO