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...
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...
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.
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...
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...
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...
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...
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...
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ę...
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"....
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, 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...
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!!
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...
A jak daję w f_read & przed zmienną to nic nie zmienia? Zastanów się nad tym sam... Funkcji każesz odczytać 480 bajtów. Gdzie ona je niby ma zapisać, skoro podajesz jej adres zmiennej o rozmiarze 2 bajty? To że wpisujesz tam '&' nie sprawia że nagle zmienna uint16_t staje się workiem bez dna... 4\/3!!
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...
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.
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.
Nie odpowiem, dlaczego to działa w C, a nie działa w C++, ale pamiętaj, że to wyrażenie musi obliczyć linker, nie kompilator. To wyrażenie oblicza w każdym wypadku kompilator - nawet jeśli generuje zły kod. Wygląda na to, że jeśli w wyrażeniu inicjującym występuje operator "->" kompilator ignoruje const. Sprawdzone do wersji 4.5.0 20090816 (experimental)....
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....
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...
Witam, Czy jest jakaś różnica w objętości lub prędkości wykonywania kodu gdy mam możliwość uruchomienia uC w trybie Debugra czy nie? Na niektórych maszynach jest np tryb realase oraz debug, kompilacja w tym pierwszym powoduje krótszy kod wynikowy (oraz szybsze wykonywanie się kodu?). Czy jeśli pisze jakiś programik, a zależy mi na szybkości wykonywania...
Stawiam na różne adresy kodu w pamięci i wynikające z nich różnice w działaniu "akceleratora" dostępu do Flash. Puść MCU na 8 MHz i różnice (raczej) znikną. A może po prostu masz różnie ustawioną optymalizację w obu projektach?
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...
Nie chcę za dużo informacji dawać, żeby ktoś nie skojarzył faktów :D Mikrokontrolery to STM32, głównie U5, kwestia projektu, bo zdarzają się też projekty na C0. Szybkie magistrale (tylko jeden projekt kojarzę), radiówka, układy pomiarowe, sporo układów bateryjnych, więc mikro moce i optymalizacja prądu. Standardy światowe, niektóre urządzenia idą do...
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.
stm32 optymalizacja jednej funkcji optymalizacja internetu optymalizacja komputer
wejścia kamery cofania integra blokada licznik rowerowy hallotron
pralka spalenizna pralka spalenizma
Logitech F710 – migająca kontrolka MODE, pad niewidoczny w systemie, brak połączenia Parametr P00 w piecu Termet Silver Pro - funkcja i regulacja