Hej wszystkim!
Mam małe pytanko - tylko do szpeców od AVR i GCC. Napotkałem identyczny problem do opisanego tutaj. Niestety nie podano tam rozwiązania tej kwestii.
O co konkretnie chodzi? Jeśli nie zdefiniuję F_CPU a używam biblioteki delay.h to kompilator wyrzuca warninga. Wynika to niniejszego kodu - fragmentu biblioteki:
Zatem w mainie przed zainkludowaniem pliku h definiuję sobie F_CPU ajk niżej:
Warning znika ale np. nie działają biblioteki do obsługi LCD. Ponownie zaczynają dobrze działać, gdy wyłączy się optymalizację przez co objętość kodu z 10 urasta do ponad 60 % rozmiaru flasha.
Sytuację da się rozwiązać deklarując F_CPU wewnątrz pliku delay.h. Da się włączyć optymalizację i funkcje do obsługi LCD wciąż działają.
Mogę zrozumieć, że dyrektywy #define działają lokalnie, wewnątrz danego pliku. Pytanie jednak czemu warningi działają tak myląco. Wygląda bowiem na to, że mimo definicji w main rozpoznanej w pliku h (nie pojawił się warning) wciąż w pliku bibliotecznym widziana jest inna - zamiast tej zdefiniowanej - wartość F_CPU...
Jakieś pomysły?
Pzdrwm
Mam małe pytanko - tylko do szpeców od AVR i GCC. Napotkałem identyczny problem do opisanego tutaj. Niestety nie podano tam rozwiązania tej kwestii.
O co konkretnie chodzi? Jeśli nie zdefiniuję F_CPU a używam biblioteki delay.h to kompilator wyrzuca warninga. Wynika to niniejszego kodu - fragmentu biblioteki:
Kod: C / C++
Zatem w mainie przed zainkludowaniem pliku h definiuję sobie F_CPU ajk niżej:
Kod: C / C++
Warning znika ale np. nie działają biblioteki do obsługi LCD. Ponownie zaczynają dobrze działać, gdy wyłączy się optymalizację przez co objętość kodu z 10 urasta do ponad 60 % rozmiaru flasha.
Sytuację da się rozwiązać deklarując F_CPU wewnątrz pliku delay.h. Da się włączyć optymalizację i funkcje do obsługi LCD wciąż działają.
Mogę zrozumieć, że dyrektywy #define działają lokalnie, wewnątrz danego pliku. Pytanie jednak czemu warningi działają tak myląco. Wygląda bowiem na to, że mimo definicji w main rozpoznanej w pliku h (nie pojawił się warning) wciąż w pliku bibliotecznym widziana jest inna - zamiast tej zdefiniowanej - wartość F_CPU...
Jakieś pomysły?
Pzdrwm
