Skocz do zawartości

Elvis

Użytkownicy
  • Zawartość

    2594
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    189

Posty napisane przez Elvis


  1. 14 wpisów, mnóstwo tekstu i zupełnie brak treści... Proponuję przejść do jakiegokolwiek konkretu, albo wywalić ten wątek do kosza. Forbot to techniczne forum, a nie kółko filozoficzne, @MKJB ja coś wymyśliłeś, może zbudowałeś i chcesz o tym napisać, to pisz śmiało, chętnie poczytamy

    • Lubię! 1

  2. Nie bardzo wiem co miałoby dać @SOYER -owi użycie DMA. Był na forum niedawno użytkownik, który co chwila powtarzał że bez DMA nie ma życia... ale dla kogoś kto jeszcze nie opanował wszystkich niuansów arduino to nie musi być takie ważne. Z drugiej strony są po prostu nowsze moduły arduino, chociażby z rodziny MKR, albo wspomniane ESP.


  3. Używanie Cube bywa czasem zaskakujące. Przykładowo generator kodu, czyli CubeMX potrafi utworzyć zapełenie niedziałający kod, a doszukanie się przyczyny błędu zajmuje więcej niż jego napisanie od podstaw. Z samą biblioteką HAL też bywa niewesoło - mało kto chyba zdaje sobie sprawę, że np. w kodzie obsługi przerwań HAL posiada pętle z aktywnym czekaniem... łatwo można napisać piękny program, który będzie działał tylko czasami. Co więcej w dokumentacji biblioteki nic o takich "kwiatkach" nie znajdziemy. A przeglądanie kodu to nic przyjemnego, bo napisany jest tak, że czasem lepiej czytać z zamkniętymi oczami.

    Więc tak jak @marek1707  napisał - STM32 są bardzo fajne, biblioteka Cube HAL też interesująca, ale to na pewno nie jest łatwe, miłe i przyjemne dla początkujących.


  4. Jest mi bardzo przykro jeśli kogoś rozczarowałem. Prawdę mówiąc planowałem tylko napisać artykuł o tym jak działa wyświetlacz TFT podłączony do STM32... a później jakoś tak samo wyszło, żeby trochę temat rozwinąć, porównać z Arduino itd. Nie miał to być kurs pisania bibliotek graficznych, ani kompendium wiedzy o grafice komputerowej.

    Natomiast co do czyszczenia ekranu i migotania, to właśnie o to chodziło żeby pokazać (i co ważniejsze zmierzyć) ile czasu zajmuje rysowanie oraz kasowanie zawartości ekranu.


  5. Błąd był celowy, gdy wprowadzano GPS do użycia, ale później wprowadzany błąd bardzo zredukowano.

    Na bazie różnic między pomiarem dokładnym, a uzyskanym z GPS działa DGPS (https://pl.wikipedia.org/wiki/Różnicowy_GPS).

    Niestety w przypadku tanich odbiorników nie liczyłbym na jakąkolwiek użyteczność rozwiązania opisywanego w artykule. Profesjonalne odbiorniki GPS to zupełnie inna półka - proponuję sprawdzić ich ceny, gdyby można było w takich zastosowaniach użyć popularnych odbiorników używanych np. w telefonach, czy nawigacjach samochodowych, już dawno firmy sprzedające urządzenia za dziesiątki tysięcy złotych musiałyby zmienić asortyment...

    Tanie czytniki zwracają potworną wręcz ilość błędnych odczytów - nie jest to jedna i ta sama wartość, ale seria mocno losowych odczytów. To że wyniki wyświetlane w telefonie wyglądają sensownie, zawdzięczamy tylko odpowiednim algorytmom filtrującym oraz wykorzystaniem danych z wielu źródeł.

    Ale jako ciekawostkę zachęcam do podłączenia taniego odbiornika GPS i pobrania danych NMEA - z tego co wiem, takie surowe dane nie przydadzą się właściwie do niczego.

    • Lubię! 1

  6. W obsłudze przerwania masz wywołanie TIM_OC1Init, po pierwsze nie jestem pewien, czy zmienna channel jest poprawnie ustawiona, ale co ważniejsze Init służy do inicjalizacji - a z tego co rozumiem chciałeś tylko zmienić wypełnienie PWM. Do tego lepiej użyć TIM_SetCompare4.

    • Lubię! 1

  7. @aldenham Bardzo dobrze, że pytałeś i bardzo się cieszę że sprawa się wyjaśniła 🙂 Po prostu skoro już wiemy, że problem nie dotyczył DMA można pytania wydzielić z tego tematu - to nic złego i mam nadzieję że admin bez problemu to załatwi.

    Jeśli będziesz miał kolejne pytania odnośnie tablic, wskaźników i printf-ów, to też pytaj - na pewno pomożemy, w końcu po to jest Forbot.

    Wracając do printf-ów, nie wiem jakie ostrzeżenia generował kompilator, mogło chodzić o użycie typów bez znaku i wtedy zamiast %d można zastosować %u. Ale możliwe, że ostrzeżenia dotyczyły użycia wskaźników w miejscu gdzie powinny być liczby - więc jeśli ten problem pojawi się przy poprawnym użyciu tablic, napisz co wyświetla kompilator i jaki dokładnie masz kod.

    • Lubię! 1

  8. Widzę, że kolega @miszczu18 wyprzedził mnie w tłumaczeniu o co chodziło w programie 🙂

    Proponuję więc zostawienie DMA na chwilę w spokoju i powtórkę z działania tablic oraz wskaźników w języku C - bez tego raczej ciężko będzie napisać właściwie jakikolwiek program.

    Natomiast od administratora mam prośbę o wydzielenie tej dyskusji do oddzielnego tematu, dotyczy ona podstaw C i nie ma nic wspólnego z DMA, ani kursem STM32.


  9. Przyznam, że nic nie zrozumiałem - bufory mają i powinny mieć inne adresy, to co wstawiasz wygląda właśnie na adres bufora źródłowego, bo 536873560 czyli 0x20000a58 to adres w pamięci SRAM. Co więcej 536873592 - 536873560 = 32, a tyle wynosi wielkość bufora źródłowego, więc możemy się domyślać że wyświetliłeś tutaj adresy buforów, a nie ich zawartość.

    Funkcje copy_cpu/dma nie zmieniają adresów buforów, a jedynie kopiują dane. Więc adresy powinny być różne, ale ich zawartość identyczna.

    • Lubię! 1

  10. @hantercv spróbuj podłączyć sam konwerter usb-uart do komputera i sprawdź, czy Windows poprawnie go wykrywa. Jeśli nie to nie ma sensu podłączać malinki, najpierw musisz mieć wirtualny port COM, a na zdjęciu wygląda na problem ze sterownikami.

    Jeśli windows nie wykrywa konwertera, to najlepiej spróbować z innym komputerem - możliwe że jest to uszkodzony układ, ale w 99% przypadków problem jest po stronie oprogramowania.

×
×
  • Utwórz nowe...