dejmos wrote:
Kompilator zgłasza mi warning : "F_CPU" redefined
I teraz moje pytanie: Czy funkcja #ifndef zapobiega zmianie F_CPU z 8 MHZ na 10 MHz czy też kompilator mnie ostrzega że biblioteka jednak ją zmieniła.
I bardzo dobrze że zgłasza warningi, bowiem Eclipse to normalne środowisko i pod tym względem (ale nie tylko pod tym) o wiele lepsze niż AVR Studio 5/6.
Tymczasem twój BŁĘDNY nawyk definiowania F_CPU w kodzie programu to niestety naleciałość z dziesiątek blogów i innych dziwnych stron w necie, gdzie prawie każdy ostatnio (głównie odkąd ukazało się AVRS 5/6) - gdzie wszyscy tak piszą i ŹLE piszą.
W AVR Studio 5/6 wynika to z tego, że Atmel nie wiedzieć czemu zrezygnował z tak prostej opcji jak ustawianie prędkości taktowania procka w opcjach projektu tak jak to było chociaż w jego starszej wersji AVR Studio 4.xx. Odkąd więc się pojawiły nowsze wersje na samej elektrodzie pojawił się ogromny wysyp prezentowanych kodów z tym nieszczęsnym #define F_CPU xxxxxxx robionym w kodzie bo bez tego w ogóle sporo rzeczy nie chce działać. I pomimo to, że wszędzie ludzie piszą że w kodzie się tego nie robi - to nie odnosi to żadnego skutku wszyscy na potęgę robią ten sam błąd, bo jak tłumaczą bez tego im nie działają programy w AVRS 5/6. Co jest bzdurą ponieważ i w tym nieszczęsnym AVRS 5/6 można i należy ustawić taktowanie nie w kodzie ale w głęboko w opcjach samego toolchaina. Tyle że u początkującego już słowo toolchain wywołuje strach i niezrozumienie a gdzie tam się jeszcze mu dokopać do tej opcji i wiedzieć jak to dodać i że trzeba dać -D na początku ....
----------------
na szczęście masz ECLIPSE - porządne środowisko, i jak wiesz można pięknie ustawić częstotliwość taktowania w opcjach projektu. Jednocześnie musisz pamiętać żeby pod żadnym pozorem NIE DEFINIOWAĆ tego w programie jak próbujesz to zrobić. Pewnie zadasz sobie pytanie no ale jak ? to w jaki sposób wartość F_CPU będzie widoczna w moich plikach projektu ???
Nie martw się, ECLIPSE wartość wpisaną w opcjach projektu - doda AUTOMATYCZNIE do pliku makefile w taki sposób, że właśnie wartość hmm stała F_CPU będzie widoczna W KAŻDYM MIEJSCU PROJEKTU. Rozumiesz ? i tak się to działo też w starszej wersji AVRS 4.xx, tak samo dzieje się w CodeBlocks i innych normalnych środowiskach.
Dlatego śmiało WYKASUJ z kodu swoje #define F_CPU i nigdy go w kodzie nie używaj. Pamiętając jednak o tym, że wartość stałej F_CPU służy tylko dla kompilatora jako informacja do celów kompilacji i nie ma nic wspólnego z fizycznym ustawieniem taktowania procesora. Za fizyczne taktowanie odpowiedzialne są Fusebity
mam nadzieję, że teraz jaśniej?