Wszystko fajnie, pod warunkiem, że chce się używać STM32. Dodanie podstawowego wsparcia dla innych układów jest porównywalne z postawieniem projektu na FreeRTOSie - ot po prostu musisz mieć tablicę wektorów i skonfigurowane rozmiary/adresy pamięci i dokładny typ układu. We FreeRTOSie przecież wsparcie dla STM32 czy dla LPC tak samo nie istnieje - tablicę...
Zaraz będzie, że krytykuję albo się naśmiewam, ale widzę tutaj poważne braki w wiedzy. Zacznę od końca: SSD1289 to jakieś nieporozumienie. Nawet jeżeli uzyskasz dobre wyniki przy wypełnianiu całego ekranu, to wszystko się wysypie przy malowaniu ikon czy dowolnego obszaru innego niż cały ekran. Ten kontroler potrafi w jednej transmisji wypełnić tylko...
Nie przeszkadza nic. Pytanie czysto filozoficzne Chodzi o to, że jak się jednak okaże, że któryś z tych wektorów zostanie wywołany (bo np. w tablicy wektorów jest błąd), to wtedy od razu wiesz który, a jak masz jeden do wszystkich zarezerwowanych funkcji, to już nie wiesz tego od razu. Generalnie taka jedna funkcja zajmuje 2-4 bajty (zależnie od optymalizacji),...
Wciąż więc debatujemy nad funkcją dla jednego tylko układu, czyli dla STM32F0, w którym to faktycznie opóźnienie może mieć tylko dwie wartości. Co z układem w którym opóźnienie to może mieć więcej możliwych ustawień (STM32F4)? Tylko dla optymalizacji kilku linii i kilku cykli mam zrezygnować z faktu, że dla większości układów ST funkcja wygląda praktycznie...
Witam i dziękuję za zainteresowanie. Otóż chyba znalazłem problem. Teraz pytanie do doświadczonych programistów. Czy jest taka możliwość aby kompilator "wycinał", w ramach optymalizacji, części kodu które się powtarzają w ramach jednej funkcji? Tzn. w funkcji, sprawdzającej pamięć RAM zewnętrznego układu, mam dwie pętle. W jednej zapisuje do zewnętrznego...
Zapewne w większości aplikacji tak jest, ale w często na to trzeba uważać. Przecież nikt nie pisze tutaj o filtrach cyfrowych czy FFT. Niemniej jednak widać na forum tendencję, że nawet JEDNORAZOWE obliczenie czegoś na float to ogromny problem, bo "przecież można to zrobić na liczbach całkowitych, przez co program uruchomi się o 13 mikrosekund szybciej"....
Po to, żeby "schować" funkcję w pliku, w którym jest zadeklarowana i jednocześnie zwiększyć kompilatorowi możliwości optymalizacji i diagnostyki błędów.
1. Odpowiedź pytaniem - a dlaczego by nie? Równie dobrze mogę Cię spytać, czemu Twój program składa się z x plików zamiast z jednego i byłoby to nawet lepsze pytanie, bo taki program może być bardziej zoptymalizowany przez kompilator niż coś rozdzielonego na setkę plików (; 2. Jedyne miejsce gdzie kolejność ma znaczenie to sama tablica. W końcu w C...
Proponuje dodać do ulubionych stron: [url=https://www.st.com/en/microcontroll... A tutaj więcej szczegółów. [url=https://www.st.com/content/st_com/e... [url=https://www.st.com/en/microcontroll...
RM0008, strona 294, rysunek 52. Widać tam wyraźnie jaka jest relacja między CNT i CCx. Zawartość rejestrów CCx jest stale porównywana z zawartością CNT i w zależności od wyniku sygnał OCxREF ma wartość 1 lub 0. Dodatkowo, podczas porównania, może zostać wygenerowane zdarzenie CCxI, np. przerwanie, start dla DMA, zdarzenie dla licznika podrzędnego. Bez...
Całość kodu jest dość spora:) Czekam na flagę na pewno, ale nawet jeżeli nie, to zauważ że pomiędzy wywolaniami odczytu adc są spore odcinki czasu. Ano, zazwyczaj w takich sytuacjach używam volatile, tyle że wtym przypadku optymalizacja jest wyłączona. Program w zasadzie skończony, a zajmuje 20kB ze 128, więc optymalizacji nie właczałem. Dodano po 4...
Witam, Wrzucę swoje 2 grosze: #0. C++ to jest generalnie do bani ;) Do dnia dzisiejszego niektóre elementy standardu są tak niejednoznacznie wytłumaczone że różne kompilatory mogą w pewnych kwestiach(template) generować trochę inny kod. Ciekawe jak radzą sobie kompilatory na uC ? #1. jeśli chcesz używać STM32 M0 (które wielkością flasha nie grzeszą)...
Przygodę z Azure RTOS (dawnej ThreadX) zacząłem częściowo z konieczności dalszego rozwoju mojego projektu, a częściowo za sprawą decyzji STMicroelectronics o zastąpieniu FreeRTOS przez Azure RTOS i szkoleń prowadzonych przez ST, które polecam. Moje pytania w tym temacie dają wyobrażenie o poziomie mojej wiedzy w tej dziedzinie. Jestem na początku drogi....
Polecam skompilować najprostszy program typu hello world za pomocą gcc z opcjami: -fdump-tree-all oraz -fdump-rtl-all aby przekonać się ile kompilator robi optymalizacji kolejno dla -O0, O1, O2, O3, Os.
Instrukcja BKPT jest ciężka w użyciu pod Keilem, bo nie obsługuje on inline asemblera T2. Wstawka asemblerowa T2 jest musi być osobną funkcją __asm, tak są napisane funkcje arm_intrinsics z bibliotek ;] Ale oczywiście można ją wykorzystywać wywołując odpowiednią funkcję.
https://obrazki.elektroda.pl/5178220300_... TinyML stanie się największym motorem rynku mikrokontrolerów w ciągu najbliższych 10 lat — tak twierdzi Remi El-Ouazzane, prezes grupy mikrokontrolerów i układów cyfrowych w firmie STMicroelectronics. „Naprawdę wierzę, że to jest początek fali tsunami” — zasygnalizował w wywiadzie dla portalu...
Może się mylę ale chyba nie ma (przynajmniej w rozsądnej cenie) uP 32bit jednocześnie z ADC, EEPROM i PWM. Jeżeli jest to chętnie poznam taki wynalazek. W 99% przypadków można z poziomu programu zapisywać Flash i tym samym dorobić sobie emulację EEPROMu o praktycznie dowolnej pojemności. Sam uzywam takiego wynalazku na STM32. No jak dla mnie to lekko...
Jakim cudem zmiany kodu wykonywanego w pętli głównej mogą mieć wpływ na działanie tego co jest przed nią ?! Może jest coś wspólnego np. funkcja delay_ms() jest także wykorzystywana przed pętlą główną? ;) A jak wygląda delay_ms(): zwykła pętla for czy użyłeś timera?
Po co funkcja? - wystarczy prosty zapis do rejestrów BSRR / BRR - krótszy zapis w kodzie, szybsze wykonanie.
A Freddie milczy... Cokolwiek napiszę, dowiem się, że to "błędny trop", a Ty wiesz lepiej, wiec po co się odzywać? Zresztą i ja kilkukrotnie Ciebie o coś pytałem i jakoś się nie doczekałem (wersja kompilatora, czy aby na pewno jest pozbawiony "błędu" do którego się tak przyczepiłeś Jeśli specyfikacja architekury i ABI mówi, że stos ma być wyrównany,...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
Dziwna rzecz z tym delay'iem. O ile proste miganie ledem nieznacznie przyspiesza po optymalizacji o tyle taki delay w funkcjach obsługi LCD jest "na oko" 20-30 razy szybszy. Nawet jeśli te dwie rzeczy występują w tym samym programie. Przy włączonej optymalizacji ten delay sprowadza się do wywołania PUSTEJ funkcji, bo cały "środek" zostanie zoptymalizowany....
OpenCV uruchamiany jest głównie na wysokowydajnych platformach obliczeniowych czy mocnych mikroprocesorach, ale pakiet ten może wykonywać kilka rodzajów aplikacji do przetwarzania obrazu na prostych mikrokontrolerach. Przetwarzanie obrazu stało się częścią naszego życia. Nikogo nie dziwi rozpoznawanie twarzy w smartfonie czy wykrywanie pasa ruchu przez...
(...) by uzyskać częstotliwości 32Hz (okres 0,03125s) oraz 64Hz (okres 0,015625s). Czy możesz ustalić kombinację okresów z tych dwóch dzielników tak aby w ciągu sekundy otrzymać 60? Możesz też zaproponować kod w Arduino generatora taktującego dla TMS3450. Interesuje mnie jak najmniejszy błąd odmierzania czasu. Wprowadzenie Dziękuję za szczegółowe przedstawienie...
https://obrazki.elektroda.pl/7656017200_... O komputerach jednopłytkowych czy stare komputery były lepsze od współczesnych platform rozwojowych i SBC? Nie lubię Arduino I to jest jak najbardziej prawda. Arduino to platforma, która miała dać łatwy dostęp do programowania elektroniki ludziom, którzy nie znają się ani na elektronice,...
RCC_CFGR_PPRE2_DIV1 Chyba kolega coś pomylił: Ustawiam RCC_CFGR_ PPRE1 _DIV2 , a nie drugi raz rejetr PPRE2 _DIV1 Właśnie się odnosiłem do tego, żeby w ogóle nie "ustawiać" RCC_CFGR_PPRE2_DIV1 więc się nie pomyliłem. Jak zmienna i będzie volatile to też tyle samo trwa ? Masz tam wpisane wartości opóźnień na sztywno i optymalizator mógł stwierdzić,...
Jeżeli funkcja nie jest zadeklarowana jako static, to usunąć niepotrzebną funkcję może jedynie konsolidator, POD WARUNKIEM, że wywołując kompilator uaktywnisz opcję generowania oddzielnych sekcji dla poszczególnych funkcji - to b.ważne dla optymalizacji rozmiaru kodu. Kompilator nie "analizuje całego projektu", chyba, że używamy LTO.
O adresy kodu chodzi, a nie danych. Adresy kodu mają wpływ na akcelerację dostępu do Flash. Pętla zaczynająca się od adresu podzielnego przez 16 ma szansę wykonywać się szybciej, niż taka od adresu np. 16x + 14. Nie sądzisz chyba, że kompilator przy wyłączonej optymalizacji zrobił dwie różne wersje tej samej funkcji, a linker umieścił je w zupełnie...
Witam Wiem ze to nie rozwiązanie ale jak miałem ten problem co ty postanowiłem przesiąść się na coś z większą ilością pamięci... Mega2560. Jednak teraz wybrał bym STM32 (można programować w arduino). Chodziło o to by najpierw poznać "jak to działa" dopiero później kombinować z optymalizacją. Sporo zasobów zajmują biblioteki... nie zawsze się z wszystkich...
Zmodyfikowałem delikatnie bibliotekę, zamiast korzystać z funkcji microdelay z dodanej biblioteki używam HAL_Delay(). Czyli zmieniłeś delay z MIKROsekund na MILIsekundy. Zapewne w bibliotece był potrzebny ten dokładniejszy, więc nawet jeśli przeliczyłeś argumenty, to pewnie po zmianie nie działa jak należy. Swoją drogą ta funkcja delay która tam była...
Skoro nasz sygnał muzyki jako już zedytowany, znormalizowany materiał to faktycznie 16 bitów wystarczy w zupełności bez kompromisu jakościowego. Zauważ zresztą że ... Cieszę sie z tego głosu. Co do konwersji próbek między różnymi rozdzielczościami (będącymi wielokrotnością 8 bitów), to szybką metodą nie wymagającą żadnych operacji arytmetycznych ani...
[syntax=c] fr = f_mount(&FatFs, "0:", 0); fr = f_open(&fil, "0:filea.txt", FA_CREATE_ALWAYS | FA_WRITE); fr = f_write(&fil, "towrite", 6, &bw); [/syntax] Niestety, write zwraca FR_INVALID_OBJECT. Problem jest chyba z ścieżkami które podaje, wewnątrz f_open funkcja follow_path(&dj, path); zwraca FR_NO_FILE. Niestety glebszy debug się sypie bo nie mogę...
🔧 Poszukiwany programista C / Python do rozwoju sterownika turbiny wiatrowej 🔧 Cześć! 🚀 Szukam programisty do współpracy przy rozbudowie, optymalizacji i wprowadzaniu innowacji w sterowniku turbiny wiatrowej. 📌 Urządzenie jest już zbudowane i działa, ale chcemy je udoskonalać, poprawiać błędy oraz dodać nowe funkcjonalności. Zakres prac: ✅ Rozbudowa...
IMHO dużo zależy od tego ile standardowej biblioteki wykorzystasz i co dokładnie z niej weźmiesz - wiadomo że taki printf() czy funkcje zmiennoprzecinkowe trochę zajmują. U mnie rozpiętość jest spora - niektóre całkiem rozbudowane programy mają np zaledwie 10kB, niektóre większe - ze zmiennym przecinkiem w dużych ilościach - koło 30kB, a ostatnimi czasy,...
Witam. Dla ćwiczebności napisałem sobie funkcję zwracającą ilość cykli zegara w celu pomiaru długości wykonywania funkcji itp. Aby to osiągnąć odczytuję "PENDSTSET" oraz stan licznika SysTick. Jednak pomiędzy tymi dwoma odczytami upływa trochę czasu i wartość licznika jestem w stanie skorygować znając czas jaki upłynął miedzy tymi dwoma instrukcjami...
Witam. Mam następujący problem. mam zestaw ewaluacyjny z procesorem Stm32F103VC i wyświetlaczem opartym na SSD1289. Do obsługi wyświetlacza używam bibliotek GLCD od producenta zestawu. Wszystko było by ok gdyby nie jeden dziwny problem. mianowicie taka funkcja chodzi bez problemu: 3 ][240]" gdy to zrobię nie działają żadne funkcje . Ani funkcja malująca...
https://obrazki.elektroda.pl/7362999600_... Firma STMicroelectronics poinformowała o dwóch nowych zakupach - BeSpoon specjalisty w dziedzinie technologii ultraszerokopasmowych (UWB) oraz Riot Micro, który rozwija mobilną łączność z Internetem Rzeczy (IoT). Dzięki przejęciom ST zamierza wzmocnić swoje możliwości w zakresie łączności...
stm32 optymalizacja stm32 funkcji wklęsły jednej
podsłuch telefon analogowy mercedes baterie bf240 głowica
wyszukiwanie parametryczne brother zacięcie papieru
Schemat podłączenia modułu Westfalia 506499 do gniazda przyczepki Cewka zapłonowa i przerywacz do kosiarki Sabo z magnetem