Po pierwsze, w SPI zawsze nadajesz i odbierasz bajt. Jeśli nadałeś dwa i odebrałeś jeden, to odebrałeś ten, który przyszedł po nadaniu pierwszego, a drugi zignorowałeś. Musisz zawsze odczytywać tyle bajtów, ile zapisałeś. Po drugie, chcesz nadawać bajty, a rejestr DR w STM32 ma 16 bitów, więc jednym zapisem do DR nadajesz 2 bajty. Musisz wykonywać bajtowe...
Odpowiedź na Twoje pytanie jest dosyć prosta - protokół SWD nie ma rozkazu zapisu do flash i tego się po prostu nie da tak zrobić jak zapisu do RAM. Oprogramowanie na PC, które się komunikuje przez SWD z układem (np. program do ST-Linka, OpenOCD) wgrywa do RAMu specjalną procedurę, która fizycznie realizuje zapis (poprzez odpowiednią sekwencje zapisów...
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...
http://obrazki.elektroda.pl/2463034100_1... Witam wszystkich, Chciałbym tym razem przedstawić projekt gotowego radiomagnetofonu internetowego. Jest to rozwinięcie opublikowanego wcześniej na Elektrodzie małego odtwarzacza MP3. Radiomagnetofon umożliwia granie strumieni radiostacji internetowych, nagrywanie tych strumieni na kartę SD,...
https://obrazki.elektroda.pl/8760486500_... Po przygodach z matrycami zbudowanymi na max7219, przyszła pora na coś bardziej zaawansowanego. Miałem w planach zrobienie własnej matrycy z 1500 jednokolorowych ledów 0603, 3 rejestrów przesuwnych i paru elementów dyskretnych, ale jak już ją zaprojektowałem, to przypadkiem trafiłem na matryce...
Witam Chciałbym zrobić urządzenie które będzie potrafiło wykonywać zdjęcia które potem ewentualnie wyśle do PC/ wyświetli na LCD. W związku z tym potrzebuję Waszej pomocy: gdzie kupić jakiś aparat kamerę? czy jest dokumentacja dla kamer z telefonów? czy ktoś ma jakieś projekty? Pozdrawiam
https://obrazki.elektroda.pl/9151185000_... Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie...
http://obrazki.elektroda.pl/3392098100_1... Cześć! Chciałbym przedstawić projekt, który powstawał przez ostatnie 1,5 roku. Na początku wspomnę, że nie tworzyłem go sam – zaczynaliśmy projekt w 2 osoby. Ale o tym napiszę dalej. Najpierw opowiem o samym projekcie. Pierwotne założenia Celem było stworzenie uniwersalnego sterownika do robotyki....
Masz łączność debugerem z tym prockiem? Daje radę wykonywać program krok po kroku? Bo w F103 dało się rejestry po prostu oglądać. Próbowałeś z tym MCO i ustawieniem podzielnika i oscyloskopem?
https://obrazki.elektroda.pl/6976619400_... Seb Holzapfel jest hobbystą zajmującym się mikrofalami. Posiada on analizator widma 141T produkcji firmy Hewlett Packard. To bardzo fajne i przydatne urządzenie w jego warsztacie, jednakże jest to dosyć stary, analogowy sprzęt wyposażony w ekran kineskopowy. Brakuje mu również szeregu funkcji,...
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...
https://obrazki.elektroda.pl/2451334200_... Rozpocznijmy odpowiedź na to pytanie od spojrzenia wstecz na epokę programowania "bare-metal". Czym jest tego rodzaju programowanie? W informatyce "gołe urządzenie" odnosi się do procesora wykonującego instrukcje bezpośrednio na fizycznym sprzęcie logicznym bez interweniującego systemu operacyjnego....
Może trochę źle się wyraziłem ale zrozumiałem to tak że w STM32 instrukcja GPIOA->ODR = 0x44(czyli ustawienie na pinach odpowiednich stanów) może wykonywać się dłużej niż PORTB = 0x44 w AVR
Tak, peryferia uC 32-bitowych są strasznie skomplikowane, tak strasznie, że nie da się ani przeczytać ich opisu, ani napisać kodu je obsługującego inaczej, niż biorąc gotowy przykład z HAL i modyfikując parametry. W takim prostym AVR do uruchomienia SPI potrzeba tylko trzech zapisów rejestrów, a w STM32 - aż trzech. To samo z UART, czyli tragedia po...
arcyimperator napisał: po skoku do Aplikacji z Bootloadera pojawia się dziwne zachowanie: zaczyna się wykonywać kod main() który jest przerwany i widzę w debugerze wykonywanie konstruktorów obiektów globalnych. Możesz pokazać jak to wygląda w debuggerze? Te konstruktory wykonują się jakby z main() czy jakby z przerwania? Późnym wieczorem sprawdzę i...
Mam ją. Jak polecacie czytać czy siąść i całą przeczytać na sucho czy może krok po kroku wykonywać wszystkie wskazówki?
Zlecę zaprogramowanie mikrokontrolera do obsługi czujnika piroelektrycznego Excelitas PYD 1798. Oprogramowanie może być wykonane dla Arduino lub STM32. Potrzebuję wyciągnąć dane z czujnika za pomocą mikro kontrolera i przesłać je do komputera za pomocą UART aby ostateczne zapisać je w arkuszu kalkulacyjnym (bazie danych) i zaprezentować na wykresie....
Właśnie sytuacja jest dla mnie o tyle niezrozumiała, gdyż nawet po zatrzymaniu wirnika prąd maksymalny - płynący przy 100% PWM to ok 350mA. Po zatrzymaniu wirnika słychać jedynie dziwne syczenie cewek i lekkie, minimalnie widoczne drgania wirnika. Zastanawiałem się czy to nie źle zapisana komutacja ale po zmianie kodu nie działało nic, a tutaj wygląda...
Już napisałem - będzie podobne, z lekką przewagą STM32. Ale to oczywiście też zależy JAK chcesz tym silnikiem sterować... Nie ocenię na oko ile i jakich instrukcji będziesz wykonywać co jeden cykl/wiele cykli. Fault Input w STM32 jest cyfrowy , z jednym konkretnym stanem aktywnym, więc aby móc wprowadzić fault w ogóle, potrzebujesz zewn komparator analogowy...
Nie powinien być. Kolego (at)rogeros czytaj uważnie warningi zgłaszane przez kompilator albo chociaż zamieszczaj tutaj log kompilacji. Znacznie to ułatwi rozwiązywanie tego typu problemów. Typ drugiego parametru przekazywanego do tej funkcji również generuje ostrzeżenie (ale to już po części wina mistrzowskiego designu API od ST...).
Cześć. Chcę skonfigurować linie PB8 i PB9 jako źródło przerwań żeby reagowało na zbocza narastające i opadające [syntax=c]RCC->APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN; gpio_pin_cfg(GPIOB, 8, gpio_mode_input_floating); gpio_pin_cfg(GPIOB, 9, gpio_mode_input_floating); AFIO->EXTICR[2] = AFIO_EXTICR3_EXTI8_PB; //PB8 tu wybieramy porty przerwań...
Czyli nie jestem osamotniony w tym temacie :). Tak jak pisałem wcześniej zmieniłem procesor na LPC i mam uruchomionych większość jego peryferiów i GPS działa normalnie. Co do STM32 to dowiedziałem się, że to wina pamięci flash. Według firmy ST gdyby wykonywać program z pamięci RAM to powinno działać ale nigdy tego nie sprawdziłem z braku czasu. Sugerowali...
Ja sobie to wyobrażałem tak, że np: ściągam plik z serwera, zapisuję go na dysku i przy każdym starcie procka sobie ten plik czytam. Kod z tej "biblioteki" ma się wykonywać w pętli (stale) i, albo drugi wątek sprawdza czy jest do pobrania nowa wersja, albo w tej bibliotece musi być zawsze kod który sprawdza czy nie trzeba się zaktualizować. Czy to ma...
Jesteś w stanie mi jakoś wytłumaczyć o co chodzi, że Cortexy mogą ignorować instrukcję NOP? NA czym ten mechanizm ma polegać? Opis w sieci często spotykany jest taki że to inteligentne uC i w pewnych sytuacjach mogę nie wykonywać tej instrukcji. W inteligencję nie wierzę, musi byc jakiś mechanizm tylko trzeba poznać jakie to okoliczności? Może Ty nie...
Mikrokontrolerem można odmierzać okres - jeśli działa z zegarem 1MHz, to można na nim zrobić generator dający się ustawić na 1000Hz, 999.001Hz, 998.004Hz,... przy mniejszych częstotliwościach odstępy będą coraz mniejsze. Nie da się cyfrowo zrobić równych odstępów, jeśli sygnał ma być równym prostokątem. Można natomiast wykonywać dodawania: np. do zmiennej...
STMicroelectronics to jeden z najpopularniejszych producentów mikrokontrolerów w Polsce. Swoją renomę zawdzięcza nie tylko udanym konstrukcjom, ale i wdrażaniu najnowszych technologii oraz bogatej ofercie. W niniejszym artykule prezentujemy niektóre z ostatnio wprowadzonych układów ST oraz wybrane ciekawe modele, które od jakiegoś czasu cieszą się dużą...
Co do zmiennego przecinka - jeśli ARM nie ma FPU to jest to tak samo prawdziwe dla ARM jak i AVR. Bezedura (; Po co mam kombinować bezsensownie jak coś policzyć na liczbach całkowitych, skoro układ ma prawie 100MHz i nawet bez FPU mogę sobie takich operacji wykonywać kilkadziesiąt-kilkaset tysięcy na sekundę? Kiedyś pisałem dosyć skomplikowany algorytm,...
NOR, to typ pamięci który umożliwia wykonanie kodu z takiej pamięci. W zasadzie jedyny który ma taką możliwość efektywnie. technologicznie to Flash. To jest główna pamięć nieulotna mikrokontrolera. Pamięci NAND sobie poczytaj, nadają się jedynie na pamięć masową, czytana stronami. Bez wyuzdanego kontrolera nie są w stanie działać tak by wykonywać z...
Widzę, że wywiązała się całkiem spora dyskusja i nie wiem do czego najpierw się odnieść. 1. Ten przypadek to maksymalne taktowanie timera i ciągłe wywoływanie przerwania, jednak nadal nie usprawiedliwia to czasu przełączania portu z ns do us. Nie zrobię teraz pomiarów więc nie podam dokładnych wyników ale przy wywoływaniu przerwania co 10us czas bodajże...
Zauważyłem, że przy zapisie ponad 1000 znaków/s (no, może trochę więcej) mikrokontroler 16Mhz (Arduino UNO) praktycznie przestał wykonywać pętlę główną. Ciekawe - nawet jakby wysylac na zmiane set_ddram_address (37us) i znak bez autoinkrementa (37us) + 4 zegary (2us) wychodzi 79us. 1k znakow zajmie więc 79000us wiec 79 milisekund . Więc z obliczeń...
Najpewniej Nie Zerujesz Flag Przerwań . To, że NVIC automatycznie zeruje flagę pending po wejsciu w przerwanie (pending->active) nie znaczy, że peryferia robią to samo - nie robią , więc musisz tego dopilnować sam. W DMA musisz w ISRrze ręcznie gasić flagę która wywołuje przerwanie, najpewniej w twoim przypadki TCIF. Możliwe oczywiście jest również,...
Wystąpiła pewna nieścisłość w Twoim sformułowaniu.: To ja nawet nie wiedziałem że stosuję konwersję typów z C99:) Czym innym jest konwersja typów, a czym innym są same typy danych. W poście wyżej przyczepiłem się, że stosowałeś char i uint16_t zamiast uint8_t i uint16_t albo char i unsigned short int . Chodziło mi bardziej o styl, bo stosowanie tych...
Witam. Mam problem z uruchomieniem USARTA1 wykorzystującego DMA do nadawania. W trybie "kołowym" wszystko działa . Teraz chciałbym uruchomić tryb pojedynczej transmisji staram sie wykonywać wszystko tak jak zaleca datasheet w szczególności str. 765 i 783 gdzie przedstawiona jest kolejność działań. Zauważyłem w debugerze brak jakiejkolwiek reakcji rejestru...
Witajcie. Dalej mam podobny problem. Używam STM32F407. Posiadam staram się obłużyć 3 różne USARTY (USART1, USART3 i UART4) wszystkie pracują w trybie asynchronicznym. Pod te usarty podpięte są następujące urządzenia: -USART1 - GPS z protokołem NMEA wysyłający dane co 1 sekundę -USART3 - datalink łączący płytkę z STMem z komputerem. -UART4 - akcelerometr...
Sprawdziłem to i zwracam honor freddie :) , po poprawnym skonfigurowaniu optionbytes - a można to zrobić w ten sposób: [syntax=c]while(FLASH->SR & 1<<0);//BSY: Sprawdzam czy flash nie jest zajęty. //Jeśli jest to będzie się kręcić pętla i kręcić. FLASH->OPTKEYR = 0x45670123;//Jak taką sekwencją zapiszę klucz, to się odblokuje jednorazowo...
mozesz zrobic tak: masz menu -> wybierasz jakas opcje z menu-> w kazdej z opcji wykonujesz zwyklego while(1) z warunkiem po wykonaniu petli na jakas flage, ktora ustawiasz w przerwaniu. Teraz w przerwaniu ustawasz zwykly powrot do menu (czyli w przerwaniu np. od nacisniecia przycisku czy od czegokolwiek co Ci bedzie pasowac ustawiasz tylko jakas flage...
Czy w procesorach STM32 wiekszość rozkazów wykonuje się w 1 cyklu zegarowym? Nie wszystkie. Jeśli chcesz mieć bardzo dokładnie oszacowany czas w cyklach to musisz zdeasemblować program, zajrzeć do dokumentacji, żeby sprawdzić ile czasu się wykonuje jeden rozkaz i sprawdzać rozkaz po rozkazie. Jak zależy Ci na prędkości i oszczędności co do rozkazu,...
akt_bufor ^= bufor1 ^ bufor2; Tak, pamiętam. Zastosowanie XOR Swap, ale nie za bardzo potrafię to zastosować :). Dokumentacja twierdzi, że przed modyfikacją ustawień DMA rejestr CCR powinien być wyzerowany (czy tam jeden bit w nim). Poszukam :). A czy na pewno to przerwanie będzie się wykonywać? Jest poprawny wpis w NVIC?
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...
[syntax=c]void MIDImessage(byte command, byte data1, byte data2) { uint8_t data[3]; data[0] = command; data[1] = data1; data[2] = data2; HAL_UART_Transmit_IT(&huart2, data, sizeof(data)); }[/syntax] Pamiętaj transmisja jest wykonywana w tle.
Ustawiłeś odpowiednio piny BOOT0 i BOOT1? Po tym: target halted due to breakpoint, current mode: Handler HardFault xPSR: 0x20000003 pc: 0x20000004 msp: 0x20004fe0 wydaje mi się, że Twój układ próbuje wykonywać kod z RAMu. 4\/3!!
Ale fajna zadyma o "wyzszosci ogórka nad pomidorem" ;] W sumie tez sie moge wypowiedziec, ale trzymam stronę uzywania RTOsa tu gdzie trzeba asynchronicznie wykonywać różne zadania ze sobą luźno (lub wcale) powiązane. Jednak 99% zadań które mają strukturę wejscie->przetwórz->wyjscie w zaden sposób tego RTOSa nie potrzebują, nawet jeśli po drodze uzywam...
Timerem zmierzyć możesz.
Kulka wlatująca w przeszkodę to najpewniej efekt pracy na intach. Jesli miałbyś FPU, to problem byłby rozwiązany - po prostu brakuje Ci ułamków... Spróbuj wykonywać operację na u64 fixed point, przesuwając przecinek na np 40sty bit -> Q23.40... Funkcje trygonometryczne powinieneś wtedy tez mieć stablicowane w tym formacie, ale dodatkowo owinąć LUT w...
Kontroler flasha to nadal tylko peryferial memory-mapped, wiec SFR w ktorym ustawiasz protekcje niczym sie nie rozni od SFRów od np. SPI, i dokladnie tak samo mozna go zapisać przez SWD/JTAG . A to juz wprost odpowiedz na twoje pytanie. SWD/JTAG pozwala na rw dowolnego 32bitowego adresu w losowym momencie, niezaleznie od tego, czy rdzen wykonuje kod,...
Witam, Robię analizę FFT na tym mikrokontrolerze korzystając z bibliotek DSP producenta. Za pomocą TIM2 zmierzyłem czas obliczeń FFT (szyna APB1 36MHZ, prescaler = 35 daje inkrementację licznika co 1µs). Fragment listingu z pomiarów: [syntax=c] TIM2->CNT = 0; for(i=0; i<512; i++) buffer_input[i]=(float)(ADC_buff_1[i][0]... arm_rfft_f32(&S,...
W momencie, gdy host wykonuje usb_bulk_read dane muszą już siedzieć w buforze endpointa 3. Inaczej zawsze będziesz miał timeout. Albert
Juz to przerabialem.. toolchain jest zainstalowany, program z przykladu juz kompilowalem i ladowalem do uC. Moze w takim razie inaczej sformuluje pytanie.. Dlaczego po wgraniu tego programu do mikrokontrolera sie on nie wykonuje?
Dzień dobry, przychodzę z następującym problemem. Mam podłączony do STM32F407 wyświetlacz o rozdzielczości 320x240 po dwóch liniach SPI. Linia SPI1 odpowiada za wyświetlanie na ekranie grafiki, łączy się ona z kontrolerem ILI9341. Tutaj wszystko działa bardzo dobrze. Natomiast na linii SPI3, która odpowiedzialna jest za komunikację z sterownikiem dotyku...
Reasumując: 1. Włączasz zasilanie = nie działa 2. Wykonujesz reset STM'a = działa ? Mógłbyś jeszcze "main'a" pokazać, albo najlepiej odchudź kod do obsługi tylko SPI i wrzuć cały projekt.
No ale jak skaczesz z przerwania, to cały Twój program wykonuje się jakby "wewnątrz" przerwania... Tak absolutnie nie można robić - musisz skok wykonać z trybu Thread, a nie Handler! 4\/3!!
Nie wiem dlaczego to nie działa. Mam oryginalnego j-linka, chińskiego j-linka, i ulinka2, i na każdym da się programować, debuggować i kasować różne STM32 bezzonkowo. Keil 4.03, MDK-ARM 4.10. Nie podoba mi się RAM for algorithm. W STM32 RAM zaczyna się pod adresem 0x20000000 a nie 0x10000000, to spora różnica... Popraw to, i powinno chodzić. Loader...
Do pasma EKG układ w zupełności wystarczy. W kwestii punktu 4, chodziło mi o taką konfigurację licznika: - licznik zlicza w jednym kierunku, np. w górę. - Czas pełnego okresu (PSC i ARR) to trochę więcej niż czas transmisji + impuls LDAC (=210ns). - Do jednego z rejestrów porównujących ładujesz wartość, która odpowiada impulsowi LDAC, a wyjście konfigurujesz...
Jeżeli chcesz do szyny wykorzystać np. połówkę portu (8 bitów) to najszybciej BSRR. Najszybciej wtedy wykonywać 8-bitowy zapis do rejestru ODR. 4\/3!!
No ale dzięki temu wiem co po kolei się wykonuje w przerwaniu...
Nie, no niewątpliwie masz rację, że jeśli chodzi o wydajność to szybciej jest bezpośrednio pisać po rejestrach ;) Tyle że tu chodzi zarówno o szybkość pojmowaną jako prędkość wykonywania kodu, jak i o prędkość pisania go - i tak musisz przeczytać manuala, a do tego jeszcze dokumentację biblioteki [; 4\/3!!
To wskazuje na wykonywanie się bootloadera ST.
Zegar peryferiów włączony?
https://obrazki.elektroda.pl/5145556100_... Portal Electronic Products podał zwycięzców konkursu Produkt Roku 2020 . W Zwycięzcy: wielordzeniowy procesor ECM3532 AI firmy Eta Compute oraz zintegrowany akcelerator sieci neuronowej MAX78000 firmy Maxim. https://obrazki.elektroda.pl/1295824000_... W tym roku w kategorii...
EDIT: Dobra, działa mi to już. A powiedz mi, jest jakiś sposób żeby sprawdzić jak długo jakaś funkcja się wykonuje? Pomijając zmianę stanu na wyjściach uC.
Tak. Tak bardzo Ci to przeszkadza? Przecież jeżeli chcesz coś wykonać co 2 sekundy to po prostu robisz to co ileś tam wystąpień przerwania. Ponadto, zastanowiłbym się nat tym czy Twój kod musi być w przerwaniu. Skoro chcesz go wykonywać z częstotliwością 1Hz to raczej to nie jest konieczne.
Witam. Potrzebuję pomocy w podmienieniu kilku linijek kodu wykorzystującego biblioteki, na taki bez ich wykorzystania(...) Ja w takim przypadku kopiuję do mojego programu kod źródłowy funkcji bibliotecznej, po czym wywalam wszystko co nie jest w moim przypadku potrzebne. Dla pewności robię to w małych krokach i po każdym sprawdzam, czy program nadal...
STM32 w ogóle nie działa? Nie wykonuje programu?
Jakiego typu jest absolutnie absurdalny i perwersyjnie wypaczony pomysł, aby mając OSa robić takie delay'e w wątkach ??? Również o podobną perwersję zakrawa wykonywanie przerwania timera co mikrosekundę tylko po to, zeby zmniejszać tam jakąś zmienną. Wez timer, skonfiguruj go jako one-shot, skonfiguruj mu takt na 1us, do ARR wpisz chciany czas w us,...
Testuję urządzenie składające się m.in z płytki STM32 Discovery oraz modułu ethernet na ENC28j60. Problem jest taki, że gdy włączę np. lampkę biurkową ( z transformatorem do halogenu 20W) która znajduje się w odległości ok. 40 cm bądź ją wyłączę, resetuje się kontroler ethernet. STM32 dalej wykonuje program. Dolutowałem już kondensator (47uF) między...
A uwzględniłeś czas w przerwaniach? Spróbuj wykonać każdy z testów z wyłączonymi przerwaniami, powiedzmy kilkaset razy i dopiero wtedy wylicz czas poszczególnego testu. Jeżeli różnice będą występować to jedyne wytłumaczenie, które przychodzi mi do głowy to takie, że być może część danych jest w innym segmencie pamięci. Wtedy przypadkowo możliwe że operacje...
Jeśli chodzi o przerwanie od tim2, to napisałem w poście powyżej nie do końca prawdę. Kod głównego programu jest wykonywany, a gdy zatrzymam procesor, program się zatrzymuje na tym rozkazie ktory mial wykonać. Następnie debugując <Step into (F5)>, procesor zaczyna wykonywać przerwanie TIM2_IRQHandler. I klikając F5 nigdy już nie wyjdę z tego...
Rozumiem, chodzi mi tutaj bardziej o "dobre" praktyki programistów. Powiedzmy konfiguracja RCC w STM32. Są STD i HAL, można to zrobić. Wykonuje się to miliardy taktów zegara, można prościej. Makra, odpowiednie funkcje... jak? Jakieś przykłady?
Idź przez instrukcje asma zamiast instrukcjami C i zobacz co sie dzieje pod &TIM4->SR gdy wykonuje sie sekwencja rozkazow BIC i STR. Takie dwa powinny tam być. Sprawdź również, czy proces zatrzymania rdzenia zamraża timer. Jeśli nie, to timer chodzi caly czas nawet przy zatrzymanym rdzeniu, i nie zauważysz najpewniej momentu kiedy ten bit jest zerem.
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?
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.
Najprościej: 1. mnożysz float *10, powstaje np zmienna "liczba"; 2. następnie "liczba" dzielisz przez 10 - masz zmienną "całe"; 3. na "liczba" wykonujesz dzielenie modulo 10 i masz ulamek. W przypadku całkowitych można też od razu rzutować na int, tak jak pisał kolega wyżej. Poskładać to do kupy z kropka pomiędzy za pomocą itoa() i już.
W STMach jest jeszcze "systick", tylko nie wiem czy w Arduino da się pod niego podłączyć. Zazwyczaj jest to przerwanie wyzwalane co 1ms i bardzo wygodne do pchania tam rzeczy które nie muszą lub nie powinny się wykonywać z prędkością 70MHz. (at)margas60 używałeś wcześniej RS232 (portu szeregowego) do łączenia się z mikrokontrolerami?
odczyt rejestru - modyfikacja - zapis do rejestru . Nie powinno cię dziwić, że jeśli między tymi operacjami wystąpi przerwanie, w którym modyfikowane są ODR bitbandingiem i nie tylko to cała operacja z przerwania zostanie anulowana.
Ostatnio trafiła mi się robota przepisania softu na pewien sprzęt... Poprzedni soft w oparciu o SPL zakatował biednego STM32F105 tak, że nie wyrabiał się z powierzonymi mu zadaniami: przepełniały mu sie kolejki, były zwiechy, częste restarty... Procek popędzony na 36MHz (czyli max dla HSI) pożerał baterię jak tylko mógł, żeby choć trochę postarać się...
no definitywnie plik z STM32 będzie idealny dla LPC1114... Czyżbym teraz musiał zmienić swoje powiedzenie, że "świat nie kończy się na AVR" na wersję o STM32? 4\/3!!
Skąd wiesz że warunek wykonuje się dla write_bit_tim2==5?
ARMy są równie dobre dla starych wyjadaczy, jak i dla początkujących Tak samo jak rachunek różniczkowy jest równie dobrych dla starych wyjadaczy po studiach matematycznych, jak i dla pierwszoklasistów w gimnazjum. Dodano po 1 A może to nie "kretyni" tylko inteligentni ludzie, którzy korzystają z bardziej efektywnej drogi pozyskiwania potrzebnych w...
https://pl.wikipedia.org/wiki/Odwrotna_n...
^ Fakt, niedopatrzenie... dziękuję za uwagę :) przerwanie jednak nadal nie wykonuje tego, co zaplanowałem. Jakieś inne pomysły ?
Nie chcąc zakładać nowego tematu mam nowe pytania. Czy jest jakaś różnica w 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?).
Masz rację - wydaje Ci się... (; Latencja to nie jest jakiś delay czy preskaler, po prostu przy nie-sekwencyjnym wykonywaniu rozkazów (skoki), potrzebne są te 2 cykle na załadowanie bufora. Spadek wydajności przez taką latencję oscyluje pewnie w rejonie kilku procent, więc nad czym się tu zastanawiać? Jeśli podniesienie częstotliwości "nic nie dało"...
po co w niektórych implementacjach takich 'rozbiegówek' mamy kod assemblerowy który kopiuje adres stosu do rejestru SP procesora? STM32 może używać dwóch stosów - jednego dla przerwań (nazwanego wyjątkowo myląco "main stack") i drugiego dla wątków (nazwanego "process stack") - a więc i dla "main()". To co jest w tablicy wektorów ląduje w MSP ("main...
Może gwoli wyjaśnienia nie jestem nowicjuszem w dziedzinie procesorów, wiem co to są rejestry Wybacz ale z postów to nie wynika Następnie szukając po internecie znalazłem inny rozkaz BNE label (branch if Z == 0 Not equal) i co najciekawsze on działa chociaż niema go w Reference Manual Załaczam Ci wiele innych rozkazów bez szukania w internecie A tak...
1. Jak jest zdefiniowane float32_t? 2. Literał 2.4567 jest domyślnie typu double. Użyj 2.4567f. 3. W jaki sposób odczytujesz wartość przekazywaną do funkcji? 4. W jaki sposób wykonujesz konwersję do stringa?
A czy po "Unlock flash" wykonujesz "Lock flash"? Teoretycznie mogłoby to mieć jakiś wpływ.
Wszystko wykonuje się po kolei A jak się ma do tego sscanf()?
Dzieki, za szybka odpowiedz. W zalaczniku wysylam plik main.c oraz stm32f10x_it.c Jak narazie probuje wykonywac przyklady z ksiazki STM32 Mikrokontrolery w praktyce. Jesli ktos bedzie mogl zerknac na kod i powiedziec co jest nie tak to bede wdzieczny Czyli nie polecacie uzywanie bibliotek ST?
No dobrze, tylko w przerwaniu wykonuje negacje bitu, więc... chyba, że czegoś nie widze :P
Ja pozwoliłbym sobie coś takiego zrobić inaczej. Kolekcjonujesz dane aż natrafisz na koniec linii '\n' i wykonujesz funkcję sscanf na rzecz bufora z danymi. [syntax=c] int x, y; int r = sscanf(buf, "TXY X%d Y%d\n", &x, &y); if (r == 2) { //prawidłowa ramka } else { //nieznana ramka } [/syntax] Oczywiście można jeszcze stosować pewien timeout (np 500ms)...
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 (zewnętrznych) oddziałujących na kolejność wykonywania...
Próbowałem dziś coś podziałać z debuggerem. Udało mi się ustalić, że oba przerwania (w połowie i na końcu transmisji) się wykonują. Jednak żadne wartości z ADC nie są wpisywane do tablicy :/ Będe jeszcze próbował uruchomić samego DAC-a.
"odwieszania" procka? NRST to jest najwzyklejszy RESET całego układu jak w każdym innym mikrokontrolerze. TRST jest resetem JTAGa. Nie musi on byc podłączony, bo SW ma zamiast pinu, rozkaz, i w efekcie wykonuje się ten sam reset JTAG.
Witam Jestem początkującym w temacie FreeRTOS i mam parę problemów ze zrozumieniem działania tego systemu. Jeśli mam jakąś obsługę przerwania i w czasie jego wystąpienia ustawiam semafor na który czeka jakieś zadanie o niskim priorytecie (albo nie najwyższym) to po wyjściu z tego przerwania to zadanie będzie niezwłocznie wykonywane czy system poczeka...
bo czas kopiowania jest bardzo krótki. 50us to nie jest krótko. A juz na pewno nie "bardzo krótko". Tak na prawdę nie wiesz, czy funkcja wykonuje się 50us czy 80us, bo lipnie mierzysz czas...
Oczywiście pokazałeś kodu tyle co kot napłakał, więc zobaczmy co mówi moja kula. Problem jest zapewne w tym że w funkcji wyświetlającej tekst używasz funkcji setPoint która pewnie na podstawie zmiennych x i y odpowiednio wyświetla na podstawie wybranej orientacji. Dokładnie tak Zobacz na stronę 55 i 56 Datasheet. Dla sterownika punkt (0,0) to lewy...
nsvinc nie za bardzo zrozumiałem o co chodzi. gaskoin dodałem do zmiennej i volatile w optymalizacji na level 0. Dalej to samo nie wiem co o tym myśleć aha jeszcze pytanie w opcji debugera gdy staram się testować to na prawdziwym procesorze program przestał pokazywać czas po prawej stronie koło numeru linii z kąd mam teraz wiedzieć w jakim czasie wykonuje...
dla miłoścników natychmiastowej satysfakcji jest godbolt. Tam można sprawdzić wszystko na szybko (tu np. jak zmusić kompilator do zrobienia odpowieniej szerokości zaipisu i odczytu):https://godbolt.org/z/WbxkKr Można nawet "na zywo" wykonywać programy online (ale to tylko oczywiście na pc-cie) https://godbolt.org/z/qxMQJW
Myślałem że zmieniam płytkę, wgrywam nowy bootloader i działa tak samo jak inne arduino. Wykonywałem procedurę z tego linku https://geektimes.ru/post/277928/
0. Dla USER BUTTON nie włączaj pull-up'a ponieważ ten przycisk jest podłączony do zasilania i ma dołączony pull-down. To co obserwujesz to pewnie efekt stale wciśniętego przycisku. Vide schemat MB1035. 1. Nie wiem co jest na PB8, ale konfigurujesz to do pracy z licznikiem TIM4, CH3. Zgaduję, że to ta dioda migająca z f (15..20)Hz 2. PE9 i PE12 konfigurujesz...
wykonywać remont wykonywać przerwać firma wykonywać
volvo silnika pralka whirlpool komutator silnik doblo wymiana
xiaomi robot vacuum xiaomi robot vacuum
Zbyt cichy alarm w kuchence Gorenje - przyczyny i rozwiązania Lexman łącznik schodowy – podświetlenie świeci po włączeniu światła, jak wyłączyć?