ATNEL tech-forum https://forum.atnel.pl/ |
|
regulacja częstotliwości a program https://forum.atnel.pl/topic4767.html |
Strona 1 z 1 |
Autor: | alvarofun [ 12 lis 2013, o 18:45 ] |
Tytuł: | regulacja częstotliwości a program |
Witam, Napisałem sobie program pomiaru temperatury z DS18B20 z wyświetleniem jej na ekranie 4x20. Mam atmega8a ustawioną na 1mhz w mcu jak i w projekcie programu pomiar działa doskonale, postanowiłem zmienić częstotliwość mcu na 8mhz, w projekcie programu też dałem na 8, lecz temperatury już nie pokazuje w zwiazku z tym mam pytanie Czy wszytskie czasy typu _delay_ms(300) na czestotliwoscie 1mhz przy zwiększeniu częstotliwości np do 8mhz musiał bym pomnożyć przez osiem żeby dobrze pokazywało temperature??? czyli było by _delay_ms(2400) ????? |
Autor: | arturf209 [ 12 lis 2013, o 18:52 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Nie. Wlasnie dlatego tak ważna jest zmiana w ustawieniach projektu. Zrób clean przed kompilacja. |
Autor: | alvarofun [ 12 lis 2013, o 18:55 ] |
Tytuł: | Re: regulacja częstotliwości a program |
No ale ja robilem clean wszytskich projektów przed kompilacją, i dalem mlotek poszlo ok dalem avr i juz mi sie na 8mhz temperatura nie pokazala |
Autor: | arturf209 [ 12 lis 2013, o 19:03 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Bez kodu możemy sobie tutaj dyskutować o niczym. czy jak wrocisz do slimaczego tempa to wszystko działa jak należy? |
Autor: | alvarofun [ 12 lis 2013, o 19:05 ] |
Tytuł: | Re: regulacja częstotliwości a program |
no właśnie tak na 1mhz jest wszytsko ok |
Autor: | xbary [ 12 lis 2013, o 19:20 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Zapewne F_CPU albo w którymś z przeliczników używasz stałej podanej z palca , przypuszczalnie można tak chyba domniemać. |
Autor: | alvarofun [ 12 lis 2013, o 19:27 ] |
Tytuł: | Re: regulacja częstotliwości a program |
ale to F_CPU ma być w pliku main.c ??? może ktoś poda przykład??? |
Autor: | Krauser [ 12 lis 2013, o 19:37 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Nie kombinuj, bo nie potrzeba. Jak pamiętasz przykład z miganiem LEDem to tu też go umieść i masz rozwiązanie problemu. |
Autor: | alvarofun [ 12 lis 2013, o 20:04 ] |
Tytuł: | Re: regulacja częstotliwości a program |
dioda led jak dam na 8mhz to miga jak szalona |
Autor: | Krauser [ 12 lis 2013, o 21:26 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Bo właśnie kompilator obliczył opóźnienia dla 1MHz, a jak fusebitami zwiększysz taktowanie na 8MHz to opóźnienie się skraca i jak już było pisane zmieniacz teraz w opcjach projektu taktowanie na takie jak masz w rzeczywistości. Robisz Clean i Build, wgrywasz i ma działać. |
Autor: | Grzegorz... [ 12 lis 2013, o 22:17 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Krauser napisał(a): Bo właśnie kompilator obliczył opóźnienia dla 1MHz, a jak fusebitami zwiększysz taktowanie na 8MHz to opóźnienie się skraca i jak już było pisane zmieniacz teraz w opcjach projektu taktowanie na takie jak masz w rzeczywistości. Robisz Clean i Build, wgrywasz i ma działać. A ja sobie tak myślę, że kolega po prostu nie przestawił procka "fusami" na 8 MHz i dlatego "dioda mruga jak szalona". Poczytaj i odpowiednio zastosuj fusebity i myślę, że wszystko ruszy. -- Grzegorz... |
Autor: | Krauser [ 12 lis 2013, o 22:40 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Grzegorz... napisał(a): A ja sobie tak myślę, że kolega po prostu nie przestawił procka "fusami" na 8 MHz i dlatego "dioda mruga jak szalona". Nie zgodzę się z kolegą. Tak to sobie tłumaczę: - Jak mam taktowanie 1MHz to 1 rozkaz zajmuje 1/1MHz = 1us, a jak 8MHz to 1/8us (8 razy krócej) - Jeśli chcemy mieć opóźnienie o 1ms = 1000us -> _delay_ms(1); to procesor musi wykonać 1000 rozkazów dla 1MHz i 8000 dla 8MHz Jak kompilator otrzymał informację, że ma skompilować na kwarc 1MHz to _delay_ms(1); zamieni na pętlę która wykona 1000 rozkazów. Jeśli teraz taktowanie jest większe i zamiast 1MHz wynosi 8MHz to 1000 rozkazów nie będzie trwało 1ms tylko 1/8ms. Podsumowując jak LED miga szybciej to należy przestawić opcje projektu. Drugi przykład jak masz projekt skompilowany dla 8MHz to _delay_ms(1) zostaje zamienione na 8000 rozkazów. Jeśli rzeczywiste taktowanie jest mniejsze i zamiast 8MHz masz 1MHz to 8000 rozkazów trwa dłużej i opóźnienie wynosi 8ms. Podsumowując jak LED miga wolniej niż zakłada program to należy przestawić fusebity. |
Autor: | Grzegorz... [ 13 lis 2013, o 14:07 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Krauser napisał(a): Grzegorz... napisał(a): A ja sobie tak myślę, że kolega po prostu nie przestawił procka "fusami" na 8 MHz i dlatego "dioda mruga jak szalona". Nie zgodzę się z kolegą. Tak to sobie tłumaczę: - Jak mam taktowanie 1MHz to 1 rozkaz zajmuje 1/1MHz = 1us, a jak 8MHz to 1/8us (8 razy krócej) - Jeśli chcemy mieć opóźnienie o 1ms = 1000us -> _delay_ms(1); to procesor musi wykonać 1000 rozkazów dla 1MHz i 8000 dla 8MHz Jak kompilator otrzymał informację, że ma skompilować na kwarc 1MHz to _delay_ms(1); zamieni na pętlę która wykona 1000 rozkazów. Jeśli teraz taktowanie jest większe i zamiast 1MHz wynosi 8MHz to 1000 rozkazów nie będzie trwało 1ms tylko 1/8ms. Podsumowując jak LED miga szybciej to należy przestawić opcje projektu. Drugi przykład jak masz projekt skompilowany dla 8MHz to _delay_ms(1) zostaje zamienione na 8000 rozkazów. Jeśli rzeczywiste taktowanie jest mniejsze i zamiast 8MHz masz 1MHz to 8000 rozkazów trwa dłużej i opóźnienie wynosi 8ms. Podsumowując jak LED miga wolniej niż zakłada program to należy przestawić fusebity. No i ja dokładnie o tym napisałem może zbyt lapidarnie. Jeśli kolega zmienił taktowanie tylko w projekcie, a nie podwyższył fizycznie taktowania mikrokontrolera do 8 MHz to po wgraniu kod _delay_ms(1) wykonuje się 8 razy szybciej i stąd szybsze mruganie diody. -- Grzegorz... |
Autor: | OdeOn [ 13 lis 2013, o 15:08 ] |
Tytuł: | Re: regulacja częstotliwości a program |
Chyba najprościej jak mkAVRCaluculator sie wypowie po wcisnieciu "Sprawdz podłączony AVR" i zajrzenie w Fusy uproszczone. wg mnie też to wygląda na pozostawionym procku na 1 mhz. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |