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 22 maja 2025, o 11:51


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
    Autor Wiadomość
    PostNapisane: 1 sty 2018, o 14:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 cze 2012
    Posty: 414
    Lokalizacja: Oborniki
    Pomógł: 5

    Witam Was.

    Na razie mogę tylko ogólnikowo zapytać, gdyż nie mam pod ręką żadnego kodu.

    Zacząłem zabawę z systemem operacyjnym jak w tytule (FREERTOS). Pisanie sterowników bazujących na sprzętowych rozwiązaniach (i2c, uart itp) jest generalnie dość proste. Kolejki są do opanowania. Jednak przy próbach na zastawie uruchomieniowym pojawiły się pewne komplikacje.

    Nie potrafię wprost przepisać kodów z AVR (mirekk36) na ARM (STM32) tak, aby działały na systemie FreeRTOS. Wszystko jest jasne i logiczne do momentu, aż nie natknę się na linijkę w stylu "_delay_us(47)". Jak takie opóźnienie prawidłowo implementować w systemie operacyjnym? Oczywiście rozumiem, że brzydko wstawić delay, ale przy częstotliwości proca 400MHz czekanie tyłu cykli zegara to marnotrawstwo zasobów.

    Ma ktoś jakieś pomysły na to?

    Przy okazji najlepsze życzenia dla forumowiczów na nowy 2018 rok:)

    Mikołaj

    Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka

    _________________
    Pozdrawiam:
    Mikołaj



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 sty 2018, o 15:31 
    Offline
    Nowy

    Dołączył(a): 21 kwi 2016
    Posty: 16
    Lokalizacja: Mińsk Mazowiecki
    Pomógł: 1

    Ahoj,
    generalnie to wykorzystuje się funkcje wbudowane w FreeRtos :-) vTaskDelay, vTaskDelayUntil.
    Jeśli chodzi o implementację FreeRtos na STM32 to mogę polecić Tobie stronę autora ciekawej książki :-)
    https://www.carminenoviello.com/2015/06 ... toolchain/
    Wszystkiego dobrego w Nowym Roku 2018, wielu ciekawych pomysłów :-)
    Pozdrawiam



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 sty 2018, o 19:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 cze 2012
    Posty: 414
    Lokalizacja: Oborniki
    Pomógł: 5

    roberto_k_w napisał(a):
    Ahoj,
    generalnie to wykorzystuje się funkcje wbudowane w FreeRtos :-) vTaskDelay, vTaskDelayUntil.
    Jeśli chodzi o implementację FreeRtos na STM32 to mogę polecić Tobie stronę autora ciekawej książki :-)
    https://www.carminenoviello.com/2015/06 ... toolchain/
    Wszystkiego dobrego w Nowym Roku 2018, wielu ciekawych pomysłów :-)
    Pozdrawiam


    Dzięki za link, przejrzę co tam mają ciekawego :D Niestety nie ma w nim słowa o moim problemie...

    dambo napisał(a):
    vTaskDelay, vTaskDelayUntil - spoko jeśli nie są to jakieś krytyczne rzeczy itp. Jednak w przypadku 1W itp gdzie te czasy w uS są kluczowe trzeba jakoś inaczej podejść - nadać większy priorytet + zrobić ten delay na osobnym timerku z odliczaniem uS. Jeśli chodzi o delaye w LCD, lub bardziej ogólnie o obsługę LCD - to się u mnie dzieje zawsze na najniższym priorytecie i każdy wątek może to przerwać, ale jak pisałem w LCD to na nic nie wpłynie, ale komunikację 1W trzeba inaczej zorganizować.


    No właśnie... Tylko jak? ;)

    _________________
    Pozdrawiam:
    Mikołaj



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 sty 2018, o 20:11 
    Offline
    Użytkownik

    Dołączył(a): 29 lip 2014
    Posty: 195
    Pomógł: 44

    Witam,

    mikandrzej napisał(a):

    No właśnie... Tylko jak? ;)


    Tworzysz taska np. vYaskPomTemp, nadajesz mu najwyższy priorytet. Opóźnienia rzędu us realizujesz za pomocą dodatkowego timera, po prostu w pętli ( w tym tasku) czekasz na jego wyzerowanie. Pamiętaj tylko o umieszczeniu tego opóźnienia w sekcji krytycznej. Oczywiście, mówię tu o najprostszej i nieoptymalnej implementacji tego 1W. Z praktyki mogę Ci napisać, że opóźnienia dla wygenerowania resetu możesz wygenerować nawet za pomocą vTaskDelay - pod warunkiem, że ustawisz sobie tick dla RTOS na poziomie 0.2-0.5ms. Początkowo zastosowałem tą metodę u siebie i nawet w miarę sensownie to działało.
    Jeśli chcesz zrobić to bardziej "po ludzku" ;-), to niestety trzeba już trochę bardziej się namęczyć. Ja u siebie mam obecnie maszynę stanów napędzaną przez jeden z timerów w OPM i w przerwaniu od tego timera mam obsługę 1W na poziomie "bitowym". I tu uwaga - gdybyś chciał tak to zrealizować, to musisz ustawić najwyższy (0) priorytet dla tego przerwania.

    Pozdrawiam, QuadMan.

    P.S. Widzę, że kol dambo był szybszy, ale zostawię tego posta tak jak jest.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 1 sty 2018, o 22:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 24 cze 2012
    Posty: 414
    Lokalizacja: Oborniki
    Pomógł: 5

    Dzięki Panowie. Ma to sens, w sumie taki urok tej magistrali, że trzeba ją obsługiwać badając stan pinu co jakiś czas, a nie na przerwanie przy zboczu.

    Co do pisania obsługi tego na FREERTOS, to faktycznie takie podejście można zastosować, tylko zastanawiam się czy nie lepiej jednak wówczas szukać termometru na I2C, albo inne sprzetowo zaimplementowane rozwiązanie? Czekanie w pętli mnie odrzuca, nie po to chce stosować STM32F7, żeby zajmować jego cenny czas czekaniem tysięcy cykli w pętli... Już wolałbym osobnego STM32F1 dać obok, żeby robił wszystko co związane z 1wire i oddawał to przez i2c :)

    W innym wątku poruszę temat obsługi 1wire za pomocą UART, byc może będzie już ktoś miał z tym jakieś doświadczenie:)

    Pozdrawiam

    Wysłane z mojego Redmi Note 4 przy użyciu Tapatalka

    _________________
    Pozdrawiam:
    Mikołaj



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO