Treker (Damian Szymański) Listopad 17, 2018 Udostępnij Listopad 17, 2018 Dnia 14.11.2018 o 16:57, mikoby napisał: Hej, potwierdzam, że pozycja zeruje się co 5 obrotów. W związku z tym jaka powinna być informacja w dokumentacji odnosnie liczby impulsów na obrót (Pulses outputted per circle)? 20? Tak, dokładnie tak - w dokumentacji producenta, powinna być informacja, że enkoder generuje 20 impulsów na obrót. Dnia 14.11.2018 o 16:57, mikoby napisał: I czy powinna być w dokumentacji informacja, że enkoder resetuje się, co 100 impulsów? (w przeciwnym razie trzeba to ustalić doświadczalnie?) Nie, nie to już nie jest kwestia enkodera tylko naszego programu, w którym zostało (błędnie) założone, że enkoder ma inną liczbę impulsów na obrót. Albo autor kursu się tutaj pomylił, albo miał jeszcze inną wersję enkodera. Teraz już do tego nie dojdę, ale postaram się jakoś zaktualizować kurs, aby miało to "ręce i nogi". To po jakim czasie "zeruje się" pozycja enkodera to kwestia programowa. Tutaj zostało ustawione błędnie 100 pozycji na obrót, dlatego w praktyce oznacza to u nas 100 / 20 = 5 obrotów. Gdyby w programie było ustawione 20 pozycji na obrót, to wskazanie enkodera resetowałoby się co 1 obrót. Cytuj Link do komentarza Share on other sites More sharing options...
misklap Luty 3, 2019 Udostępnij Luty 3, 2019 Witam, Przykład 05_PWM z tego odcinka skompilowany bezpośrednio działa, ale utworzony samodzielnie w Eclipse i CubeMX już nie. Wydaje się, że problem jest z firmware. Plugin CubeMX (w wersji 5.0.1) raportuje (w zakładce Project Manager) że ma firmware STM32Cube FW_F4_V1.11.0, i z tym firmwarem działa. Ale upgrade do najnowszego firmware'u (STM32Cube FW_F4_V1.23.0) i regeneracja kodu powoduje, że przykład przestaje działać. Przestaje być wywoływana procedura HAL_SYSTICK_Callback. Niestety, nie udało mi się przywrócić starej wersji firmware'u, nie można też jej wybrać w nowych projektach, co powoduje, że technik opisanych w tym odcinku kursu nie można wykorzystywać w nowych projektach. Czy zna ktoś obejście tego problemu? Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Luty 4, 2019 Udostępnij Luty 4, 2019 @misklap, dziękuję za sygnał - to niestety wada korzystania z takich rozwiązań, jak widać przy aktualizacjach mogą pojawiać się problemy. Sprawdzimy temat za jakiś czas i wprowadzimy poprawki (jeśli domyślimy się co należy zmienić)... Jeśli ktoś inny znajdziesz wcześniej odpowiedź na to pytanie to będę wdzięczny za podzielenie się tutaj rozwiązaniem 🙂 Potwierdza się przy okazji słuszność lekkiego sceptycyzmu @Elvisa do tego generatora kodu 😉 Cytuj Link do komentarza Share on other sites More sharing options...
misklap Luty 4, 2019 Udostępnij Luty 4, 2019 Trochę pogooglowałem i znalazłem rozwiązanie. Na wstępie mała obserwacja: z opisu wynika, że w main() powinny być linie: HAL_TIM_Base_Start(&htim4); HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3); Podczas gdy wystarcza tylko ta druga, żeby działało ze starym firmwarem. Żeby zadziałało zarówno ze starym i nowym firmwarem, należy: a) zamienić nagłówek naszej funkcji z: void HAL_SYSTICK_Callback(void) na void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) b) w main() zamienić wywołanie HAL_TIM_Base_Start(&htim4); na HAL_TIM_Base_Start_IT(&htim4); c) w CubeMX ustawić: TIM4|NVIC Settings TIM4 global interrupt|Enabled = true i wygenerować kod. (W przypadku starego firmware'u, spowoduje to wygenerowanie w deklaracjach, linii: static void SystemClock_Config(void); oraz jej nadmiarowe (drugie) wywołanie w main(): SystemClock_Config(); które należy usunąć). Wydaje mi się, że kod działający w starym i nowym firmwarze jest bardziej zgodny z (przynajmniej moimi 🙂) oczekiwaniami, a ten stary działał na skutek jakichś błędów w CubeMX 2 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
Treker (Damian Szymański) Luty 5, 2019 Udostępnij Luty 5, 2019 @misklap bardzo dziękuję za obszerne wyjaśnienie - zapisuję do aktualizacji 🙂 Cytuj Link do komentarza Share on other sites More sharing options...
misklap Luty 7, 2019 Udostępnij Luty 7, 2019 (edytowany) Tym razem mam problem z projektem 05_PWN_IN. Wizualnie działa (dioda reaguje na enkoder), ale wywołania funkcji HAL_TIM_ReadCapturedValue zawsze zwracają 0, niezależnie od pozycji enkodera. Jak je zmusić do zwracania zmiennych wartości? No tak... trzeba spiąć PD14 i PA0 - nie napisano explicite, więc jakoś nie wpadłem na to od razu. Edytowano Luty 7, 2019 przez misklap Znaleziono rozwiązanie 1 Cytuj Link do komentarza Share on other sites More sharing options...
wjcust Czerwiec 3, 2019 Udostępnij Czerwiec 3, 2019 Cześć, mam problem z wizualizacją zmiennych w STM Studio. Jeśli skonfiguruję sobie projekt w CubeMX i cały czas na nim pracuje to wszystko ładnie działa, ale gdy już chcę coś dodatkowo skonfigurować w tym projekcie używając CubeMX to pojawiają się problemy. Pierwszy z nich jest taki, że często nieznajduje nowych elementów. Wtedy muszę kliknąć na projekt PPM -> Index -> Rebuild. Problemy znikają. Ale gdy chce wczytać plik .ELF do STM Studio, to w miejscu gdzie powinny być zmienne nie ma nic. Dzieje się tak tylko po rekonfiguracji projektu w CubeMX. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 4, 2019 Udostępnij Czerwiec 4, 2019 @wjcust jest to prawdopodobnie błąd aktualnej wersji CubeMX, która gubi się po zmianie konfiguracji projektu. Niestety trzeba czekać na aktualizację lub ręcznie kopiować plik o rozszerzeniu ".ld". Sprawdź czy ten plik u Ciebie nie ma 0 bajtów, jeśli tak jest to problem leży właśnie w aktualizacji Cube 😉 Cytuj Link do komentarza Share on other sites More sharing options...
wjcust Czerwiec 5, 2019 Udostępnij Czerwiec 5, 2019 @Treker Dzięki za odpowiedź, sprawdzę jak tylko będę miał chwilę. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
wjcust Czerwiec 6, 2019 Udostępnij Czerwiec 6, 2019 Dnia 4.06.2019 o 06:19, Treker napisał: @wjcust jest to prawdopodobnie błąd aktualnej wersji CubeMX, która gubi się po zmianie konfiguracji projektu. Niestety trzeba czekać na aktualizację lub ręcznie kopiować plik o rozszerzeniu ".ld". Sprawdź czy ten plik u Ciebie nie ma 0 bajtów, jeśli tak jest to problem leży właśnie w aktualizacji Cube 😉 Rzeczywiście okazuje się, że plik .id ma 0 bajtów. Będę pamiętał na przyszłosć, żeby go skopiować. Dzięki i pozdrawiam 1 Cytuj Link do komentarza Share on other sites More sharing options...
MarekStoch Czerwiec 9, 2019 Udostępnij Czerwiec 9, 2019 Jak to jest z konfiguracją timera dla PWM (STM32F103c8t6)? Ustawiam dla TIM4 na ARR = 9999 dla PSC=3599 aby obserwować zmiany na diodzie LED. One Pulse Mode z pobudzaniem z innego timera co 10sek. W kodzie raz wprowadzam Pulse=5, a następnie Pulse=9000. Jak założyłem, powinienem zobaczyć zmiany czasu świecenia od 1sek do bardzo krótkiego impulsu. Ale nie zauważam żadnej zmiany 😞 Cytuj Link do komentarza Share on other sites More sharing options...
wjcust Czerwiec 13, 2019 Udostępnij Czerwiec 13, 2019 Dnia 6.06.2019 o 16:51, wjcust napisał: Rzeczywiście okazuje się, że plik .id ma 0 bajtów. Będę pamiętał na przyszłosć, żeby go skopiować. Dzięki i pozdrawiam Niestety to nic nie daje 😄 Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 13, 2019 Udostępnij Czerwiec 13, 2019 @wjcust dla pewności: powinieneś skopiować plik .id zaraz po wygenerowaniu projektu (wtedy, gdy wszystko działa) i po edycji projektu nadpisywać ten nowy plik (0B) jego starą wersją. U innych osób takie rozwiązanie działało poprawnie 😕 Cytuj Link do komentarza Share on other sites More sharing options...
wjcust Czerwiec 13, 2019 Udostępnij Czerwiec 13, 2019 6 godzin temu, Treker napisał: @wjcust dla pewności: powinieneś skopiować plik .id zaraz po wygenerowaniu projektu (wtedy, gdy wszystko działa) i po edycji projektu nadpisywać ten nowy plik (0B) jego starą wersją. U innych osób takie rozwiązanie działało poprawnie 😕 Możliwe że problemem jest to że plik id kopiuje dopiero przed wykonaniem rekonfiguracji (ten plik działający ale już ze zmianami w projekcie) a nie zaraz po jego utworzeniu. Sprawdzę jak będę miał chwilkę. 1 Cytuj Link do komentarza Share on other sites More sharing options...
BusKetZz Czerwiec 14, 2019 Udostępnij Czerwiec 14, 2019 (edytowany) Witam wszystkich szanownych zebranych. Zacznę od tego, że kurs stoi na naprawdę wysokim poziomie, niczego mu nie brakuje, wiedza jest przekazywana w niezwykle przystępny sposób (jak zawsze w kursach forbota), dużo praktyki popartej niezbędną teorią. Lecz abstrahując od tego, mam poważny problem z funkcją HAL_TIM_PWM_Start(). Otóż program zatrzymuje się na tej funkcji, a debugger wyświetla cały czas komunikat "halted: PC: 0x08000xxx". Prześledziłem funkcje "wchodząc w nią" za pomocą debuggera, krok po kroku, linia po linii. Niby wszystko zachowuje się prawidłowo, lecz w momencie dojścia do linii: return HAL_OK, program omija ją, jest gotowy do wyjścia i w tym momencie po naciśnięciu klawisza kontynuacji funkcja się zawiesza, a debugger sygnalizuje wcześniej wspomniany komunikat. Użycie DMA daje ten sam efekt. Nie wiem gdzie leży problem. Pozostaje mi jedynie prześledzić ustawienia wszystkich rejestrów, lecz będzie to niewątpliwie mało przyjemna praca mimo ułatwień, które oferuje środowisko SystemWorkbench. Jeśli ktoś wie, dlaczego taka sytuacja może mieć miejsce, będę niezmiernie wdzięczny za feedback. Pozdrawiam Edytowano Czerwiec 14, 2019 przez BusKetZz Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!