Skocz do zawartości

Luuke

Użytkownicy
  • Zawartość

    126
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Luuke zajął 1. miejsce w rankingu.
Data osiągnięcia: 6 maja 2019.

Treści użytkownika Luuke zdobyły tego dnia najwięcej polubień!

Reputacja

33 Bardzo dobra

O Luuke

  • Ranga
    5/10
  • Urodziny 26.11.1990

Informacje

Ostatnio na profilu byli

788 wyświetleń profilu
  1. Luuke

    Sterowanie silnikami BLDC

    W porządku, przejdźmy do praktyki. Zrób przegląd dostępnych sterowników, które będą w stanie wysterować silnik o zadanych parametrach, wrzuć tutaj to co znajdziesz z przemyśleniami który wg Ciebie najlepszy, a my zweryfikujemy czy dobrze wybrałeś. Ot cała praktyka
  2. Luuke

    Import z CubeIDE do SW4STM32

    Mogę się mylić, ale... Odkąd ST wypuściło CubeIDE tool dostarczany przez AC6, czyli System Workbench for STM32 (SW4STM32) przestał być wspierany (a przynajmniej tak mi się wydaje). W związku z tym w plikach konfiguracyjnych dla CubeIDE mogą znajdować się elementy, które stare ST4STM32 nie koniecznie będzie potrafiło obsłużyć. Generalnie może być problem z tym co chcesz zrobić.
  3. arm_pid_f32() używa zmiennych zmiennoprzecinkowych (floating point) typu float, natomiast arm_pid_q31() i arm_pid_q15() używają zmiennych stałoprzecinkowych (fixed point) pod którymi tak faktycznie kryją się typy integer. W kwestii kiedy czego używać (moja opinia/podejście): jeśli Twój procek ma wbudowane FPU lub nie zależy Tobie na szybkim wykonywaniu obliczeń to śmiało używaj arytmetyki bazującej na typach zmiennoprzecinkowych. Jeśli natomiast zależy Tobie na czasie wykonywania operacji, nie masz FPU w procku (bo jest to na przykład ARM Cortex-M0/M0+) to przyjrzyj się arytmetyce s
  4. Spojrzałem do repozytorium: oled2 = new SSD1306(i2c_settings); Jeśli nie ma takiej konieczności staraj się nie używać dynamicznej alokacji pamięci, szczególnie w systemach wbudowanych. Nie bez powodu standard MISRA zabrania użycia jakiejkolwiek dynamicznej alokacji pamięci. Sterta (heap) może się nadmiernie rozrosnąć i nadpisać obszar stosu (stack), a wtedy to już czarna magia zaczyna się dziać W związku z powyższym na początek proponuję zamienić powyższą linijkę na coś takiego: SSD1306 oled2 { i2c_settings }; edit: Nie bawiłem się FreeRTOSem, ale
  5. Jak najbardziej! Nie ma koniecznie potrzeby uruchamiać tych przerwań i można z samego HF to sprawdzić.
  6. Tu nie chodzi o to jak jest HAL napisany tylko jak działają ARMy. Jeśli się zatrzymuje w HF to przyczyną może być m.in. brak obsługi BF, UF, MMF. W takim przypadku bardziej nawet może się przydać biblioteka CMSIS niż HAL. Zacznij od włączenia i napisania obsługi przerwań błędów w rdzeniu i wtedy sprawdź w którym przerwaniu ląduje procek. Na tej podstawie odfiltrujesz sporą część możliwych przyczyn HardFaulta. Do tego pobierz Programming Manual dla Twojego procka i poczytaj o rdzeniu i jego błędach. W załączniku przykładowe typy błędów w Cortex-M4.
  7. Jeśli będziesz mieć włączoną obsługę tych przerwań to nie będziesz musiał ręcznie sprawdzać tych błędów. Przerwanie samo się wywoła i to Cię już nakieruje gdzie szukać problemu. A jeśli żadne z tych przerwań się nie wywoła pomimo, że będą włączone to będzie znaczyło, że problem leży gdzieś indziej.
  8. Cześć, Masz uruchomione pozostałe przerwania rdzenia (UsageFault, BusFault itd)? HardFault może być spowodowany też brakiem obsługi właśnie tych przerwań. Cytat z Programming Manual PM0214 dla STM32F411CE (Cortex M4)
  9. Kiepsko to widzę w większych projektach Dobrze zrozumiałem? Wymagane są uprawnienia admina, żeby w ogóle zapisywać pliki?!
  10. Tak uważasz? To jak wytłumaczysz zmianę procesora (i producenta) celem wygenerowania oszczędności na poziomie 100k€ rocznie? Wystarczy, że przy rocznym zapotrzebowaniu jednego miliona sztuk mikrokontrolerów znajdzie się coś tańszego o zaledwie 10 eurocentów. I co? Pozostaniesz wtedy przy pierwszym wyborze, bo podjąłeś STRATEGICZNĄ decyzję o wyborze procka + środowiska od danego producenta? Czy może lepiej wykorzystać DARMOWE środowisko uniwersalne (również open source), podmienić tylko warstwę sprzętową i czerpać korzyści? Uważasz, że to mało? Tyle pamięci to wystarczy do implementacji
  11. Jeśli bawisz się amatorsko / hobbistycznie to nie ma to większego znaczenia, ale jeśli zależy Ci na możliwości przenoszenia kodu między procesorami różnych producentów to używanie dostarczanych przez nich środowisk jest co najmniej niepraktyczne. A weź to jeszcze podepnij pod jakieś CI/CD, gdy masz do dyspozycji jedynie pliki projektu ze środowiska bazującego np. na Eclipsie. Ciarki przechodzą na samą myśl o tym
  12. Umiejętność czytania not katalogowych i własnoręczne pisanie niskich warstw aplikacji (obsługa peryferiów). Zyskujesz pełną kontrolę nad tym co się dzieje z Twoim prockiem.
  13. Powiem tak, robiąc jakieś demo lub dla siebie coś na szybko to jeszcze spoko, ale pracując nad kodem produkcyjnym radziłbym unikać tego typu generatorów kodu. Niestety okazuje się, że są w nich błędy typu ustawiasz jedno, a dostajesz coś innego. Dla przykładu zegar ADC w rodzinie F0 niby ustawiony na synchroniczny z dzielnikiem 4. Wszystko działa, ADC pięknie zbiera próbki. No ale z czasem stwierdziłem, że jednak zegar asynchroniczny i ciutkę szybszy będzie korzystniejszy pomimo dodatkowego czasu potrzebnego na synchronizację. Klik klik, buduję, wgrywam... brak zmian. Okazało się, że ADC od sa
  14. Kąt elektryczny dotyczy wirującego pola magnetycznego, a kąt mechaniczny wirnika. Silniki BLDC często mają zwielokrotnioną ilość biegunów magnetycznych - krotność k. Wirnik podąża za wirującym polem magnetycznym, ale niekoniecznie kąt obrotu musi być w stosunku 1:1. Dla przykładu jeśli krotność k = 4 to 1 obrót elektryczny pola magnetycznego spowoduje tylko 1/4 obrotu mechanicznego wirnika. Należy pamiętać, że zwiększenie krotności uzwojenia to nie to samo co zmiana ilości faz w silniku.
  15. Luuke

    Sterowanie silnikami BLDC

    Oba typy silników można sterować wykorzystując 6-step lub FOC, ale nieodpowiednie dobranie sterowania spowoduje spadek jakości sterowania i wspomniane już wcześniej efekty uboczne. Różnica w sygnałach BEMF wynika ze sposobu nawinięcia uzwojeń (po lewej BLDC, po prawej PMSM).
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.