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...
Timerem zmierzyć możesz.
Nigdy nie robiłem takich rzeczy, więc nie wiem czy to dużo czy mało. Masz włączone FPU ? Jesteś pewny że masz dobrze skofigurowane zegary?
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
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!!
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...).
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...
To wskazuje na wykonywanie się bootloadera ST.
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?).
To tak, patrzę i na okno disassembly w CubeIDE i na kod wynikowy asm (plik .lss w folderze z projektem). Wycinek, który dałem jako screen jest właśnie z pliku .lss. W tym pliku wartość do jakiej odnosi się rozkaz ldr ( załaduj do r3 wartość z pod 0x80001d8) zgadza się ( jest tam 0x40010c00, i nawet patrząc na rejestry w czasie wykonywania programu wartość...
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!!
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...
Zawiodłem się- nie ukrywam. Mimo tego nie zaprzestane z nich korzystać, bo np. przy konfiguracji peryferiów są bardzo przejrzyste. Po za tym trzeba zmienić podejście do programowania... Chciałbym wiedzieć z czego to wynika, czy tak duże opóźnienia powstają na skutek częstego wywoływania funkcji API STM32?
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.
Fault input także ma stm32, 3 oddzielne ADC przetworniki także prędkość przetwarzania będzie podobna jak przy 2 oddzielnych próbkujących z 2MSPS w dsPICu. Jeśli chodzi o Pwm no to dsPIC widzę że ma jeszcze zamianę faz, nie ma co ukrywać wyposażenie w dsPICu jest bardziej zaawansowane jeśli chodzi o sterowanie silnikami i energoelektronikę. W każdym...
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...
Mam ją. Jak polecacie czytać czy siąść i całą przeczytać na sucho czy może krok po kroku wykonywać wszystkie wskazówki?
Znalazłem. Domyślnie kod wypluty z CubeMX przestawia wszystkie nie wykorzystane piny w tryb GPIO Analog, co powodowało "wyłączenie" pinów od debugera w trakcie wykonywania auto generowanej funkcji GPIO_Init(); Rozwiązanie: W CubeMX na zakładce "pinout" znaleźć na liście "SYS" i wybrać tryb "SWD".
Mówisz o tym by procesor sam zmienił swój program. Czy chcesz program, który będzie wykonywał inny program(skrypt).
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...
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,...
(at)mas24 bez zrozumienia podstawowych operacji logicznych, kolejności wykonywania działań i czytania DS-ów ze zrozumieniem, myślę że jest to zadanie awykonalne. Permutacji jest tak wiele że strzelenie na ślepo może zając dłużej niż trwa życie człowieka.
Nie za bardzo się zrozumieliśmy. Nie chodziło mi o to jak się ustawia priorytety w STM32, tylko jak je ustawić aby ta funkcja nie została przerwana w trakcie wykonywania, przez jakieś przerwanie. A dokładniej aby nie została przerwana w momencie da niej krytycznym - między przepisywaniem zmiennej data do bufora i inkrementacją zmiennej ut1_end. Bo później...
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/
Witam, Zaczynam prace z mikrokontrolerami ARM a konkretnie z modułem STM32F103, do tej pory wgrywanie programu wykonywałem przez program STM32 ST-link Utility oraz programator ST link v2, jednak chciałbym mieć możliwość wgrywania bezpośrednio z Eclipse no i możliwość debugowania. Czy byłby ktoś w stanie napisać jak tego dokonać od początku do końca...
Jeszcze jedno mam pytanie. Szybciej w STM32 wykona się dodawanie/odejmowanie 32 bitowych zmiennych, czy 8 bit ? A jak w powyższym jest z mnożeniem i dzieleniem ?
Witam mam trywialny problem, ale chciałbym się upewnić: Otóż postanowiłem zrobić sobie wysyłanie danych przez port szeregowy. Mam w związku z tym pytanie odnośnie USART na STM32. Jeśli ustawię sobie przerwanie USARTA na aktywny stan TXE (USART_ITConfig(USART1, USART_IT_TXE, ENABLE); ), to ono od razu mi się wykona, bo w TDR nie ma danych. Przerwanie...
Dzięki za szybką odpowiedź. Przy okazji zapytam. Jeśli jest wykorzystywana tablica, to szybciej będzie się wykonywało obliczenia z wykorzystywaniem standardowej obsługi, czy obliczeń na niej z wykorzystaniem wskaźników ?
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!!
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?
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?
Witam wszystkich. Przenosze kod z STM32 L 053 na STM32 F 030 Ruszylo mi prawie wszystko czyli: RCC GPIO SPI Pracuje na kodzie dostarczonym przez ST pod pewien moduł radiowy. Kod jest oparty o HAL generowany z Cube. Mam problem z DMA. Problem ten jest wynikiem nie wykonywania się jednej linijki kodu. Zamiast wskaznika (adresu funkcji) wpisywane jest...
(...)co zajmie 10 cykli zegara w przypadku wykonywania z ITCRAM. Jezeli z FLASH to trochę dużej, bo FLASH jest wolniejsza. Wiesz o ile wolniej? Bo u mnie właśnie z flasha się to wykonuje. W sumie, nie dałoby się po prostu zliczać jakoś cykli zegarowych? Albo może użyć timera, tylko czy on wyrobi przy częstotliwości np 100MHz?
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
Dobra, to jest znacznie lepsza opcja, z poczekaniem po prostu... Albo nawet ze zworką. Bo rozumiem, że to jest tak, że jak już programator (ST-Link) "złapie" procka, tzn. się z nim połączy to wykonywanie kodu jest wstrzymane i wtedy może już sobie tak wisieć ile chce?
[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.
Ale ja to zaczerpnąłem z opisu z EdW. Tam w kursie było opisane że w zależności od ustawień dwóch pinów BOOT1 i BOOT2 po stracie są trzy możliwości: alebo bootloader, albo Flash albo z RAM i teraz jak program jest tak napisany że ma się mieścić sę w RAM to całośc ładowana jest do RAM i stąd się zaczyna wykonywać. Z tym że to dotyczyło STM32 a nie LPC1114.
O adresy kodu chodzi, a nie danych. Adresy kodu mają wpływ na akcelerację dostępu do Flash. Pętla zaczynająca się od adresu podzielnego przez 16 ma szansę wykonywać się szybciej, niż taka od adresu np. 16x + 14.
Dane lądowały w SDRAM bo RAM procesora jest znacznie za mały by pomieścić 2 miliony pikseli w formacie RGB565. Po wykonaniu zdjęcia dane były "wyciągane" przez procesor z tego ramu i wyliczana była krzywa którą monitorowała kamera. Cały proces wykonywał się ok 2 - 3 razy na sekundę.
Powinno się dać, JTAG też ma swój pin reset, który blokuje wykonywanie się kodu (gdy pin = 0) Chyba, że w st-linku o tym nie pomyśleli :)
Witam, programuję stm32f103rb w KEILu, do tej pory używałem optymalizacji '-O3' nastawionej na szybki czas wykonywania. Wszystko działało bez zarzutu, skąd nagle po kompilacji zaczął pojawiać mi się błąd init.c: error: C3900U: Unrecognized option '-O3'. i to w różnych innych programach, które do tej pory kompilowały się bez zarzutu a ja nic nie zmieniałem....
Timer może wywoływać transfery INNEGO kanału DMA niż ten odpowiedzialny za ADC. Co prawda kanał ten może być skonfigurowany tak, aby wykonywał transfer z ADC, ale jednak jest to inny kanał niż konfigurujesz i włączasz. 4\/3!!
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"...
Proszę moderatora o doklejenie do wcześniejszego tematu bo przez przypadek kliknąłem w rozwiązano :( Przerwania mam włączone. Globalnie przez __enable_irq(); i poszczególne przez wpisanie jedynek do odpowiednich rejestrów ISER. Czy to możliwe że przerwania działają przy debugowaniu a przy normalnym wykonywaniu kodu już nie nawet jakby nie były włączone...
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?
Witam, jestem w trakcie wykonywania ćwiczeń z książki Mikrokontrolery STM32 w sieci Ethernet na zestawie uruchomieniowym ZL29ARM, z programatorem j-link edu, w środowisku eclipse (a konkretniej System Workbench for STM32 z pluginem do obsługi j-link). Aktualnie zawiesiłem się dłuższy czas na konfigurowaniu budzików biblioteki lwip (dla posiadających...
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
Dla pewność próby wykonywałem na drugiej takiej samej płytce STM32, niestety bezskutecznie. Nie mam już na to głowy... Łaczenie róznych pinów i portów tak aby działało jest jak by to powiedziec solą zabawy z uC. Nie da sie tego uniknąc - a najlepsza metodą nauki jest praktyka i eksperymenty. Zwarcie Tx z Rx bylo po to zebys na jakims terminalu na Pc-ie...
Nie wiem, czy do końca zrozumiałem Twoją odpowiedź, gdyż kłóci się z tym co obserwuję w układzie. Mogę zmieniać częstotliwość jednego z kanałów w trakcie wykonywania programu. Problem został rozwiązany, dany kanał przy zmianie okresu jest załączany i wyłączany w procedurze obslugi przerwania.
(at)_lazor_ Odbiegamy od tematu, ale może kogoś to zainteresuje, skoro i tak nie mamy komponentów do montażu. ;) Staram się nie zgadywać co mogą zrobić politycy w kwestiach finansowych. Moja wyobraźnia nie sięga tak daleko. Pierwsza bariera to cele klimatyczne. Fabryka pożerająca duże ilości energii w Polsce nie wchodzi w grę ze względu na zielony...
Widzisz gdzieś w kodzie wyłączanie HSION? Bo ja nie... A boli cię że HSION jest włączony? Jeśli tak, to go wyłącz ;] Czymże jest "jakiś licznik"? Co ty z nim masz zmiar robić i do czego go używać? Od pomiaru czasów wykonywania kodu jest timer w procesorze. Poza tym, co ci po liczniku, skoro pierwsze lepsze przerwanie rozwala ci cały pomiar... W lewym...
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,...
tzn. są jakieś adresy z flasha, ale nie te które bym się spodziewał. Przede wszystkim musisz wiedzeć jakiego typu to HF bo adresy mogą być nieprecyzyjne. __disable_irq(); W HF-ie możesz sobie to już darować :) Czy ma może to związek z tym że w Hard Fault używany jest inny stos niż podczas wykonywania tasków? To sobie sprawdż jaki stos jest w użyciu....
Witam Na wstępie powiem, że jestem świeżakiem w temacie mikrokontrolerów STM32 ale sporo szukałem (nie tylko na elektrodzie) i nie mogę sobie z tym problemem poradzić. Mam płytkę F103VCT6 + LCD3.2''. W tym LCD jest slot na kartę microSD. Chcę zrobić chyba najprostszą rzecz na świecie czyli stworzyć na karcie plik. I tu pojawia się problem - płytka zawiesza...
Timery i dokładne odmierzanie czasu w różnych miejscach kodu. Zamiast korzystać z kilku timerów, można w różnych blokach kodu konfigurować 1 timer i wstrzykiwać odpowiednią funkcję przerwania. Oczywiście pod warunkiem, że nie będziemy musieli odmierzać czasu dla dwóch bloków jednocześnie. Wygląda na to, że potrzebujesz po prostu callbacka w jednym...
Proponuje dodać do ulubionych stron: [url=https://www.st.com/en/microcontroll... A tutaj więcej szczegółów. [url=https://www.st.com/content/st_com/e... [url=https://www.st.com/en/microcontroll...
Jeżeli nie wiesz o jakiej bibliotece mówię to tylko tracisz swój i mój czas bo oznacza to że najprawdopodobniej nigdy nie programowałeś mikrokontrolerów z serii STM32F10**. Jest cała masa ludzi, którzy dzięki artykułom, materiałom, bezpośredniej pomocy Freddiego, a nawet dzięki jego programatorowi nauczyło się programować mikrokontrolery ARM, w szczególności...
W modelu zdarzeniowym nie ma przełączania zadań, bo program nie "zatrzymuje się w oczekiwaniu" - obsługa zdarzenia kończy się i już. Tyle, że zadanie może wykonywać się długo, np zapis dużego pliku, programowe dekodowanie JPG. Wtedy trzeba rozbić na mniejsze fragmenty co bywa upierdliwe.
Witam, od kiedy zacząłem porządkować kod, korzystając z funkcji mój program zaczął się źle wykonywać. Dotychczas kod był nie wielki więc wszystko robiłem na if'ach, zaczął się rozrastać więc w systicku zostawiłem if'y ale całe obliczenia do wykonania oraz wysyłanie dałem do oddzielnej funkcji (wysyłanie jest też poprzez wywołanie następnej funkcji)....
Ok. Głównie chodzi o wywłaszczenia, bo zgłoszenie dwóch lub wiecej przerwań jednocześnie jest dość rzadkie (przynajmniej w moim projekcie). Dzięki za informację, jako ciekawostka:) Mam przerwania które są wywoływane dość często i mają kilka linijek kodu, oraz przerwanie wywoływane rzadko ale mające sporo kodu - chce tak ustawić priorytety, żeby te krótkie...
Nie bez powodu wspomniałem o końcowym resecie. To fakt, że specyfikacja 1wire w najmniejszym stopniu nie każe resetować magistrali po transakcji. Wynikło to z moich własnych doświadczeń. Taki DS2450 jeśli pracował z wieloma kolegami na długim kablu, nie zawsze chciał akceptować reset rozpoczynający transakcję. Empirycznie zostały na to znalezione 2...
Czy istnieje u ciebie przerwanie które wymusza dostęp na FSMC, tj. wyświetlacz? Jeśli nie, to nie ma opcji żeby praca FSMC miała wpływ na wykonywanie przerwań...Jeśli tak, to masz błąd w założeniach, bo dostęp do wyświetlacza nie powinien być w ISRrze.... Przerwania się skolejkują wtedy, gdy masz włączonych kilka przerwań i wszystkie wystąpią na raz...
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,...
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...
O stacjai FDD będę myślał . Do zaprojektowania COBRA-DOS skłoniły mnie właśnie "męczarnie z kartridge" , jest to problem sprzętowy i softwerowy . Aktualnie pracuję nad płytką i tu pojawia się problem , oprócz oryginalnego złącza Cobry forum nie wypracowało innego standardu (naliczyłem kilka indywidualnych propozycji) .Nie wiem jakie zastosować rozwiązanie...
Rzeczywiście, po "halt" i bez 'bin' zadziałało. Dzięki. Ciekawostka: bez "halt", w trakcie wykonywania się programu, też działa (bez 'bin' - z 'bin' nie). Nie pamiętam, w jakich okolicznościach bez 'bin' OpenOCD zgłaszał, że nie może otworzyć pliku. Na pewno zgłaszał, inaczej bym nie próbował 'bin'.
A co Ty piszesz o swoim RTOSie? Przecież wielokrotnie już w tym wątku napisałem, że przesadne skupianie się na prędkości jest bezcelowe (; Moja uwaga odnosiła się tylko do tego, że rzekomo taka a nie inna architektura FreeRTOSa jest podyktowana jakimiś ograniczeniami zasobów. Po prostu takie myślenie jest błędne, bo FreeRTOS po prostu _jest_ wolny,...
Plik map wygląda na sensowny. Podejrzyj w deassemblacji (albo zdebugguj) czy aby na pewno startup czyści sekcje .bss i inicjalizuje .data (podczas wykonywania funkcji Reset_Handler). Jeśli program "nie działa" tylko jeśli poprzednio uruchomiony był malloc(), a jeśli nie był uruchomiony to działa, to wskazywałoby na problem z inicjalizacją tych sekcji....
(at)janchar Ponieważ widać tutaj pewne niejasności, dlatego polecam zapoznać się z podstawami. Kluczowe słowa to proces debugowania i debuger. Na przykład [url=https://en.wikipedia.org/wiki/Debug... Prościej się nie da. Wracając do tego konkretnego przypadku, to podłączając mikrokontroler przez interfejs SWD, czyli GND, SWCLK, SWDIO, nie ma...
Witam Na tej stronie [url=http://www.st.com/web/en/catalog/to... jest paczka zip z wieloma przykładami. Jest też demo obsługujące w/w układy (program automatycznie wykrywa, który układ jest zamontowany). Program sprawdzałem i u mnie działa (płytka STM32F4-DISCOVERY z wersją akcelerometru LIS3DSH) PS. Jak skonfigurować by po włączeniu...
Witam, niedawno pisałem o problemie pracy procka bez debugu dla USB. Teraz mam cos podobnego z kartą SD. Poprzednio problem minął samoistnie bez specjalnej próby rozwiązywania go. Teraz mam tak ze pod debugiem soft poprawnie inicjalizuje kartę SD natomiast bez debugu nie inicjalizuje karty SD. BEZ DEBUGU po komendzie GoToIdleState nie ma spodziewanej...
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....
Choć z drugiej strony, nie widzę w Twoim kodzie żebyś modyfikował TIM1_CR1->DIR... Podczas wykonywania instrukcji: TIM1->CR1|=TIM_CR1_CEN;// załącz TIM1 bit TIM1_CR1->DIR w "cudowny" sposób zmienia wartość na 1 i tego nie mogę zrozumieć... TIM_CR1_CEN==((uint16_t)0x0001) więc bit TIM1_CR1->DIR nie powinien zostać naruszony.
Korzystam z dev board STM3210B. Timer 2 konfiguruje następująco: [syntax=c] RCC_APB1ENR_TIM2EN_bb = 1; TIM2->PSC = 36000; TIM2 -> CNT = 0; TIM2 -> ARR = 0xFFFF; TIM2_CR1_CEN_bb = 1;[/syntax] po wykonaniu pewnej funkcji licznik zatrzymuje bitem CEN. i pobieram wartość CNT; Działa wyśmienicie. Teraz gdy zmienię licznik na TIM3 to: 1. otrzymuje inny czas...
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...
-jeden procesor 1 mips i wykonuje wszystkie zadania w jednej operacji Zadania takie jak dodawanie, mnożenie, operacje logiczne na bitach, skoki warunkowe, czyli wykonywanie określonego programu, a nie przełaczanie jakiegoś pinu! Wracając do Core i7 - wiesz w takim razie jak szybko taki Core i7 przełącza pin???
Mam przed sobą Cortex™-M3 Revision r2p1 Technical Reference Manual i tam napisane jest iż MLA trwa dwa cykle a np ADD, MUL jeden czyli ja zysku nie widzę przy wykorzystaniu tego rozkazu (Czasowego bo to tylko chyba objętościowy zysk). Staram się w sposób świadomy pisać w C tak aby kod wykonywał się jak najszbiciej. ale jeśli nie ma różnicy w czasie...
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ę...
są jakieś praktyczne przypadki wykorzystywania zdarzeń? Pytam ogólnie w całej rodzinie stm32. Tak w praktyce to zdarzeń nie ustawia się wcale. BlueDraco, a np. zdarzenie od zmiany stanu pinu ? Zdarzenie od przepełnienia licznika i zmiany stanu pinu ja osobiście dość często wykorzystuję. Co do pytania o aspekty praktyczne takich zdarzeń, hmm no to chyba...
Freddie czy jesteś pewien że Cortex-M0 to jest architektura Harwardzka (zmodyfikowana architektura Harwardzka)? Co do Cortex-M3 nie mam najmniejszych wątpliwości że masz racje bo to pisze choćby tutaj [url=http://www.btc.pl/pdf/stm32wp_rozdz... i jest świetnie uzasadnione ale także tutaj http://www.arm.com/products/processors/c...
Odnośnie inicjowania liczników, pole struktury TIM_Period w jakim związku pozostaje z okresem wykonywania przerwania powstającego od kanałów licznika. Zauważyłem że wartośc tego pola nie zawsze ma wpływ na okres wyzwalania przerwań. Chyba że coś pochrzaniłem.
Nie. Wciąż jadę na starych przykładach i zmieniłem w nich tylko ten adres. Dodatkowo kilkanaście razy przekompilowywałem kod i wgrywałem go do procesora i działał. Po którymś przeprogramowaniu raptem przestał. I teraz jak już wiem o co chodzi to jadę na kodzie bez PLL. Po za tym to zawsze muszę dwa razy przeprogramować. Po pierwszym przeprogramowaniu...
Może wtedy, gdy wykonujesz sscanf, do RxBufferRMC zaczynają już się wpisywać nowe dane? Czy tam się wykonuje wiele zadań współbieżnie, czy jest wyraźny podział, co kiedy ma się wykonywać? Techniką, jakiej można użyć przy debugowaniu takiego programu, jest kopiowanie danych przed ich użyciem tak, by w razie błędu mieć kopię danych, dla których ten błąd...
No ale dzięki temu wiem co po kolei się wykonuje w przerwaniu...
Witam, Nie bardzo wiem co robię źle w związku z czym zwracam się z prośbą o pomoc do szanownych Kolegów. Mianowicie mam taki oto prosty kod: [syntax=c] static int16_t count = 0; float dd = count * 1.0f; ... [/syntax] W chwili rzutowania procesor się zwiesza, tzn. nie przechodzi do wykonywania dalszego kodu. Oczywiście próbowałem również...
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...
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...
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...
No tu akurat racji nie masz, bo bez wymuszenia int16_t będziesz miał 32-bitową wartość bez znaku, a z int16_t nastąpi prawidłowe rozszerzenie znakiem do 32 bitów podczas wykonywania obliczeń. Tyle że autor ma wartości bajtów "31" i "0", więc - tak jak pisałem - zmiana którą zaproponowałeś nic tu nie zmienia, bo to akurat jest wartość dodatnia. Problem...
Zegar peryferiów włączony?
Masy nie będą połączone ze względu że wydawało mi się to poprawne aby nie uszkodzić stma, a dodatkowo nie mam takiego przymusu ponieważ STM ma tylko służyć za pomiar napięcia na boczniku , który jest elementem całej maszyny i płynie przez niego do 300amp. I miałem nadzieję że osobna masa spowoduje że to, że do adc podłącze 12V bez wspólnej masy i będę...
Korzystałem z tych bibliotek i muszę przyznać, że przyjemnie sie ich używa. Osobną kwestią jest jej wydajność ale Panowie przecież mamy do czynienia z procesorem 32-bitowym z instrukcjami Thumb2. Czy to będzie kilka kb kodu wiecej czy mniej nie jest czasem tak ważne jak czytelnosc kodu oraz jego modułowość. Naprawdę wiecej zależy teraz od linkera i...
Ale chyba za dużo gdybasz - napisz jakieś fragmenty kodu i porównaj czasy wykonywania - czy spełniają twoje założenia. A czy masz już napisaną oddzielnię obsługę jakiegoś z tych zadań? w sensie sterowanie silnikiem/odczyty i obróbka ramek? W końcu pewnie twój HAL i tak się skupi na ustawieniu DMA raz na jakiś okres czasu - więc całą resztę masz na obliczenia,...
Jeżeli szukacie informacji na temat sposobów zabezpieczania programów i produktów, to dostępny jest cykl szkoleń z tego zakresu na youtube. Znajdziecie tam ogólne informacje na temat metod zabezpieczania programów, szyfrowania danych, podziału programu na jednostki chronione i niechronione, rozwiązań sprzętowych wspomagających proces oraz rozwiązań...
albertb: Idąc tym tropem, każdy kompilator powinien z instrukcji a = 5 generować dwa takie same podstawienia, bo jakiś procesor może się pomylić i zignorować instrukcję. Jeśli specyfikacja architekury i ABI mówi, że stos ma być wyrównany, to ma być. Po to jest specyfikacja. Architektura ARM dopuszcza np. knwencję little-endian i big-endian, ale kompilatory...
Freddie, w tym wątku mowa jest nie o Twoim Genialnym DestroyRTOS, a o stosie USB od ST w typowej konfiguracji, gdzie obsługa USB jest nie w zadaniu RTOS, a w przerwaniu USB. Tak się składa, że sam peryferial USB w ST ma parę rejestrów, w których poszczególne bity są związane z różnymi endpointami. Co dalej - zapewne sam wiesz - kiedy dwa kawałki kodu...
STM32 w ogóle nie działa? Nie wykonuje programu?
Witam Mam takie pytanie czy istnieje możliwość wykonania pewnej procedury np podczas programowania STM32 albo przy pierwszym uruchomieniu? Chodzi mi dokładnie o wykonanie procedury np zapisującej coś do pamięci, ale tylko przy pierwszym uruchomieniu po zaprogramowaniu lub podczas programowania a przy kolejnych uruchomieniach już się nie wykonywała....
Witam, od jakiegoś czasu zastanawiała mnie jedna sytuacja. Dzieje się to przy odpaleniu debuggera w środowisku System Workbench for stm32 (konfiguracja generowana przez CubeMX). Program otwiera nowe pliki z niepokojącą informacją, że coś nie jest dostępne. W ogóle nie przeszkadza to w wykonywaniu kodu i pewnie Eclipse z nakładką na STM-y tak ma, ale...
Dodam jeszcze że to: __attribute__((interrupt)) jest kompletnie niepotrzebne i tylko powiększa niepotrzebnie kod (zmniejszając szybkość wykonywania).
wykonywania połączeń wykonywania płytek wykonywania remontu
toyota corolla żarówki klejenie żywicą metal kontrolka ładowania renault scenic
Moment dokręcania śrub pokrywy zaworów Peugeot 3008 1.6 THP EBEI – jak włączyć światła w rowerze elektrycznym? Brak widocznego włącznika