Skocz do zawartości

Bartek_Kurosz

Użytkownicy
  • Zawartość

    29
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    2

Wszystko napisane przez Bartek_Kurosz

  1. Cześć! Niestety to jest błąd po stronie Workbencha - czasem zdarzy mu się wygenerować nieprawidłowe zależności. Jeżeli Index Rebuild nie pomaga, zazwyczaj trzeba wygenerować projekt na nowo. konje Twój problem wygląda tak samo. Dzięki za zwrócenie uwagi! Jest to oczywiście błąd który poprawimy.
  2. Cześć! Priorytety można ustawiać w Cube w zakładce Configuration/NVIC. Informacje dotyczące maksymalnych napięć, które mogą zostać podane na piny są zawsze umieszczone pod hasłem "Absolute maximum ratings". Strona 60 dokumentacji naszego mikrokontrolera. Widzimy tam, że poza pinami BOOT0 oraz pinami FT/TC, maksymalna wartość napięcia dla wszystkich innych pinów wynosi 4.0 V Na stronie 46 dowiemy się, że 4. FT = 5 V tolerant except when in analog mode or oscillator mode (for PC14, PC15, PH0 and PH1) Niestety ST-Link działa tylko pod Windowsem. Na Ubuntu trzeba korzystać z OpenOCD
  3. Cześć! Zbadałem problem i wydaje mi się że jest to po prostu bug związany z ostatnią aktualizacją Cube'a. Napisałem w tej sprawie do ST, dam znać jak otrzymam odpowiedź! Pozdrawiam Bartłomiej Kurosz
  4. Cześć! Jeśli dobrze wyczuwam problem, to przyczyną prawdopodobnie jest nie wykrycie jeszcze niektórych zaktualizowanych plików. Spróbuj wyczyścić projekt oraz przebudować index. Project -> Clean Project -> Index -> Rebuild Pozdrawiam Bartek
  5. Cześć! Wybacz długi czas odpowiedzi. Aby odpowiedzieć na to pytanie warto przyjrzeć się parametrom wywołania tych funkcji. HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout) HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout) Funkcja Master_Transmit przyjmuje jedynie adres urządzenia docelowego, wskaźnik na adres danych i rozmiar transmitowanej wiadomości. Funkcja Mem_Write przyjmuje dodatkowo informację o docelowym adresie pamięci, do której ma zostać wpisana transmitowana wiadomość. Oczywiście za pomocą funkcji Master_Transmit można osiągnąć to samo, umieszczając adres pamięci na początku tablicy danych do przesłania. Rozwiązanie z podaniem tej informacji jako parametr wywołania jest jednak bardziej przejrzyste, dlatego w tym artykule korzystamy właśnie z niego. Dlaczego w takim razie w ogóle powstała funkcja Master_Transmit? Czasem zdarzają się urządzenia lub typy transmisji, które nie wymagają podawania adresu pamięci, do której mają trafić przesyłane dane (np. komunikacja I2C pomiędzy dwoma mikrokontrolerami). Wtedy po adresie odbiorcy możemy od razu transmitować dane właściwe. Mam nadzieję że udało mi się wyklarować kwestię z powyższymi funkcjami Brak odpowiedzi był spowodowany moim chwilowym przebywaniem w dziczy bez dostępu do technologii. Bardzo za to przepraszam, bo wiem że kilkudniowe opóźnienie w odpowiedziach pod artykułem może być frustrujące. Niestety, jest wiele kwestii nad którymi chciałbym się rozwieść bardziej, lub w ogóle je poruszyć. Niestety o wielu rzeczach się zapomina, lub po prostu popełnia się błąd oczywistości, uznając je za powszechnie znane i rozumiane. No i należy pamiętać, że artykuły powinny mieć skończoną długość =) Dzięki wielkie za wszystkie uwagi!
  6. Jeśli chciałbyś wykorzystać do tego tryb Combined Channels PWM Input On CH1/2, to niestety, ale nie da się włączyć dwóch na raz w jednym timerze. Jedyne co mógłbyś zrobić, to ustawić wejścia timera na Input capture i wtedy samemu wyciągnąć potrzebne informacje. Zasada działania jest ta sama, ale jeśli interesują Cię szczegóły, to należałoby zajrzeć do dokumentacji i porównać opisy tych trybów. Oczywiście że tak! Dziękuję Ci bardzo za to spostrzeżenie, bo mi umknęły gdzieś te makra i zawsze wszystkie takie rzeczy po prostu dopracowywałem sobie na rejestrach, a przecież aż dziwne że nikt nie zrobił od tego funkcji. Postaram się poprawić to w artykule
  7. Plik do zaimportowania którego szukasz znajduje się na początku pliku main: #include "stm32f4xx_hal.h" Dodaj go w swoim nowym pliku *.h i będziesz mógł korzystać w nim ze wszystkich funkcji, które poznaliśmy w kursie [ Dodano: 07-06-2016, 11:29 ] Nigdy nie interesowałem się tym tematem, więc na ten moment nie potrafię niestety odpowiedzieć na Twoje pytanie.
  8. Robercie, czy po wygenerowaniu nowego kodu dokonujesz operacji Clean oraz Index rebuild ?
  9. Bardzo słuszne pytania! Śpieszę z odpowiedzią. Przerwań zewnętrznych może być maksymalnie 16. Każde przerwanie ma unikalny numer (0,1,...,15), ściśle powiązany z numerem pinu, z którego pochodzi. Tylko jedno przerwanie o danym numerze może być zdefiniowane w systemie. Oznacza to, że jeżeli zdefiniujemy przerwanie GPIO_EXTI_0 od pinu PA0, żaden inny pin 0 nie może być przerwaniem (PB0, PC0 itp.) Z powyższych rozważań widać, że jeżeli otrzymamy przerwanie o numerze x, może ono pochodzić tylko i wyłącznie od konkretnego pinu na konkretnym porcie, na którym zostało zdefiniowane - tę informację mamy, ponieważ musieliśmy to wcześniej skonfigurować. Niestety nie ma osobnych przerwań od zbocza narastającego i opadającego. Jedyny sposób na sprawdzenie zbocza jest właśnie taki jak napisałeś - natychmiast po wywołaniu przerwania sprawdzić stan pinu, od którego zostało wywołane przerwanie. Na pytanie jaki port należy sprawdzić odpowiedziałem w wyższej części wiadomości.
  10. Nie można jedynie korzystać z innego typu bibliotek do STMów. Jak najbardziej można dodawać inne biblioteki, służące do obsługi wysokopoziomowych zadań. Stwierdzenie: jest analogiczne z tym, że jak w C korzystamy z biblioteki std, to nie możemy dodawać własnych bibliotek Implementacja obsługi protokołu NMEA na mikrokontrolerze STM32 wykorzystująca kod oparty o biblioteki HAL, wygenerowany przez narzędzie STM32CubeMX jest jak najbardziej możliwa.
  11. Wygląda to tak, jakbyś nie zainstalował dodatków do SW4STM32. Może spróbuj usunąć całkowicie pliki Eclipse i wykonać wszystko od nowa? Możesz również spróbować zainstalować środowisko wykorzystując gotowy instalator, dostępny na openstm32 (musisz być zalogowany, aby mieć dostęp do sekcji pobierania).
  12. komarekzm, jesteś pewien, że chciałeś obserwować zmienne globalne (tylko do takich STM Studio ma dostęp)?
  13. Humanoida nigdy nie budowałem, aczkolwiek stałem przed taką decyzją jak Ty przy budowie Micromouse'a. Wybrałem mikrokontrolery AVR i bardzo tego żałuję, ponieważ przyblokowało to mój rozwój z STMami oraz sprawiło niemało problemów z samym robotem, których uniknąłbym dzięki zastosowaniu STM32. Co do Humanoida, jeśli chcesz mogę spróbować poprosić mojego dobrego kolegę z koła, autora konstrukcji, która widnieje na okładce fotorelacji z zawodów Roboxy 2016, o dogłębniejszą odpowiedź na Twoje pytanie [ Dodano: 23-05-2016, 14:23 ] Czy mógłbyś sprecyzować której konkretnie opcji nie ma? Najwygodniej byłoby gdybyś wstawił zrzut ekranu przedstawiający miejsce, w którym brakuje niezbędnych opcji.
  14. Mi też często dodaje słowo "configuration" do nazwy projektu, ale nigdy się tym nie przejmowałem. Czy u Ciebie występują z tego powodu jakieś problemy?
  15. Hmm, nigdy nie trafiłem na takie problemy w Keilu, chociaż korzystałem z niego dość krótko (kilka miesięcy). Niemniej jednak fakt - funkcja przyjmuje jako argument typ uint32_t*, więc chcąć być zupełnie poprawnym, należałoby to jawnie zrzutować, tak jak to zaproponowałeś. Nigdy nie spotkałem się z tym problemem w Eclipse. Postaram się odpowiedzieć na Twoje pytanie jak tylko czas mi na to pozwoli!
  16. Tak, po dodaniu własnych etykiet do Cube, aby wszystko działało trzeba przeprowadzić "procedurę naprawczą", a więc wykonać: Project->Clean Project->C/C++ Index -> Rebuild Project->C/C++ Index -> Freshen All FIles Bardzo słuszna uwaga! U mnie jakimś cudem nie było tego problemu i zupełnie nie zwróciłem na to uwagi ale tak, jeśli przyjrzysz się płytce Discovery to faktycznie w miejscu kondensatora C36 (zaraz nad przyciskiem) jest puste miejsce. Problemem z priorytetem przerwań od SysTicka już się zajmuję. Czy ktoś z mających ten problem mógłby mi przesłać swój projekt w wiadomości prywatnej? Cieszę się że komuś służy W którym miejscu w Cube znalazłeś opcję "Generate Under Root" ? Nigdy tego nie widziałem i nie mogę się tego doszukać. Pozdrawiam Bartek
  17. Ojej, no to faktycznie wprowadziłeś zamieszanie, bo nie dość że spytałeś nie o to co chciałeś, to jeszcze zapomniałeś dodać na końcu "Utility", przez co Twoje pytanie dotyczyło programowania procka BEZ programatora bezpośrednio z IDE. Tak, z Eclipse jak najbardziej można wgrywać i debugować program na mikrokontroler z wykorzystaniem programatora ST-Link (bez użycia ST-Link Utilty). W jednym z najbliższych artykułów będzie do dokładnie opisane [ Dodano: 27-04-2016, 21:20 ] Dziwny problem, przetestowałem ten mechanizm na prawie 100 komputerach i akurat tego problemu nie spotkałem ani razu. Fajnie że znalazłeś obejście. Jak to (podobno) mówią w CallCenter, "Przepraszam Pana bardzo, ale ja na prawdę muszę zadać to pytanie. Czy próbował Pan wyłączyć i włączyć ponownie? (W tym wypadku przeinstalować na nowo Cube'a?)"
  18. Pytasz dlaczego sugeruję doinstalowywanie pakietów do Eclipse, zamiast wykorzystać instalator z OpenSTM32? Szczerze mówiąc, nie zastanawiałem się nad tym zupełnie, ponieważ w efekcie końcowym nie różnią się one w swojej funkcjonalności niczym (przynajmniej ja nic takiego nie zaobserwowałem, a pracuję równolegle na dwóch maszynach z SW4STM32 zainstalowanym na różne sposoby i cały kurs testuję na obydwu).
  19. Nie wiem czy dobrze zrozumiałem Twoje pytanie, ale to o czym mówisz nie jest możliwe (a przynajmniej ja nie wiem o żadnym przystępnym sposobie osiągnięcia tego). Mikrokontrolery STM32 mogą być programowane na dwa sposoby: za pomocą programatora (to co robimy teraz), lub z wykorzystaniem bootloadera. Nie jest to kwestia konfiguracji środowiska programistycznego, ale napisania odpowiedniego programu startowego (bootloadera) i wprowadzenia mikrokontrolera w odpowiedni tryb. Zagadnienie bardziej złożone, które zostanie opisane w jednym z kolejnych artykułów. Podsumowując: nie da się po prostu podłączyć mikrokontrolera bezpośrednio do komputera i zaprogramować "ot tak" z Eclipse bez użycia dodatkowego sprzętu, bootloadera czy zewnętrznego oprogramowania.
  20. Nawyk mam nadzieję że będzie dobrze służyć wszystkim konstruktorom
  21. akurczyk, nic mi nie wiadomo o kursie organizowanym przez koło naukowe MOS, chociaż jestem na tym samym wydziale. Czy jest to szkolenie zamknięte? Niestety po przeszukaniu ich strony internetowej nie znalazłem żadnej informacji na ten temat. Tom277, popularne enkodery używane w silnikach działają dokładnie tak samo jak ten, który został użyty w artykule dotyczącym tego zagadnienia (jeśli chodzi o sygnał kwadraturowy przekazywany do mikrokontrolera). Niestety na ten moment nie wykorzystujemy w kursie silnika, więc przykład z regulatorem w zamkniętej pętli sterowania nie zostanie tu przedstawiony. Nie ukrywam jednak, że zagadnienie jest ciekawe i bardzo przydatne.
  22. Genialne! Nie przypuszczałem że można postawić ubuntu na STM Moje 2 pytania: 1) Czy da się w takim razie postawić na tym ROSa? Rozumiem, że ograniczeniem będzie głównie pamięć? 2) Czy dziedzicząc wady systemów operacyjnych, ten również nie będzie zapewniał operacji real-time?
  23. W takim razie przy tym konkretnym silniku (200 impulsów/obrót) i tym konkretnym sterowniku, w trybie pracy pełnokrokowym, podawany na wejście sygnał 200 Hz odpowiada jednemu obrotowi na sekundę
  24. Dzięki! =) W sumie nie pomyślałem że może to nie być oczywiste z tego co napisałem: "Silnik pracuje z pełnym momentem w stanie spoczynku" Jak najbardziej, jest to wielka zaleta. Oczywiście że stosując sterownik jest do dziecinnie proste, ale jest to rozwiązanie problemu skomplikowanego sterowania, które kosztuje dość dużo miejsca na płytce, oraz zwiększa koszty robota. Porównując go do zwykłych mikrosilników: obydwa z nich da się sterować zwykłym mostkiem H, ale w przypadku silników krokowych będzie nas to kosztowało kilkadziesiąt dodatkowych linijek kodu (i ze trzy noce). Nigdzie się nie spotkałem z takimi prędkościami o których tutaj mówisz, a ich dokumentacji przeczytałem nie mało. (pisząc 200Hz masz na myśli 200 obrotów na sekundę?) Załączam poniżej zależności momentu od prędkości silników tego typu. Obydwa mają granicę w okolicach 20 - 60 RPS (Rotation Per Second) i to już po przewoltowaniu. (Silnik, którego zależność przedstawiona jest poniżej jako moment od PPS (Pulse per second) ma w wypadku sterowania pełnokrokowego 200 kroków na obrót [co oznacza że wartość 8000 PPS odpowiada 40 RPM (obrotom na sekundę)]). Jak najbardziej - sterownik jak napisałem ma możliwość pracy w różnych trybach. Ja korzystam z ćwierćkrokowego. Oczywiście że wyglądałoby to inaczej, ale nie wygląda i porównuję to co jest. Jakby robot był linefollowerem to też wyglądałoby to inaczej A kontynuując już temat przekładni: Mamy tu do czynienia z niskimi prędkościami obrotowymi i niskim momentem (a obydwie z tych wartości chcielibyśmy zwiększyć). Najprostsza z tego do zwiększenia jest prędkość obrotowa (w opisany już przezemnie sposób), tak więcj korzystając z tego, moglibyśmy spróbować zastosować przekładnię obniżającą obroty, co przełożyłoby się na zwiększenie momentu wypadkowego. Niestety znowu wrócilibyśmy do niskich obrotów, a całkowita sprawność napędu obniżyłaby się ze względu na straty na przekładni. Nie będę wspominał już o mechanicznym aspekcie umiejscowienia jej tam. Nie chcę napisać że się nie da, bo obok wydziału mechanicznego to nawet nie stałem, ale przy tych rozmiarach robota + wymiarach silników + stopniu upakowania elementów mniemam że znalezienie/zaprojektowanie odpowiedniej przekładni oraz zmieszczenie jej tam byłoby conajmniej bardzo trudne. Dzięki wielkie =) Fototransfer robiłem pierwszy raz w życiu z pomocą kolegi z KoNaRu (wszystkie moje poprzednie płytki robiłem żelazkiem). Schemat wydrukowany był na folii z pełnym wypełnieniem czerni. Następnie koperta z folii do naświetlarki wraz z płytką. Po 2 minutach na naświetlarce płytka trafiła do tego płynu, którego nazwy nie pamiętam (zmywa naświetlony lakier na płytce odkrywając powierzchnie do wytrawienia). Potem już standardowy wytrawiacz i już
  25. No to ja rozpocznę Zgłaszam do konkursu opis mojego robota klasy micromouse "Let Me Out". Robot wyróżnia się tym, że jego napęd został oparty o silniki krokowe. Do lektury zapraszam tutaj .
×
×
  • Utwórz nowe...