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
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,...
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....
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...
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
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ń...
Witam, Od paru dni piszę soft dla STM32F415 Bazę projektu generuję w Cube MX. Nie mogę sensownie skonfigurować DMA, jedynie prawidłowo działa tryb CIRCURAL oraz pojedyncze skorzystanie z DMA w trybie NORMAL. Pozosatałe kombinacje DMA działają różnie, czasem dziwnie czasem wogóle. Celem jest aby dwa przetworniki ADC2 i ADC3 zapisywały w przerwaniu (zrezygnowałem...
Witam, Próbuję wykorzystać funkcjonalność DMA burst aby pobierać wartości rejestrów ARR, RCR i CCR1 przy każdym update event timera 1 z tablicy bez zajmowania procesora. Program działa prawidłowo po wystąpieniu pierwszego przerwania UEV od TIM1, lecz kolejny transfer danych wprowadza inne dane do tych rejestrów niż zamierzone (znajdujące się w tablicy)....
Witam, Sytuacja wygląda tak: uC - który zbiera dane jest połączony przez uarta do uC (Stm32). Teraz pytanie jak wydajnie odbierać komendy z uC który zbiera dane. Mam zrealizowane odbieranie danych w przerwaniu ale realizacja zadania w przerwaniu odpada, program się sypie ponieważ obsługa zadania trwa długo w porównaniu do danych przychodzących, danych...
http://obrazki.elektroda.pl/6457751400_1... Firma STMicroelectronics idzie w kierunku coraz bardziej skomplikowanych aplikacji, dzięki rekordowo szybkiej serii układów STM32H7. Układy te posiadają dużą ilość pamięci SRAM (1 MB) i Flash (2 MB) oraz szeroką gamę peryferii i wyjść. Ten istotny skok jakościowy ST zawdzięcza opracowaniu...
Witam, pytanie dla ogarniających asm gdzie mogę znajdę takie informacje ile cykli wykonuje się dana instrukcja, piszę w C i na samym asemblerze mało co się znam, lecz patrząc na okno deasemblacji w debuggerze zauważyłem np. taka instrukcja [syntax=c] GPIOF->BSRRL = 0x0040; GPIOF->BSRRH = 0x0040;[/syntax] trwa jakieś 42ns jest to jakieś 6 instrukcji...
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...
Witam mam kilka nurtujących mnie pytań. Czy każdy układ peryferyjny mikrokontrolera działa nie zależnie czyli np. jeśli przetwornik adc wykonuje swoja prace to czy zabiera czas procesorowi czy np. jak dma przesyła dane z adc do pamięci czy może w tym samym czasie przesyłać dane z pamięci do uart i czy w tym czasie procesor może wykonywać inne tez czynności...
witam mam problem z płytką [url=http://propix.com.pl/pl/p/Modul-STM... a mianowice, potrzebuję równolegle wykonywać operację pomiaru temperatury i generowania fali prostokątnej dla wentylatora, wszystko fajnie jak jest osobno bo działa, ale jak chce to połączyć przy pomocy uC-os to nie działa albo chodzi jedno zadanie albo drugie....
Witam, chciałbym zastosować STM32F103RCT6 do sterowania przekształtnikiem napięcia zasilającym silnik indukcyjny. Program chcę pisać w C w Keilu. Stąd pewne pytania: Ponieważ będę operował na ułamkach chcę wydzielić np 10 lub więcej bitów na część ułamkową. Nie wiem jak w C załatwić kontrolę nad przepełnieniem czy konieczne są wstawki asm (chciałbym...
Cześć piszę sterownik silnika krokowego i przez USART'a definiuję nieokreśloną ilość impulsów. Zatem jestem zmuszony nadpisywać dane w tablicy DMA . Unikając opisywanie nie dotyczących elementów obliczyłem sobie okresy dla każdego impulsu powiedzmy załadowałem je do tablicy src. Używam Bursta, mianowicie przesyłam Period, Repetition Counter = 0 . oraz...
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żą...
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...
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,...
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...
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!!
Timerem zmierzyć możesz.
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?
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.
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...
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...
wykonywać remont wykonywać przerwać firma wykonywać
prądniczka tacho amica rozłożyć odkurzacz sterowanie siemens
denon avr4308 mikrokomputer cobra1
Regulacja jasności podświetlenia zegarów Iveco Daily - metody i problemy Canal+ CAM CI+ ECP 4K na Enigma2 – aktywacja i obsługa ECP, kompatybilność tunerów