Skocz do zawartości

Bartek_Kurosz

Użytkownicy
  • Zawartość

    29
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    2

Bartek_Kurosz zajął 1. miejsce w rankingu.
Data osiągnięcia: 6 listopada 2015.

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

Informacje

  • Płeć
    Mężczyzna
  • Zawód
    Student

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

Osiągnięcia użytkownika Bartek_Kurosz

Wynalazca

Wynalazca (6/19)

  • Za 5 postów
  • Za 25 postów
  • Młodszy roboty
  • To już rok!
  • To już 5 lat!

Odznaki

16

Reputacja

  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!
×
×
  • 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.