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.
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
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...
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!!
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, 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,...
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.
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...).
To wskazuje na wykonywanie się bootloadera ST.
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....
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...
https://pl.wikipedia.org/wiki/Odwrotna_n... Tego nie znałem, dzieki za info Może to Ci się przyda [url=https://hackaday.io/project/6468-rp... Scientific Calculator
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...
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...
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
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.
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!!
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!!
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...
Mam ją. Jak polecacie czytać czy siąść i całą przeczytać na sucho czy może krok po kroku wykonywać wszystkie wskazówki?
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?).
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...
Mówisz o tym by procesor sam zmienił swój program. Czy chcesz program, który będzie wykonywał inny program(skrypt).
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...
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?
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,...
(może nie do końca początki bo coś już umiem) chyba jednak początek:). Uzupełniając powyższą odpowiedź należy wrócić do podstaw. AVR i RAM mają zupełnie różne architektury. AVR ma rozdzielone przestrzenie adresowe a ARM ma jednolitą. Dlatego w AVR musisz wykonywać jakieś magiczne sztuczki, aby odczytać wartość z pamięci programu, a w ARM nie. W ARM...
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?
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...
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,...
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.
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 ?
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.
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...
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
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?
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...
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?
Zgaduję, że to kontynuacja wątku dotyczącego wyświetlacza http://www.elektroda.pl/rtvforum/viewtop... Problemem nie jest SPI, tylko sposób w jaki przygotowujesz dane do przesłania. Zabijasz wydajność całą serią operacji, które nie powinny mieć miejsca podczas transmisji: odejmowanie, przesunięcie bitowe, iloczyn logiczny...
[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.
Bez różnicy - programujesz i tak w C, więc wersja rdzenia nie jest szczególnie istotna. Na M4 możesz operacje zmiennopozycyjne wykonywać w sprzęcie, ale to zmartwienie kompilatora (plus parę Twoich kliknięć w ustawieniach środowiska). Peryferiale we wszystkich seriach STM32F poza F1 są niemal identyczne (F0, F3, F4, L0). Podstawowy kurs dla DISCOVERY...
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 :)
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ę...
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"...
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...
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...
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...
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?
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.
Poza tym, żeby je odpalić musisz mieć jakiś inny programator, żeby zaprogramować programator. Kółko się zamyka. Niestety nie jest to prawdą. Dowcip z USBTiny polega na tym, że można go zaprogramować bez posiadania programatora, co dokładnie opisał Manekinen w artykule, który wskazał Loksonick, czyli: http://mdiy.pl/programator-usbtiny-mkii-... Trzeba...
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...
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 ?
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...
(...)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?
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...
Nie trzeba się bawić w udev, jedynie co to dodać linijkę odpowiedzialną za dostęp do urządzenia, żeby nie musieć logować się na roota za każdym razem jak chcemy debugować. Jaja w nowym jądrze (!) wynikały z tego, że sterowniki ftdi ładowane do jądra "nie wiedziały", że urządzenie o podanym vid i pid to urządzenie oparte na ftdi i trzeba było im to jawnie...
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...
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)....
Dodam że na oscyloskopie wychodzi przebieg prostokątny o okresie ok 160ns i wypełnieniu ok 50% a przecież jeden cycle trwa zdaje się ~14 ns więc w tym przypadku stan wysoki przebiegu powinien trwać w okolicach 15 ns. Czyżbym coś pominął, czy układ nie rozpędził się do 72 MHz? Układ jak najbardziej działa na 72 MHz, te 80 ns wynika z wewnętrznej architektury...
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...
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 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.
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,...
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...
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...
Od kilku dni walczę z ćwiczenie 8.4 z kursu: http://www.elektroda.pl/rtvforum/topic31... W kursie jest kod dla F103, ja próbuję to przerobić dla wersji F407. Niestety bezowocnie. Sam timer, kiedy wyzwalać go sygnałem zegarowym, działa prawidłowo i włącza/wyłącza diody w procedurze przerwania. Niestety kiedy ma zliczać impulsy na pinie...
(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...
Tzn. nie atomowe było by przepisywanie po jednym bicie, a nie sama pojedyncza operacja "BITBAND(&GPIOA->ODR, 5) ^= 1;" ? Najpierw musi odcztać ten bit, potem zxorować a następnie zapisać. Pomimo tego że zapisałeś to w C w jednej operacji nie oznacza to że tak to będzie zrealizowane w programie. Czyli operacja or, z bit bandingiem: "BITBAND(&GPIOA->ODR,...
Ustawiam 8 najmłodszych bitów jednego GPIO jako wejścia. Podłączam szybki 8-bitowy ADC z wyjściem równoległym do tych najmłodszych bitów. Deklaruję tablicę elementów jednobajtowych. Odczytując stan rejetru IDR i wrzucając pod kolejne indexy tablicy mam w niej bufor z próbkami a ADC. Teraz chodzi o to, żeby nie robić tego na piechotę i w przerwaniu....
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...
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...
W jaki sposób mierzyłeś te opóźnienia? Co niby CMP ma odczytywać z flasha jak porównuje rejestry? Z tego co wiem, to wyłączenie prefetch buffera spowoduje to, że branch predition może nie działać i BNE może się inaczej wykonywać (pipeline i jego flush).
-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...
No ale dzięki temu wiem co po kolei się wykonuje w przerwaniu...
Nawet gdyby same porty GPIO się wyrobiły, to nie wyrobi się cała reszta. Skoro chcesz wykonywać odczyt z częstotliwością 40MHz, to masz mniej więcej 4 takty zegara na wykonanie wszystkiego. W super-extremalnym przypadku pętla która by to realizowała ma 4 rozkazy assemblera: 1. odczyt GPIO do rejestru 2. zapis z rejestru do RAM z postinkrementacją wskaźnika...
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...
Dokumentacja firmy ARM wie wszystko BusFault The BusFault fault handles memory related faults other than those handled by the MemManage fault for both instruction and data generated memory transactions. Typically these faults will arise from errors detected on the system buses. Implementations are permitted to report synchronous or asynchronous BusFaults...
Eee, czepiasz się. A te STM32 to nie mają czasem takiej przypadłości, że może szybkie na papierze to są, ale flash mają za wolny, żeby z niego się na pełnej prędkości wykonywać? Coś takiego kiedyś gdzieś (tzn. wiem gdzie i od kogo, ale nie powiem) słyszałem. Co do Xmeg, to obawiam się, że umoczyli nie zachowując starej metody programowania. Zamiast...
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...
Zegar peryferiów włączony?
Jeszcze tylko pytanie: po co mam wykonywać DSB i NOPy, jeśli mam w tym czasie do zrobienia coś, co i tak muszę zrobić, a co nie zależy od poprzedniej instrukcji, której efekt działania wystąpi po kilku cyklach? Przecież to kompletnie nie ma sensu. Podobnie na inicjowanie portów można wykorzystać np. czas potrzebny na uruchomienie oscylatora albo ustabilizowanie...
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...
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...
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...
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...
STM32 w ogóle nie działa? Nie wykonuje programu?
chodzi Ci o to zeby dotykajac okreslonej ikony na wyswietlaczu wykonywać jakas funkcje czy zadanie? jesli tak to trzeba podzielic sobie ekran na takie obszary ktore zajmuja ikony i sprawdzac gdzie nastapilo dotkniecie i porownac to z tymi obszarami, jesli dotknales w tym obszarze jakiejs ikony to sobie mozesz w przerwaniu czy jakkolwiek zrealizowac...
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....
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...
Witajcie Próbuję się w końcu nauczyć tego C i jednocześnie STM32, no ale... Deklaracja zmiennych: uint8_t Tim = 230; uint8_t Tim_Poprzedni = 230; uint8_t C = 0; uint8_t R = 0; Program (wielkie słowo :D): while (1) { HAL_Delay(1000); Tim++; R = Tim - Tim_Poprzedni; if (Tim - Tim_Poprzedni >= 10) { Tim_Poprzedni = Tim; C++; } } Póki Licznik Tim się nie...
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,...
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....
częsty wykonywać wykonywać płytka wykonywać formatka
piekarnik indesit kondensator szeroko honda civic termostat
ekspres naprawa żarówka szeregowo
Radmor 5412: Dioda stereo gaśnie po przełączeniu na gramofon Kod błędu 3556 w pojazdach MAN - przełącznik FSTB