elektrykapradnietyka napisał(a):
Czy koledzy znają rozwiązanie problemu??
Mam wrażenie że nie rozumiesz podstaw działania uC.
To z jaką prędkością działa mikrokontroler zależy tylko i wyłącznie od fusebitów.
Natomiast w eclipse, w propertisach projektu dla porządku ustawia się tę samą wartość, ale NIE dla tego że tak trzeba i bez tego nie będzie wogule działać. Chodzi o, że niektóre funkcje/makra są w oparciu o tę ustawioną wartość przeliczane podczas kompilacji.
Weźmy tę wspomnianą funkcję (a bardziej makro) _delay_ms. To nie jest typowa funkcja do której możesz przekazać zmienna. Wartość wpisywana w nawiasie musi być stałą dosłowną, czyli taką która w momencie kompilacji ma konkretną namacalną wartość.
I tu ważne jest by zrozumieć dla czego. Otóż uC nie ma żadnego stopera, zegarka czy innych takich gadżetów. Ma tylko zegar taktujący, który tyka ze stałą ustaloną wartością. Sam uC ma listę rozkazów których większość wykonuje w 1 takcie zegara, czyli mamy tu można powiedzieć najmniejszą jednostkę czasu jaką jest takt zegara. I teraz makro _delay_ms działa w ten sposób że jeśli wpiszemy np. _delay_ms(10), to podczas kompilacji zostanie to przeliczone na liczbę pustych rozkazów których sumaryczny czas wykonywania będzie odpowiadał właśnie tym 10ms. Ale żeby to zostało dobrze przeliczone, tzn. by ten dalay trwał rzeczywiste 10ms, to właśnie w propertisach projektu musi być podana wartość zegara taktującego z jaką rzeczywiście jest taktowany procek, eclipse tego z procka NIE odczyta, to programista musi o ten wpis zadbać. A konsekwencją niezgodności tego wpisu z rzeczywistą wartością taktowania są właśnie rozjechane delaye.
A więc jeśli u Ciebie ma miejsce przypadek takich rozjechanych delayów, a twierdzisz że dobrze ustawiasz taktowanie w fusach i tożsamą wartość w projekcie, i robisz clean projektu po zmianach taktowania; to przychodzi mi do głowy jeszcze tylko jedna rzecz która jest przypadłością eclipse, a o której pośrednio Mirek wspomina w poradnikach. A chodzi o kreatora projektu, i o to by podczas kreatora NIE wybierać procka i NIE ustawiać taktowania, tylko przeklikać do końca kreatora i po utworzeniu projektu dopiero wejść w properties i ustawić właściwy procek i taktowanie. Bo jak się to robi podczas kreatora to często się dzieją później dziwne rzeczy.
Sprawdź ten trop i potestuj.