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...
Maxe: Twoja metoda nie działa już jej próbowałem co więcej po wprowadzeniu takiej lini: Dodano po 4 fantom: używam makefile'a Lucjana Bryndzy w którym miejscu powinienem dodać -I./lcd bo też nie dało mi to żadnych efektów. [syntax=c] # Automatic makefile for GNUARM (C/C++) # Copyright (C)...
Witam, korzystam z Keil uvision 4, optymalizacja - O3 - optimize for time. Wysyłam dane do przetwornika DAC AD5724, ale przy tym poziomie optymalizacji krzaczy mi się jeden kanał, przy zerowym poziomie optymalizacji wszystko działa poprawnie. Pomyślałem żeby wstawić przed sprawdzaniem flag zajętości...
Moim zdaniem nauka sama w sobie assemblera nie ma sensu, w czystym assemblerze już raczej nikt nie pisze, co innego intrinsics które są namiastką assemblera i bez nich nie da się wyciągnąć pełnych możliwości niektórych architektur (np cortexy m3 w górę). Inna sprawa analiza assemblera, to już warto...
Mam zainstalowane Eclipse Która wersja? Czy masz zainstalowany GNU ARM Eclipse Plugin? Bez niego ten projekt nie zadziała. Problemów szukaj więc w konfiguracji Eclipse/CodeSourcery/GNUArmEclipsePlugin... ten "template" i się bezproblemowo kompiluje (w konfiguracji Debug). W konfiguracji...
W normalnym świecie SPI działa w ten sposób, że wysyłając jeden bajt, odbiera się jeden. Pisząc pewien ogromny program, używałem powyższego założenia implementując obsługę SPI1 z pomocą kanałów DMA (DMA1_Ch2 i DMA1_Ch3). Jeden kanał używany do transferu bloku z pamięci RAM do SPI1->DR, drugi kanał...
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...
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...
Warto jednak zdawać sobię sprawę jakie są koszty użycia tej klasy: No dobra, ale wiesz że przykład którym się posłużyłeś nie ma identycznej funkcjonalności, no nie? <: Nie żebym był za używaniem std::string na mikrokontrolerach w każdej sytuacji, no ale jednak wypadałoby zaznaczyć, że ta klasa...
Szkoda, tylko, że tworzenie tego projektu oparłeś o wykorzystanie bibliotek SPL. "szkoda" w sensie, że SPL są słabo zooptymalizowane, czy że "na topie" jest już CubeMX? Co do optymalizacji - cóż jak ktoś stawia pierwsze kroki to myślę, że optymalizowanie to wyższa szkoła jazdy i wymaga wiekszej...
gpio_pin_cfg(GPIOC,11,GPIO_IN_PULL_UP); // miso MISO na 99% też musi być jako AF6_PP Dodatkowo Twój proces transmisji jest nieco dziwny... Zrób tak: 1. Ustaw CS w stan niski 2. Poczekaj aż flaga TXE będzie równa 1 3. Zapisz coś do rejestru DR 4. Poczekaj aż flaga RXNE będzie równa 1 5. Odczytaj...
Cześć. Może mi pomożecie. Wykorzystując Keila, STM32 oraz MPL115A1 (z SPI) chciałem zobaczyć pracę takiego czujnika a zawłaszcza chodziło mi o pomiar ciśnienie. Jako przykładowy kod zastosowałem opisany w EP 01/2012 na stronie 76 opis użycia czujnika. Nie używa on obliczeń zmienno-przecinkowych zresztą...
Od jakiegoś czasu próbuję odpalić oszukanego Black Pill'a - STM32F103C8T6 na Macbook'u Pro z OS Sierra używając środowiska Arduino IDE Zamówiłem konwertery TTL z Aliexpress (CH340, CP2102 i YP-01- do tego nie mogę znaleźć sterownika). Pinout sprawdzony kilkukrotnie, TX...
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...
Problem jest taki - po sygnale reset program się uruchamia ponownie. Natomiast po wyłączeniu i włączeniu zasilania program nie rusza. Dopiero po wydaniu komendy "reset and debug" program ponownie rusza. Ten sam projekcik wgrany za pomocą KEIL działa bez tego mankamentu. zapewne wgrywasz program...
Dzięki, wszystko oczywiście działa. Chciałbym poruszyć jeszcze jedną kwestię dotyczącą bilioteki do obsługiwania peryferiów do STM32. Dopiero zaczynam, więc sam jej używam, jednak da się zauważyć, że produkuje ona obszerny kod wynikowy. Myślę, że podobną funkcjonalność można stworzyć używając samych...
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ść...
Jeżeli mam w projekcie ustawiony procesor STM32F100RB, to chyba kompilator powinien wiedzieć jakie pliki bin dołączyć. Zainstalowałem wersję 1.2 i co ciekawe z tego samego projektu źródłowego generuje sporo większe pliki, przy tych samych ustaiweniach optymalizacji itp. niestety, nie obsługuje ST-Link...
Uporządkujmy kilka spraw. System anglosaski jest anglosaski i tylko w krajach anglosaskich się sprawdza. Zastosowanie go gdziekolwiek indziej ma dosyć umiarkowane efekty. W systemie anglosaskim nie ma tworu odpowiadającego naszym średnim szkołom zawodowym. To jest system niemiecki. Skoro kształceni w...
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... ...
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...
Ok, dzięki za wskazówki. Nie chce mi się układać kodu bo to i tak zupełnie przebudować muszę. Wyślę taką kaszanę jaką mam ale działającą: FLASH_Unlock(); //printf... the file\n\r"); /* Start address for flash programming */ sprintf(RxBuffer, "Przykladowy...
Problem mam chyba typowy. Oprogramowuje interfejs komunikacyjny. Jednym z poleceń tego interfejsu jest reset. Sprawa ma się oczywiscie odbywać tak, ze przychodzi ramka z poleceniem resetu, odsyłana jest ramka z ACK i następuje zerowanie. USART działa na przerwaniach. Jak wykryć kiedy ostatni bajt...
Sprawdziłem jak szybko mogę przesyłać i przetwarzać dane ale w związku z tym, że nie osiągnąłem zadowalających rezultatów to moje zabawy z USB na tym się skończyły. Bo te biblioteki to powinny robić za przykład jak NIE pisać kodu. Zagmatwane, bez sensownej dokumentacji, niejasne odwołania między plikami,...
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!!
Jeśli kod skompilowałeś z optymalizacją i wiesz, że akurat tam wchodzi bo podglądasz krokowo JTAGiem, to wcale tak nie musi być? Instrukcje z bloku IT (Cortex-owy "if") jeśli warunek nie jest spełniony są niby wykonywane - PC przelatuje przez te adresy - ale faktycznie są realizowane NOPy. Jeśli to jest...
Witam, pętla może być taka: while(1){ GPIOB_BSRR = 0x0000FFFF; GPIOB_BRR = 0x0000FFFF; } Czy ktoś z was potrafi zrobić to szybciej? oznaczało by, że robię coś nie tak... Taka pętla rozwija się bez optymalizacji na taki kod asm: GPIOB->BSRR = 0x0000FFFF; movw...
Hmm. Dodatkowej wtyczki nie instalowałem czyli korzystam chyba z tych które były od razu w Eclipsie Helios CDT 7.02 SR2. W toolchain editor wybrany builder jest GNU Make Builder. W instalation details/plug-ins jest tam jakiś C\C++ Standard make build UI. No nie jestem biegły w tych zawiłościach eclipsa...
Rzeczony kontekst dotyczył obliczeń. Co część argumentów bierze w łeb. A poza tym np. latency to nadrabia w 4 cyklach. Ile mają twoje przerwania? Bo moje obliczenia często mają jednak więcej niż 16 bit Oczywiście możemy się przerzucać fjuczerami. Ale to bez sensu. Przecież się zgadzmy, że dsPIC...
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...
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]"...
Widziałem ten watek i ustawiłem wszystko wg podanych wskazówek, za uwarzyłem jeszcze ze ten problem nie występuje wszędzie i na początku funkcji main() można ustawić breakpointa i działa problem zaczyna się przy po wejściu do pętli while albo jakiejś funkcji, dodam ze mam wylaczone optymalizacje kompilatora ...
Zrobiłem tak: Błąd występował. Hard Fault. 1. Włączyłem optymalizacje O1. 2. Próbowałem kompilować. Błędy "registers may not be the same" 3. Poczytałem o tych błędach w necie i znalazłem jakieś tam niby podmianki do tych funkcji. 4. Nic one nie dały. Teraz błędu nie było "registers may not be...
O deskryptorach czytałem to chyba jasne. W każdym razie po kolei. Wykrywa mi go jako full speed bo tam jest kontroler full speed: USB 2.0 full speed interface jeden powinien miec adres 81 (czyli tryb IN adres 1) a drugi 02 (tryb OUT adres 2). Tak było w przykładzie z HIDem i tak zostawiłem....
(...) ustawiłem wektor przerwań i początku pamięci flash w linkerze z odpowiednim offsetem (0x3800) Co to za magiczny offset? :D Pamięć STM32F103RB, pierwsze 14K (0x3800) zajmuje bootloader, pozostałe 114K program właściwy. W efekcie początek flash (w skrypcie linkera) zaczyna się od adresu...
Kompilowane było z 0 poziomem optymalizacji więc nie powinno być nic po drodze upraszczane w pętli. Kolejny ciekawy przypadek optymalizacji O0 która leczy wszystkie rany. Spi korzysta z rejestrów które są volatile więc nie ma mowy o optymalizacji w takiej pętli. Zapewne jest źle skonfigurowana...
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...
Tzn. czego nie próbowałeś? Serwera z Atollica? Działa ok. W TrueStudio to ja wiem, że działa... coś nie mogę sobie poradzić z tym debugerem... Pisząc tego posta jeszcze nie sprawdziłem czy informacje z linka działają. Co ciekawe po drobnych zmianach łączy się z serwerem i wywala błąd. Po czym jak...
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...
Twój układ jest chyba pierwszym na świecie, który ma CS aktywny w stanie wysokim... Pozatym Twój delay jest bezsensu (po optymalizacji wyparuje w kosmos), a do tego nie wiemy jaki to mikrokontroler... Co jeszcze - wg komentarzy (o których pisałem przed chwilą) skonfigurowałeś też wejście jako wyjście...
Hej, chciałem zaimplementować zbieranie statystyk w systemie FreeRTOS. Zrobiłem jak w opisie funkcji: 1.włączyłem flagę configGENERATE_RUN_TIME_STATS 2.portCON... skonfigurowałem counter. 3.portGET_RUN_TIME_COUNTER_VAL... - obsłużyłem odczyt z countera. Przy kompilacji...
Domyślna wartość - to 1 (czyli włączone wyrównanie, ale ja nie dotarłem do jednoznacznego potwierdzenia, że tak musi być wg. ARM - tak JEST w tych procesorach, które znam). Na tym w zasadzie można by zakończyć, bo: The STKALIGN bit in the Configuration and Control Register (see the relevant ARM...
Te sekcje nie zajmują pamięci, bo w finalnym "obrazie" ich po prostu nie ma (; Nawet gdyby coś tam było, to --gc-sections i tak usunie te sekcje, bo przecież kod w żaden sposób się do nich nie odnosi, więc z punktu widzenia optymalizacji cokolwiek w nich jest, jest "dead". 4\/3!!
Podałeś przykład z mnożeniem niedostosowanych do FFP liczb, to ja podam kontrprzykład: for(float i=0;i<10;i+=0.00000001); Zadziała z float? Oczywiście nie. O czym to świadczy? Wyłącznie o tym, że programując trzeba myśleć. Rozwiązanie problemu który przedstawiłeś zajmuje jakieś 3 sekundy -...
- stosowanie zmiennych globalnych do synchronizacji wątków zamiast semaforów (poza tym co napisał Freddie o zwalnianiu rdzenia przez wątek zablokowany semaforem) Nie ma żadnego niebezpieczeństwa, to po prostu jest bez sensu i/lub niemożliwe (; - bezpośrednie operowanie na zmiennych przez kilka wątków...
Witam Jeśli nie zależy Ci na żadnej optymalizacji, to porostu generuj wartość sinusa on-line w jakimś przerwaniu, skaluj jego wartość do wartości wypełnienia i masz już 3 fazowy PWM.
Zainstalowałem najnowszą wersję CoIDE CooCox'a. Sciągnąłem też najnowszy toolchain ze strony CooCox'a. Skompilowałem stary projekt i się zdziwiłem - po kompilacji plik ma 6016 bajtów, a w starej wersji ze starym toolchainem jest 4600 bajtów. Oba pliki kompilowane bez optymalizacji - none(-O0). Stary...
Czyli już je poznałeś :D Nie trzeba całości, ale niestety core + odpowiednia klasa da znać o sobie. Goły port szeregowy (CDC) to min. 32kB wsadu (bez optymalizacji). Ale kto by się dzisiaj przejmował takimi drobiazgami mając 1MB flash, co nie? A tak na serio to czekam, aż ktoś napisze nowe biblioteki...
Jeśli program działa, a tylko po zmianie kompilatora już przestaje, to problem leży właśnie gdzieś po tej stronie. Nie do końca poprawne rozumowanie. Implikacja działa tylko w jedną stronę. Z poprawności działania w określonych warunkach nie wynika poprawność programu. Program może być niepoprawny...
Co do automatycznego "zwinięcia" to po prostu nie byłem pewien, czy tak się wykona automatycznie : ) ale jeśli kolega tak mówi, to pewnie tak jest. Co do funkcji sprawdzającej kanał, fakt, jest to strasznie nieoszczędne, ale pisałem to na szybko i chciałem żeby było w miarę widoczne co się dzieje,...
[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...
Ps. wyłącz optymalizacje kodu jak możesz
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...
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...
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. 4\/3!!
Czy -g to to samo co -0g ? A co niby oznacza -0g? Chyba chodziło o -Og? -Og to poziom optymalizacji -g to dołączenie symboli do debugu o rożnym poziomie. -Og to Ja mam tak: -g -ggdb3
Z racji iż były święta i było kilka dni luzu postanowiłem w ramach rozruszania szarych komórek pobawić się płytką HY-MiniSTM3V. Znawcy procesorów ARM doskonale znają tę płytkę więc znają jej możliwości. Samo mruganie diodą mnie nudzi, więc wymyśliłem projekt bardziej ambitny :D i tak powstał...
... zamierzam pouczyć się trochę programowania układów Microchipa... Dlaczego chcesz to zrobić? Czy produkty 32-bitowe uC od MCP są lepsze niż Cortex-M4? - są wolniejsze/mniej wydajne, - zużywają więcej prądu, - mają długie erraty, a część układów peryferyjnych po prostu nie działa (vide PMP lub...
Mam program na STM32F103 pisany w Coocox CooIDE. Ponieważ program dość się rozbudował, część funkcji z pliku main.c przenoszę do nowo utworzonego pliku np. ustawienia.c wraz z deklaracjami funkcji ustawienia.h. Nie wiem dlaczego, po takim przeniesieniu zwiększa się kod wynikowy z 360kB do 370kB (większa...
Kod mający kilkadziesiąt tysięcy linijek kodu :) Z pewnością ktoś chciałby go sprawdzać. Kod jest z pewnością dobry, bo kod działa jeśli ma domyślne mapowanie pamięci. Rozwiązałem problem - zmniejszyłem poziom optymalizacji obszarów odpowiedzialnych za USB...i działa.
No i już 1.7.6 i toolchain 4.9 2015q3 (nowszy deczko). Kompilacja z błędami.. W stosunku do oryginalnego kodu: 1. Usuń w projekcie link do pliku fsdata.c (prawym klawiszem na pliku -> delete -> OK) 2. Prawym klawiszem na projekcie ->Configuration->Druga zakładka (Compile) wybierz FPU soft...
(at)BlueDraco idąc tymi kategoriami to wróćmy do asemblera. Poza tym jeżeli kod jest pisany zgodnie ze sztuką to mikrooptymalizacje na starcie mają sens? Imho nie. A kod czytam często bo pracuję bardziej przy utrzymaniu starego kodu i błogosławię naszych devów, że pisali czytelnie. Co nie znaczy,...
Tak swoją drogą to te kombinacje są nieco błędne - jeśli ilość danych do zapisania nie jest podzielna przez 4, to wcale nie można sobie przeczytać "poza" koniec tablicy - undefined behavior. Nie mówiąc już o tym, że zasadniczo rzutowanie danych typu uint8_t na uint32_t bez zapewnienia w jakiś sposób...
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...
Typy takie jak uint32_t wymyślono właśnie po to, żeby programista nie musiał się zastanawiać nad długością typu int w danym środowisku. I właściwie odkąd je wymyślono, należy je stosować, zwłaszcza w programwoaniu mikrokontroelrów. Od tej reguły jest tylko jeden wyjątek: jeśli piszemy kod, który ma działać...
Zobacz kod asm - po optymalizacji została tylko pusta pętla nieskończona. Do debugowania ustaw optymalizację na -Og lub -O0 .
Czasy TAAC i NSAC i R2W_Factor masz w rejestrze CSD, dla SDHC musi to być struktura >v1.1. Dla SDHC niektórzy producenci oznaczają stałe czesy, ale i tak max read timeout to <100 ms, przy typowym <1 ms. Pozostałe czasy są porozsiewane po różnych komendach realizowanych przez karty - trzeba przeczytać...
(at)Lukste21 Jeżeli odczytujesz w trybie debug to jest taka możliwość, że nie obserwujesz tego czego byś oczekiwał ze względu na włączoną optymalizację. Nie znaczy to, że przekazywana jest błędna wartość. Spróbuj przetestować swój kod z wyłączoną optymalizacją. Wklej również tutaj flagi kompilatora...
Ewentualnie zmiana poziomu optymalizacji - zależnie od kompilatora pomoże lub nie. Bez volatile kompilator na podstawie samego kodu stwierdza ze "run" nie ma szans zmienić stanu bo niby jak ma wejść do funkcji TIM2_IRQHandler i olewa taki fragment kodu. Kompilator nie uwzględnia czynników sprzętowych...
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...
Dokładnie kolega R-MIK dopero zaczynam ale staram się sukcesywnie uczyć ;) Nie wiem jak ty ale ja jestem niecierpliwy i nie czekałbym az ktoś mi odpowie, zwłaszcza, ze pytasz o podstawy, o których można przeczytać w sektach miejsc. Odpal sobie debuger, nawet programowy i zobacz jak będzie zmieniał...
Cześć wszystkim. Poradnik choć napisany w wielu miejscach nietechnicznym językiem, jednak wart uwagi. Autor zawarł w nim sporo ciekawych informacji na temat programowania STM32. Ogólnie w sprzedaży ubogo w literaturę o stm32, jest w zasadzie pozycja oparta o przestarzałe standard peripheral library,...
Na AVR używałem AES z załącznika. Pamiętam, że jakaś z opcji optymalizacji nie działa.
Ja póki co zostawiam jak jest ;) Trochę się kręcę wokół tego wszystkiego, bo z nowym toolchainem coś mi nie działa i szukam przyczyny ;) Udało mi się już stary projekt wciągnąć tak, by działało debugowanie, bo projekt jest eclipsowy, ale przy próbie wejścia w Debug Configurations ładnie się IDE...
Witam. Podczas próby porównania implementacji aplikacji bare-metal i opartej na FreeRTOS natknąłem się na problem różnego czasu wykonania się tego samego kodu. Do testów utworzyłem funkcję foo: [syntax=c] void foo() { uint32_t j = 0; uint32_t i = 0; DWT->CYCCNT = 0; i++; j = DWT->CYCCNT; ...
Autor wątku w dziale "początkujący" zadał pytanie o podstawy języka. Po 10 postach mamy już wspomniane atrybuty gcc, "pragmy" kompilatora, wskaźniki na funkcje, zamieszanie związane z słówkiem "inline", sugestie że kompilatory czasem robią wyjątkowo dziwne rzeczy (choć wiadomo że w tym przypadku autor...
warningi znikają po usunięciu volatile sprzed deklaracji zmiennej buf1, ale nic się nie pojawia w terminalu Może faktycznie przedobrzyłem z tym volatile ale po jego osunięciu program działa jak powinien. Co prawda było u mnie jakieś potknięcie z działaniem, gdy go pierwszy raz usunąłem ale nie jestem...
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...
...a potem spróbuj to samo zrobić z plikiem lst. może jak ktoś w pamięci umie w hex dodawać skoki to ok Ale to nie jest tak. Na listingu skoki są dobrze zaznaczone, bądź przez etykiety tymczasowe, bądź nawet przez adres względny, ale dla każdej instrukcji adres względny jest podany. Tylko tak jak...
Niestety po dodaniu flag rozmiar się nie zmienił. W mapie również widnieją wszystkie zbędne tablice :/ Tak wyglądają u mnie ustawienia optymalizacji:
Jest taki cały pierwszy wiersz zapełniony załączonymi pixelami (0XFF) a drugi jest pusty. Kontrast nie ma tu znaczenia. Kojarzę wzorek. Faktycznie to nie kwestia kontrastu. Wygląda po prostu jakby był nie zainicjowany. Kwestia z wrażliwością na napięcie wygląda mi raczej na jakiś efekt uboczny...
nsvinc dzięki wielkie :) Jak już napisałem to mój pierwszy i ostatni projekt z ta biblioteką. Zaczynając, pewnie jak każdy, myślałem, że producent zapewnił łatwy i dobry sposób programowania swojego procesora. Niestety żeby coś w tym napisać, nie wystarczy korzystać z biblioteki, bo i tak trzeba patrzeć...
Problem rozwiązany ! Kod po zoptymalizowaniu działął na tyle szybko że wyświetlacz nie wyrabiał. producent podaje ze częstotliwość SPI to max 12MHz i pinów WR/RD/CS. U mnie pracowało szybciej. Dodanie pustych cycli zegarowych po zmianie pinu CS i WR pomogło. Ciekawe dlaczego raz działało a raz nie.. Dzięki...
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...
Witam Mam w programie stworzoną sekcje eeprom które umieszcza dane pod adres 0x808000 [syntax=c] #define EEP __attribute__ ((section(".eeprom"))) const uint8_t EEP EEP_boot=0x1; const uint8_t EEP EEP_init=0x1; const uint8_t EEP EEP_name[32]; const uint32_t EEP EEP_code=0x34333231;[/syntax] Jak...
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...
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...
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...
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 wiele...
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...
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 bezprzewodowej,...
Zbych_: Tylko dlaczego zależało to od stopia optymalizacji i co najdziwniejsze, im mniej optymalizował tym gorzej (zazwyczaj problemy się robią przy zwiększaniu stopnia optymalizacji). Niestety moja szklana kula jest w naprawie. Skoro masz możliwość debugowania, to czemu nie sprawdzisz, które przerwanie/wyjątek...
Zagmatwanie i bledne pisanie tez spowalnia... powiedz mi co sie dzieje przy wywolaniu jakiejs funkcji w C i powrocie z niej ? Jak ich da sie sporo co sie dzieje ? Zerknij od strony tego co masz po kompilacji... Czy nie lepiej jak cos przepisujesz czasem w pamieci uzyc np. DMA skoro je masz :) i tym podobne...
Witam, korzystam z toolchaina od freddiego i Eclipse Luna pod stm32 discoveryf4. Debugowanie ogólnie działa jednak mam problem z breakpointami postawionymi w taskach od FreeRTOSa. Otóż są one jakby ignorowane, program nigdy się w nich nie zatrzymuje chociaż program wykonywany jest poprawnie. Jeśli...
I to jest przykład dlaczego zostanę nadal przy avrstudio i avr-ach, bo 8 bitów mi wystarczy, a do większych obliczeń zastosuję jakieś pi lub orange, bo niestety ale nie przekonałeś mnie do arm-ów. Dobrze byłoby pisząc takie coś podać jakieś argumenty, czy przykłady, bo tak tylko siejesz niepotrzebny...
Posty kolegi technics6 w temacie ARMów i programowania w C radzę ignorować, skoro widzi on jakieś istotne różnice w C i funkcjach standardowych dla PC i C dla mikrokontrolerów Faktem jest, że aby algorytm działał na PC i na mikrokontrolerze tak samo trzeba się trochę postarać i najlepiej zapoznać...
Jeszcze nie zagladalem do ARM-ow, no bo mam przeciez C i nie musze nic wiedziec, zeby np. wyslac cos przez RS-232. Dobry żart (; 4\/3!! Tutaj to akurat mialem na mysli to, ze w kilka linijek zalatwiam wysylanie i naprawde nie musze niczego wiedziec, bo nazwy mowia same za siebie. Ale specjalnie...
Każdy z nas widział lub korzystał kiedyś z Arduino. Wszyscy hobbyści bardzo je lubią i nie ma co się dziwić - moduły te bardzo łatwo jest opanować i nawet ktoś, kto nigdy nie miał do czynienia z systemami wbudowanymi, może w chwilę nauczyć się je programować i zbudować w oparciu o Arduino coś na prawdę...
Hejka, robię właśnie przesiadkę projektu z kompilatora IAR'a do GCC'a i mam problem z przeniesieniem niektórych ustawień, konkretniej chodzi o nie wycinanie przez linker konkretnych, nieużywanych zmiennych globalnych wygenerowanych przez zewnętrzne narzędzie, zawierających informacje np. o dacie buildu,...
Proponuje dodać do ulubionych stron: [url=]STM32 A tutaj więcej szczegółów. [url=]STM32F103RB [url=]ST... słabo to wygląda jeżeli jednocześnie chcesz rozpocząć przygodę z STM32 i uczyć się C. Można, ale będziesz potrzebował dużo cierpliwości i wytrwałości. SPL - Standard Peripheral...