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....
Cześć. Piszę sobie program na STM32 w środowisku Keil uVision. Proszę powiedzcie mi jak zrozumieć generowane liczby mówiące o zajętości (wielkości) programu w pamięci Flash oraz ile pamięci RAM zajmuje program? W Keil nie ma optymalizacji kodu znanego z WinAVR -Os. Co odpowiada temu poziomowi w Keilu lub na który poziom bezpiecznie jest ustawić bo są...
Witam, Jesli korzystasz z MPLABX, to opis wszystkich pragma config jest w...helpie :-) Help>c32 toolchain>C32 configuration settings.... Tez to niedawno przerabiałem :-))) Sporo informacji mozna wyciagnać z forum Microchipa - tylko kwestia zadania odp. pytania. Jak dla mnie to wlasnie PIC32 jest przyjazniejszy dla uzytkownika niz np. STM32 (własnie...
Nie sądzę, że w asemblerze wygenerujesz coś znacząco lepszego niż kompilator, za to powinieneś ułatwić życie kompilatorowi. Zacznij od zadeklarowania wszystkich zmiennych roboczych jako 32-bitowych - to już coś powinno przyspieszyć. Potem popraw nagłówek pętli: int32_t i; for (i = 31; i >= 0; i --) Zamień kolejność & i >>: red = SWAP(*pixels) >> 10...
Cześć, czy taka konfiguracja projektu jak na screenie jest optymalna? Korzystam z Keila gdzie ustawiłem dodanie do projektu w zakładce CMSIS Core i w Devices Startup. Używam płytki stm32f303vc Discovery i próbowałem też w czystym projekcie dodać tylko biblioteki core_cm4.h, cmsis_gcc.h i stm32f30x.h ale wyskakiwały mi błędy i nie potrafiłem tego ręcznie...
AT90PWMx - Produkt w fazie zakończenia produkcji. Nie ma sensu w to inwestować. ATTiny26 - zupełnie bez sensu jeśli idzie o falowniki. Praktycznie żadnego zysku względem mega88. ATXMEGAxx - od biedy może być do nauki. Ale pamiętaj o upierdliwości ADC w trybie single ended (offset), braku synchronizacji pracy liczników z jedną podstawą czasu, pomiar...
Może problem jest w tym, że kompilujesz C++ z agresywnymi optymalizacjami (-O3) i efekt jest zaskakujący. Na embeded używanie O3 jest powszechne. Kompilator podczas kompilacji (w zależności od wybranych optymalizacji -OX, oraz dodatkowo włączanych flag/funkcji -fxxx), może rozwinąć zmienną / wyliczyć jej wartość i ją podstawić / może uznać że zmienna...
Cześć. Dość dawno się tu nie udzielałem, jakoś mi było nie po drodze. Trochę zmieniłem zainteresowania, trochę było dużo pracy i nieco odszedłem od elektroniki i niskopoziomowego programowania. Czas powoli wracać, ale dziś przychodzę z problemem :) Mam pewne urządzenie, zaprojektowane dobrych kilka lat temu. Urządzenie działa na STM32F407VGT6 , ale...
Portuję projekt z PIC'a (32MX) na STM'a (F0) i mam problem z wydajnością. Szybkość zegarów jest taka sama. Mimo włączonej w kompilatorze maksymalnej optymalizacji program działa zauważalnie wolniej niż na PIC, gdzie był kompilowany w darmowej wersji XC32 (czyli z najsłabszą optymalizacją -o1). Mam przez to problemy z wyrobieniem się z obsługą zadań...
Witam, Chciałbym skorzystać z dobroci posiadania jednostki FPU w moim procesorze. Po przeczytaniu kilku opisów i postępowaniu zgodnie z nimi myślę, że udało mi się uruchomić FPU. Testy przeprowadzam na poniższym kodzie: [syntax=c] volatile float fLiczba = 124573.73465; int var=0; tim6_config(); for (var = 0; var < 20000; ++var) { fLiczba /= 1.095f;...
Mnie tym razem forma i treści od Kolegi Piotra nie satysfakcjonuje - szczególnie w kontekście innych wpisów na elektrodzie. Nie mogę zrozumieć czemu ta prezentacja miałaby służyć. Brakuje ewidentnie konkretnych walorów edukacyjnych, na pewno dla takiego amatora jak ja, być może jest to dobra inspiracja zaawansowanych użytkowników, ale szczerze wątpię....
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?
Gdzie kupiłeś xs6222 bo nie mogę znaleźć. Czy można zamienić go innym układem Dowolny regulator napiecia z wyjsciem 3v3 najlepiej w wyjscowym pradem >500ma. Mozesz tam wrzucic jakis AMS1117 (chyba najtanszy i najlatwied dostac) Dodano po 7 Zrobilem komunikacje USB<-->LCD na tzw blue pill (STM32F103CBTx). Na razie na sztywno na LCD 3.5'' ILI9481...
Standard C nic nie mówi o kolejności zmiennynch w pamięci. Przyzwoity kompilator i linker będzie rozmieszczał dane w kolejności malejącego rozmiaru, a nieupywane będzei eliminował całkowicie. Chcesz mień znany rozkład danych - użyj struktury - kompilator nie ma prawa jej zoptymalizować, ale będzei stosował wyrównanie naturalne, czyli np. int32_t będzie...
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...
Natomiast zdaje mi się że płytki z XMega są tak popularna jak Maple z ARM-ami - czyli jakiś margines. To kolega niech porówna ile jest tutków z STM32F103, a ile z Xmega, albo PIC. Jeszcze ewentualnie Teensy (kinetis) i różnorakie Feather są popularne, ale nie w PL. W Polsce to akurat albo klasyczne arduino na AVR, albo nadal same AVR w DIP. Choć i...
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ę...
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...
1. Przyjmij że kompilator działa jak należy i przekazuje parametry do funkcji poprawnie. Gdzie pokaż jeszcze wywołanie funkcji. Optymalizacja -O0 nie zawsze Ci pokaże wszystkie zmienne lokalne. Przy debugwaniu w takiej sytuacji lepiej -Og. Ale wtedy różnica w szybkości prgramu może być 2-3 krotna.
Od jakiegoś czasu próbuję odpalić oszukanego Black Pill'a - STM32F103C8T6 na Macbook'u Pro z OS Sierra używając środowiska Arduino IDE https://obrazki.elektroda.pl/5361253000_... Zamówiłem konwertery TTL z Aliexpress (CH340, CP2102 i YP-01- do tego nie mogę znaleźć sterownika). Pinout sprawdzony kilkukrotnie, TX do TX, RX do RX, 3,3V...
Nie bardzo rozumiem, w którym miejscu? W swoim kodzie. Przed pierwszym transferem TXE powinno być 1, RXNE powinno być 0. Poza tym każde podniesienie CS(nSEL) powinno resetować SPI. Ale nie mówimy o RFM tylko o STM32 - tam każda manipulacja CSem nie ma żadnego znaczenia, bo sterujesz nim programowo... Może coś nie tak z tym SPI. Przy innych konfiguracjach...
No właśnie tak myślałem, że im bardziej rozbudowany program (ma więcej co robić), to trzeba zwiększać częstotliwość przełączania kontekstu, więc i narzut rośnie. No, ale skoro nawet przy 1000 nie jest duży, to OK :-) Od jakiegoś czasu przymierzam się do przejścia na jakiś RTOS, bo te moje maszyny stanów działają, owszem, ale im więcej zadań, tym bardziej...
Pewnie w STM jest ten sam powód (nie sprawdzałem bo to raczej nie ma już żadnego znaczenia, chyba, że próbujesz "wydusić" z STM'a tyle ile fabryka dała + 50%). Prędzej ktoś chce być sprytniejszy niż kompilator i do tego jeszcze nie zna assemblera którego chce wykorzystać. optymalizacja 0 out = in ^ 0xFFFFFFFF; 80001a8:f240 0300 movwr3, #0 80001ac:f2c2...
Optymalizacja wyłączona. Wszystko poustawiane jak trzeba. = edit2 = Większość problemów została rozwiązana przez pobranie innej wersji Keil'a - keil 5.10 ma problemy z SPL gdyby ktoś również je miał polecam wrócić do wersji 4.x, 5.01 (wydaje mi się że ta dla mnie działała), bądź pobrać wersje 5.10 CM która poprawia też ten problem.
Tyle, że oba kompilatory sprawdzałem na tych samych programach opcjach - z wyłączoną optymalizacją. Tak jakby wyrokować o prędkości maksymalnej samochodu na podstawie tego ile "wyciągnie" na wstecznym... Poza tym nie byłbym taki pewny Twoich porównań nawet przy takim założeniu, bo ponoć w Keil optymalizacja jest domyślnie WŁĄCZONA, więc jeśli jest...
Witam, problem i zarazem pytanie jak w temacie. Napisałem funkcję obsługi 1-wire z wykorzystaniem bibliotek API STM32 do komunikacji z czujnikiem temperatury DS1820. Funkcja wywoływana jest w przerwaniu od timera. Nie było z nią problemów gdy rdzeń STM-a pracował częstotliwością 168 MHz, przy niższych wstępowały błędy komunikacji. Podejrzewałem, że...
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"....
Czy może mi ktoś podpowiedzieć o co chodzi? Wczoraj w Eclipsie robiłem testy, i nagle dzisiaj już to nie chodzi. Nie zmieniałem nic, uruchomiłem po prostu od nowa Eclipsa. Problem dotyczy zmiennych zadeklarowanych w przerwaniu void USB_LP_CAN1_RX0_IRQHandler (void) { DWORD istr, num, val;....} Które po przypisaniu po chwili znikają i mają wartość optimized...
Miałem spore problemy na uczelni i nie mogłem się zabrać za ten projekt. Mam nadzieję w końcu ruszyć. Znalazłem tani zestaw uruchomieniowy do STM32 STM32VLDISCOVERY http://www.kamami.pl/index.php?ukey=prod... na kamami z za 50zł. Ciekawy jestem tylko do jakich modeli stm będę mógł wykorzystywać wbudowany programator. uK jest zasilany...
Wywal w jasną cholerę tą bibliotekę! Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __use_two_region_memory ;wlaczamy wszystkie zegary :] ldr r0,= 0x00000557 ;r0: data ldr r1,= 0x40021000 ;r1: base addr: rcc reg ldr r2,= 0x14 ;r2: offset: rcc_ahbenr str r0,[r1,r2] ldr r0,= 0x000059fd ;data ldr r2,=...
Jak się na tym breakpoincie zatrzyma to zobaczysz zmienne (zakładając oczywiście, że są widoczne dla fragmentu kodu w którym jesteś i że nie zostały wycięte przez optymalizację. 4\/3!!
Drogi Gaskoin twoje gdybanie o mojej niewiedzy są trochę bezpodstawne. Po prostu po długiej walce w truestudio zacząłem mieć wątpliwości co może być przyczyną więc zacząłem atakować eclipse. Możecie do Eclipsa skorzystać z tutka Freddiego jak to postawić. Jak już napisałem środowisko działa, nawet debugowanie przez stlinka działa. No ale nie mogę zoptymalizować...
ale przecież w definicji tej punkcji nie ma informacji, że ma być to wskaźnik. Za to w tej pierwszej (f_read) już jest. Kompilator się nie czepia, bo akurat tam jest to poprawnie (składniowo), choć wcale nie tak jakbyś tego oczekiwał. znasz rozwiązanie mojej zagadki Owszem. Podać od razu? <: Rozumiem, że chodzi o to, że char to jeden znak a char...
Optymalizacja wydajności silników elektrycznych: Wyjaśnienie technik sterowania PID Kiedy przyglądamy się dronom, deskom balansującym, inteligentnym samochodom i odwróconym wahadłom, ciągle pojawia się ten termin - PID. Ale czym u licha jest PID i do czego służy? Cóż, w tym artykule stworzyłem prosty sterownik silnika, aby zagłębić się w zasadę działania...
przy debugowaniu, warto zmniejszyć poziom optymalizacji, nawet do -O0 Ogólnie doczytałem, że masz rację. (ciekawy artykuł znalazłem np. tu: Ciekawie się zapowiada. Korzystam z Atollic TrueStudio (oparty na Eclipse). Jak zmniejszyć poziom optymalizacji? Bo chyba się jeszcze w tym gubię ;) Właściwości Projektu->Settings->Tool Settings->MCU GCC Compiler->Optimization->Optimization...
Atrybut "packed" - który to jest źródłem Twoich głównych problemów - jest tutaj zbędny, bo zarówno z nim, jak i bez niego będziesz miał wszystko ułożone tak samo.
To może tak będzie ok: #define data ((int)(&RCC->APB2ENR&... * 2) Innym rozwiązaniem może być użycie gcc do kompilacji tego pliku, a g++ do pozostałych plików.
Cześć Podejmę się zleceń typu fixed-price z dziedzin takich jak: - pisanie aplikacji na PC wszelkiej maści (bez grafiki i GUI) - sterowniki urządzeń np FPGA PCI - emulacja urządzeń na QEMU - projekty na uC ARM z rodziny Cortex: doświadczenie w STM32 i NRF52 - optymalizacja niskopoziomowa - wielowątkość i SIMD (SSE/AVX) - testy jednostkowe i funkcjonalne...
Weź zobacz na amazonie np.. Pozycje znam dwie anglojęzyczne. Z serii definitive quide.. I coś o optymalizacji..
(at)_lazor_ No niestety w tamtym temacie zaproponowali tylko pobranie "nowej" (ostatnia aktualizacja miała miejsce w 2015 roku) wersji biblioteki - niestety u mnie problemu to nie rozwiązało, nadal ładowane są wszystkie tablice i nagle brakuje 80k pamięci, nawet przy najwyższym poziomie optymalizacji :/
Ja zawsze kasuje bity żądania na koniec przerwania i nigdy nie maiłem takich problemów w STM32, niezależnie od poziomu optymalizacji przerwanie wykonywało się tylko raz.
A, masz rację. Raczej kompilator (; Teraz powinieneś go oficjalnie przeprosić za "głupi" (; Uwierz, że algorytmy jakie pracują w kompilatorze żeby wykrywać m.in. takie rzeczy (generalnie algorytmy optymalizacji) są poza naszymi możliwościami pojmowania, bo to jest wyższa matematyka (; Np. http://en.wikipedia.org/wiki/Polytope_mo... 4\/3!!
Na AVR używałem AES z załącznika. Pamiętam, że jakaś z opcji optymalizacji nie działa.
A powiedz mi jeszcze, czy włączenie optymalizacji jakoś wpłynie na te opóźnienia generowane przez asm volatile ("add r0,r0,1":::"memory");? Nie powinno, bo to nie powinno być wyoptymalizowane. Zawsze radzę sprawdzić w list file. Ja tak robię w swoich projektach jak mam naprawdę coś krytycznego i chcę mieć kontrolę nad tym do zostanie wygenerowane....
Sama tablica wektorów przerwań w F103 to 200bajtów (ok. 50 wektorów * 32 bitowy adres). Nawet więcej, bo jest 16 wektorów rdzenia, a STM32F1 mają przynajmniej 60 swoich własnych (max 68 w connectivity) - razem więc jest 76-84, co daje przynajmniej 304 bajty. Do tego często dochodzą osobne handlery dla każdego przerwania (sam zacząłem tam jakiś czas...
Wreszcie udało się skonfigurować to wszystko i działa. Projekt kompiluje się poprawnie. Jednak jak wrzucę do projektu bibliotekę standardową od STM to kompilują mi się wszystkie C w obrębie projektu. Co gorsza nie istnieje optymalizacja na poziomie linkera i wszystkie punkcje nawet te nie wywołane lecą do pliku wynikowego przez co staje się ogromny....
TIM2->ARR=1; TIM2->PSC=0; To oczywiście spowoduje bład DMA o którym pisze poniżej przy drugiej transmisji i przerwanie transakcji DMA Ja używam Nucleo, tam nie mam kwarcu, Masz - sygnał idzie z ST-Linka i w cube iustawiasz jako bypass. Jaki jest procent wykorzystania czasu szyn przy tak częstych żądaniach DMA? Czy na cokolwiek jeszcze zostaje czas,...
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ć,...
Opcja optymalizacji jest. Domyślnie wyłączona ze względu na to że wydłuża to czas kompilacji. Chwilowo mam inne priorytety finansowe, ale kiedyś kupię od Pana Leona jedną płyteczkę z Xmegą i Wam pokaże jak się na nich jeździ pod Bascom`em :D ..a może i C bo z braku Xmegi bawię się STM32 w Keil
Niegdyś w Nowym Elektroniku był falownik dla silnika jednofazowego na 4 MOSFETACH zdaje się IRF840 w mostku H. Ale silnik zasilany był i tak prostokątem, niby to działało, no ale... Firmą która produkuje falowniki 1faz/1faz jest Invertek. Modele Optidrive E2 przeznaczone są do silników jednofazowych z kondensatorem pracy (PSC) i uzwojeniem pomocniczym...
Witam, Wydaje mi się, ze miałem podobny problem z najnowszym toolchainem i generował podobny błąd przy optymalizacji -Os. W każdym bądz razie używam obecnie tego najnowszego toolchaina i kompiluje się wszystko ok, więc jakoś musiałem rozwiazać ten problem ale nie pamiętam jak :) Nie jest to raczej wina systemu operacyjnego, u mnie jest Windows 7 32-bit....
Z tego co wymieniłeś wszystko jest OK (zakładam, że 3. to wskaźnik na funkcję, a nie jakieś dziwne rzutowanie). Ja bym się jednak początkowo skupił na zainicjalizowaniu w main() wszystkiego co inicjalizuje Keil w startupie, czyli po prostu wywołaniem SystemInit() - jeśli to zrobiłeś to następnym krokiem będzie zastanowienie się, czemu kod w Keilu generuje...
Nie, bo sprawdzałem na wszystkie sposoby i nic to nie daje. Tak BTW to okazuje się że wyłączenie optymalizacji kodu w ustawieniach powoduje że całość w końcu zaczyna się kompilować tak jak powinna. Pomimo tego jestem ciekaw jak to trzeba zrobić aby przy włączonej optymalizacji całość działała...
stm32 optymalizacja jednej funkcji optymalizacja laptop optymalizacja internetu
dodge światła wymiana grzałki sprzedam wiertarkę
wkrętarka milwaukee engine fault peugeot
Krups ekspres – miga lampka akcesoria, EA, Evidence, Intuition, Quattro Force, czujniki, usterka Regulacja hamulca ręcznego w Passacie B5 1.9 TDI 90KM kombi