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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 06:56


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
    Autor Wiadomość
    PostNapisane: 22 maja 2023, o 09:51 
    Offline
    Użytkownik

    Dołączył(a): 22 lip 2018
    Posty: 31
    Pomógł: 0

    Witam.

    Czy to jest normalne, że w zależności od taktowania uC funkcja _delay_ms zmienia swoje działanie?
    U mnie działa to w ten sposób, że przy f=1MHz, dealy działa poprawnie, czyli 1 s to 1 s.
    Natomiast zmieniając na taktowanie 8MHz, wówczas 1 s to 1/8 s .



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 maja 2023, o 10:02 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    Bo opcją zmiany taktowania w eclipse nie zmieniasz fizycznie taktowania procka. Masz procka domyślnie taktowanego 1MHz i dlatego tu ci przypadkowo dobrze działa. Zainteresuj się fusebitami, bo one są do zmiany taktowania.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 22 maja 2023, o 23:38 
    Offline
    Nowy

    Dołączył(a): 13 kwi 2016
    Posty: 22
    Pomógł: 1

    elektrykapradnietyka napisał(a):
    Czy to jest normalne, że w zależności od taktowania uC funkcja _delay_ms zmienia swoje działanie?


    Tak, to jest normalne. W opcjach projektu masz zadeklarowaną prędkość działania procesora (częstotliwość taktowania). Dajmy na to, że masz 1MHz. Twój procek, załóżmy, działa z fabrycznym ustawieniem, czyli taktowanie z wewnętrznego źródła o częstotliwości 1MHz. Ok, czyli ustawienie w projekcie jest zgodne ze stanem faktycznym. Piszesz jakiś programik, testujesz sobie _delay_ms(100) i faktycznie opóźnienie wynosi 100ms. Jeśli jednak w ustawieniach projektu zadeklarujesz, że prędkość wynosi 8MHz, a NIE ZMIENISZ TEGO RÓWNIEŻ W PROCKU, to program "będzie myślał, że procek działa osiem razy szybciej i inaczej "zbuduje sobie" funkcję delay. Oczywiście wtedy _delay_ms(100); będzie trwał 800ms, bo procek nadal działa tylko na 1MHz


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 maja 2023, o 09:59 
    Offline
    Użytkownik

    Dołączył(a): 22 lip 2018
    Posty: 31
    Pomógł: 0

    mirekk36 napisał(a):
    Bo opcją zmiany taktowania w eclipse nie zmieniasz fizycznie taktowania procka. Masz procka domyślnie taktowanego 1MHz i dlatego tu ci przypadkowo dobrze działa. Zainteresuj się fusebitami, bo one są do zmiany taktowania.


    Ja właśnie zmieniałem częstotliwość w oparciu o fusebity.

    Próbowałem też robić tak, że zmieniałem częstotliwość z 1 MHz na 8 MHz w projekcie w zakłądce properties i częstotliwość w procku w oparciu o fusebity. Tak z czystej ciekawości, co się stanie.

    Mimo tego, funkcja _delay_ms i tak przyspieszała.

    Czy w tym przypadku tak też powinno się stać z funkcją delay??



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 maja 2023, o 12:34 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Sprobuj zrobic clean projektu i wtedy kompilację


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 maja 2023, o 12:41 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    elektrykapradnietyka napisał(a):
    Próbowałem też robić tak, że zmieniałem częstotliwość z 1 MHz na 8 MHz w projekcie w zakłądce properties i

    do tego masz MkAvrCalculator

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 maja 2023, o 23:02 
    Offline
    Użytkownik

    Dołączył(a): 22 lip 2018
    Posty: 31
    Pomógł: 0

    mirekk36 napisał(a):
    do tego masz MkAvrCalculator


    Jak do tej pory byłem przekonany że częstotliwość ustawiona w eclipse musi się zgadzać z tą, ustawioną we fusebitach, do prawidłowego działania projektu.
    W takim razie, po co ustawia się częstotliwość w eclipse, skoro to nic mi nie daje, a przynajmniej w moim przypadku??
    Pytam z czystej ciekawości.

    ------------------------ [ Dodano po: 1 minucie ]

    Cytuj:
    Sprobuj zrobic clean projektu i wtedy kompilację


    Zrobiłem, ale to nic nie dało.

    ------------------------ [ Dodano po: 18 minutach ]

    Tak swoją drogą, jestem w tym momencie przy ćwiczeniu PWM z Bluebooka.
    Kolejny mój problem do rozwiązania jest taki, że przy taktowaniu 1MHz diody się rozjaśniają i ściemniają, ale widać jeszcze ich mruganie.
    Czy dobrze teraz powiem, że w tym przypadku muszę coś zrobić z częstotliwością występowania przerwań ??
    Oczywiście, jestem jeszcze zielony i nie wiem jak się za to zabrać.

    Czy koledzy znają rozwiązanie problemu??



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 maja 2023, o 01:02 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27396
    Lokalizacja: Szczecin
    Pomógł: 1043

    elektrykapradnietyka napisał(a):
    Czy koledzy znają rozwiązanie problemu??

    Ja znam i jest oczywiste jak drut i słońce i już ci je podałem - ustaw fusebity w mkavrcalculatorze. Ale ty czytasz i nie słuchasz - piszesz później coś swojego - to jak ci pomóc?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 maja 2023, o 17:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1034
    Lokalizacja: Trójmiasto
    Pomógł: 190

    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.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 maja 2023, o 22:23 
    Offline
    Użytkownik

    Dołączył(a): 22 lip 2018
    Posty: 31
    Pomógł: 0

    micky napisał(a):
    Sprobuj zrobic clean projektu i wtedy kompilację


    Nie wiedzieć czemu, po utworzeniu nowego projektu (kopia starego) i zrobieniu cleana, zarówno jeden jak i drugi projekt zaczęły działać prawidłowo.
    Wcześniej też robiłem clean i nic.
    Można popaść we frustrację, ale problem rozwiązany.

    Dzięki Pany.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 maja 2023, o 09:05 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    No i pięknie.
    Tak jak wspominał kolega, procek nie wie z jaką śmiga prędkością i kompilator potrzebuje tych informacji (F_CPU), żeby odpowiednio 'dobrać' czasówki do np. delayów. Z tego też powodu, najprostszym testem czy masz dobrze poustawiane to zapalanie leda co np 10sek i sprawdzenie czy się zgadza ze stoperem.
    A najlepiej to mieć najprostszy analizator logiczny (za doslownie 30-50zl) i popatrzeć na przebiegi. Taki analizator przyda sie do wielu, wielu rzeczy w cyfrówce.



    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: 11 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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