180MHz, uzyskujesz ~400kHz przerwania, czyli wychodzi, że przerwanie trwa około 450 cykli zegara jeśli jest tak jak podejrzewa BlueDraco (ja podejrzewam to samo). Przy użyciu bzdurnych funkcji z HALa spokojnie tyle właśnie może być. Gdybyś się ich pozbył, to można skrócić ten czas około 10x.
Dzień dobry. Chce zrobić program który odczytuje ustawienie potencjometru z ADC i w zależności od jego wartości za pomocą timera TIM2 generuje przebieg o zmiennej częstotliwości. Załączam plik main.c. Kiedy wykomentuje linijkę TIM2->ARR = val; (linia 107) wszystko działa ok. Mryganie co sekunde. W innym wypadku (program jak w listingu, bez komentarza)...
Tak, jest możliwe skorzystanie z DMA. Kolejne wartości jasności zapisujesz w tablicy, potem konfigurujesz DMA aby zawartość tablicy przesyłał do rejestru PWM i był wyzwalany z też sygnałem timera.
Ten przebieg trójkątny to będzie po prostu zawartość licznika Timera. Więc nie trzeba go jakoś specjalnie generować. On się sam wygeneruje po odpowiednim skonfigurowaniu Timera. Idąc dalej wygeneruje sinusa, którego będę porównywać z aktualną wartością tego timera i gdy owe wartości będą równe wtedy powinienem je wpisać jak wypełnienie PWM-a, dobrze...
Uruchomiłem tryb FMC w trybie pamięci SRAM 8 bit, działa dobrze. Oczywiście pominąłem linie adresu, nie są potrzebne. Za CLK robi linia NWE ( zapis) Za DE robi linia NE1 ( tylko zanegowana ) Dane RGB to linie D0...D7 Wymagany jest zegar dla CLK ok. 20MHz więc obsługa w jakimkolwiek timerze odpada. Dzięki za pomoc, zamykam temat.
Pomyśl, ile przerwań i w jakich odstępach czasu wygeneruje jedno naciśnięcie przycisku? Wiesz to? Bo ja nie wiem, wiem tylko, że na ogół będzie ich więcej niż jedno. W jakim celu miałbyś czekać w obsłudze tego przerwania? przykład obsługi przycisku w przerwaniu timera masz tu: http://mikrokontrolery.blogspot.com/2011...
Witam, zabieram się za sterowanie silnikiem krokowym i chciałbym ustawić dwa timery w trybie master-slave. Jeden (TIM8) ma generować sygnał PWM o zadanej częstotliwości, drugi (TIM2) ma zliczać impulsy i po przekroczeniu danej wartości zatrzymać PWM z timera TIM8. Według noty katalogowej (mój procesor to STM32F429ZIT6): https://obrazki.elektroda.pl/7822642500_...
Śmieszny jesteś. Nie jeden już tu poległ bo mu wszyscy wciskali wersje "naj" Jest to bzdura - po prostu nie ogarniali tematu i było bez znaczenia jaki procesor mają. Wskaż jakies istotne róznice pod względem trudności programowania na poziomie elementarnym: GPIO, I2C, SPI, DMA, Timery, ADC, DAC, CAN itp. Są znikome. Większość poległa pewnie na poziomie...
(at)Freddie Chopin podał mi bibliotekę stm32f407xx.h, ale u mnie w projekcie wszystkie są opisane w taki sposób: stm32f4xx.h. (brak 07). Nagłówek stm32f4xx.h "pod maską" tak naprawdę dołącza odpowiedni dla danego układu nagłówek - np. stm32f407xx.h, zależnie od tego co jest zdefiniowane globalnie w projekcie: #if defined(STM32F405xx) #include...
Cześć, Na inżyniera robię robota kroczącego na 12 serwomechanizmach, 4 nogi, taki pająk. Aby to ładnie zakodować chcę zrobić klasę serwo, klasę noga, klasę robot z odpowiednimi metodami aby kod był przejrzysty i jasny. Problem jest następujący: Klasa serwo ogółem działa, kompiluje się idealnie, aczkolwiek przy próbie użycia jakiejkolwiek zmiennej procek...
Jeżeli to cały kod, to nie zadziała;) Pozdrawiam Wojtek
Oba taski maja ten sam priorytet ? Spróbuj sprawdzić czy przerwanie od SysTiicka działa (breakpoint). Możesz tez spróbować wrzucić tutaj kod, który nie działa (okrojony najbardziej jak to możliwe). Powiem tak, na stm32f105 jeśli dobrze pamiętam to timer działa, a zmiana priorytetów nic nie dawała. Dzisiaj jednak pomęczyłem się z gołym projektem dla...
[url=http://stm32f4-discovery.com/2014/0... masz pokazaną zasadę działania 1wire z N DS18B20. Co prawda kod jest oparty na F4, jednak dużo różnic nie będzie w porównaniu z F1. Zawsze zamiast tworzenia swojego timera do delaya możesz skorzystać z SysTicka.
Przycisk mode to zwykły przycisk podpięty do masy. Więc do zrobienia tego zadania wystarczy, żebyś ogarnął sterowanie GPIO. PC13 (przycisk MODE) ustawiasz jako Input, PC8 (dioda) ustawiasz jako Output i piszesz obsługę przyciska. Jeśli korzystasz z HALA to odczyt stanu na pinie to HAL_GPIO_ReadPin(port, pin), a ustawianie stanu na pinie HAL_GPIO_WritePin(port,...
Czemu dziwne, do ogarnięcia przerwan w sam raz a używanie timera do sprawdzania stanu to używałem A do rejestru PR wpisać 0 czy 1?
Oczywiście to od DCMI ma wyższy priorytet niż to od DMA. Próbowałem też na równoważnych ale nic to nie zmienia. Najbardziej dziwi mnie fakt że występują przerwania mimo wcześniejszego kasowania flag. Tak jakby DMA działało mimo że już żadne żądania transferu się nie pojawiają (DCMI podczas trwania impulsu synchronizacji nie powinno niczego wysyłać)....
Generalnie przyrysowywanie okien w timerze jest to bardzo zła metoda. Przerysowywac należy wtedy kiedy zdarzy się coś co spowoduje konieczność takiego przerysowywania. Invalidate jest metodą asynchroniczną (przynajmniej w dużym c#) W dużym c# timery to oddzielne thready - trzeba stosować zasady komunikacji miedzy wątkowej (jak to robić to już temat...
nikt nie pomoże?
Witam, Zakupiłem zestaw uruchomieniowy z mikrokontrolerem STM32F429I-DISCO oraz ultradźwiękowy czujnik HC-SR04 (nie mogę wrzucić linku :/). Chciałem napisać prosty program, który zmierzy odległość i wyrzuci mi ją na wyświetlacz. Kiedyś uczyłem się C++ i napisałem proste aplikacje na konsolę. Tutaj zgodnie z tym co przeczytałem w instrukcjach dobrze...
Dzięki wszystkim za pomoc, na pewno był jeszcze błąd w kodzie który tu wkleiłem przy wyborze funkcji alternatywnej powinno być GPIOA -> AFR[0] |= (1<4); niestety to też nie pomogło, natomiast uruchomiłem ten sam kod na STM32F429ZIT6 i wszystko działa tak jak trzeba.
Witam, Po okiełznaniu GPIO i DAC na STM32, przyszła kolej na timery i PWM. Używajac procka STM32F429 napisałem taki oto program: [syntax=c] #include "stm32f4xx.h" #include "stm32f4xx_rcc.h" #include "stm32f4xx_gpio.h" #include "stm32f4xx_tim.h" void SwitchRCC_HSI(void) { // ustaw bit HSION -> włącz wewnĹ•trzny oscylator RCC->CR...
Witam, Opisany problem bierze się stąd, że podczas przesuwania palca po padzie, ten cały czas jest naciśnięty i nie zgłosi sekwencji zwolniony/naciśnięty. Zatem nie ma nowych przerwań. Wniosek: sygnał PENIRQ nadaje się tylko do stwierdzenia stanu naciśnięcia. Poniżej zamieszczam moją przykładową obsługę tego panela. U mnie jest to wątek RTOSa, ale może...
Na początek: // TIM1 -> GPIOD14/D11, do obliczen brac 168MHz, 500Hz, 2ms mam 427Hz, 2.34ms ! TIM1 -> PSC |= 5; TIM1 -> ARR |= 55999; Co tu robi suma logiczna? Czyżbyś chciał ustawić niektóre bity rejestru preskalera i okresu, nie ruszając pozostałych? Co taki zapis ma na celu? Dalej to samo przy zapisach rejestrów sterujących. Po co? Ustaw bit ARPE...
Konsola po czyszczeniu projektu: [syntax=xml]21:50:02 **** Build of configuration Debug for project STM32_project **** make all Building file: ../system/src/stm32f4-hal/stm32f4xx_hal.... Invoking: Cross ARM C Compiler arm-none-eabi-gcc -mcpu=cortex-m4 -mthumb -mfloat-abi=soft -Og -fmessage-length=0 -fsigned-char -ffunction-sections -fdata-sections -Wall...
3 us to 63 cykle - niby to wcale nie mało dla rdzenia Cortex. Wygeneruj impuls startu konwersji na timerze, w przerwaniu timera na koniec impulsu odpal transmisję, po zakończeniu transmisji z ADC wyzwól ponownie timer. Nie jestem pewny czy zwalnianie uC do 21 MHz to dobry pomysł. Sama transmisja też zajmie trochę czasu, potem obróbka odebranych danych...
Jak w temacie załączam kod coś pominąłem albo w tej konfiguracji to nie może działać, nie wiem czy ktoś przerabiał ten temat? przebieg pwm pojawia sie na wyjsciu gpiob pin 15 ale nie kopiuje tak jakby z memory do gpiob. [syntax=c] static void PortInit(void){ eb_init(); GPIO_InitTypeDef GPIO_InitStructure; //seperate port for enable pin and st pin RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP...
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
Dzieje się to po pięcu impulsach, a jedno zwarcie palcem generuje dowolną liczbę impulsów - typowo 2..3. Jeśli PA8 jest wejściem timera, to nie może być równocześnie wyjściem GPIO - przecież wyłączyłeś funkcję GPIO na PA8.
Witam! Mam problem przy generowaniu sygnału komplementarnego na timerze 1 w mikrokontrolerze STM32F427ZIT6 (płytka STM32F429I-DISCO) przy pomocy bibliotek HAL. Udało mi się wygenerować sygnał komplementarny ale nie udaje mi się skonfigurować deadtime-ów. [syntax=c] /** ****************************************... *...
Może więc warto by było napisać co zrobiłeś, że Ci zadziałało, w jakich konkretnych warunkach ten błąd wystąpi (np wersja Windows/Linux, wersja Ecplise) i pomóc innym? Sam walczyłem z Ecplipsem jak jeszcze nie był dla ARMów tak popularny, były z pluginami problemy ale trzeba było je zwalczyć np. zmienić wersje Eplipsa, zainstalować ponownie, poszukać...
A po co te dywagacje - po to masz timer aby wyzwalać w odpowiednich okresach czasu.
Z prostych wyliczeń wynika, że timer musi być taktowany co najmniej ok. 82 MHz. Więc pytanie brzmi w jaki sposób tak taktować timer?
Zdefiniowane w krzemie. To jest watchdog nie timer. Robi dokładnie to do czego jest przeznaczony. Jedyne co możesz zrobić to zweryfikować źródło resetu.
No to jak już masz projekt, to po prostu wywal z main() wszystko i sobie ten timer skonfiguruj. Przy okazji - na jakiej podstawie stwierdzasz, że kod nie działa? Oscyloskop? Analizator logiczny? Jakoś inaczej?
To ja jeszcze powtórzę to samo, co zawsze: Przerwania od zmiany stanu portu NIE służą do reagowania na przyciski, bo nie da się w ten sposób łatwo obsłużyć przycisku - i tak musisz uruchomić przerwanie timera, a jak już je uruchomisz - to nie potrzebujesz przerwania od przycisku.
Znalazłem przykład w internecie przerwania na timerze , załadowałem i też nie ruszyło. Obawiam się że już żadne przerwanie mi nie ruszy. Szkoda bo bawienie się tymi rejestrami Nie rozumiem podejścia ale czy HAL i nie HAL to i tak dojdzesz do innej ściany, a będzie ona dużo trudniejsza niż to
Pisałem wcześniej, że generalnie się da, ale nie bezpośrednio :) Da się w taki sposób: Szukasz w nocie, które DMA na którym kanale i źródle ma TIMx_Trig - to będzie nasz timer który wyzwala transfer. (Na F4 chyba tylko 4 timery mogą być takimi wyzwalaczami) 1 Bierzesz tenże kontroler i na odpowiednim kanale/źródle ustawiasz adresy peryferium (IDR),...
Witam. Posiadam sensor ultradźwięków US015, który jest podobny do HCSR04. Chciałbym go obsługiwać przy pomocy mikrokontrolera STM32F429. W internecie znalazłem kawałek kodu, odpowiedzialnego za jego obsługę. Do jego obsługi wykorzystywane są 2 timery - timer7 jest odpowiedzialny za generację impulsu inicjującego pomiar (TRIG) - 10uS, a drugi liczy czas...
Ewentualnie odpal timer z przerwaniem od przepełnienia i tam w przerwaniu wsadź zmienną która będzie zerowana w momencie naciśnięcia "start pomiar" i zwiększana co powiedzmy 1ms przez przerwanie (nie wiem jaką chcesz dokładność, możesz dać np. 0,1ms i masz większą precyzje). Potem jak naciśniesz "stop pomiar" to timer przestanie zwiększać tą zmienną...
Witam, Jako jeszcze niedoświadczony w programowaniu i całym tym mikroprocesorowym świecie chciałbym rozpocząć dyskusję z której mam nadzieję uda mi się coś wyciągnąć, czegoś się dowiedzieć. Mianowicie pierwsza sprawa to przeklęte delay'e. Czasami trzeba przeczekać na coś ileś tam czasu ale po co marnować go w delay? Jakie mamy alternatywy i jak z nich...
Witam w procku którym mam komunikacje po -SPI (DMA),(z W5500 Enet uzyskałem 6 MegaBitów ) -OneWire (rs232 DMA), -CAN, i drugi Rs232 DMA (ten o którym się pytam) do KNX Dodatkowo ma inerpreter Pawn, którym możesz sobie np dodać 3 Taski na Online których średniej wielkości program wykonuje się 300us na task... Treaz potraktuj go 200 tysiącami przerwań...
Wkleiłem projekt do Eclipse.... kompilacja Make.... 50sekund, tup... 22sekundy (i7 2,9GHz) Jak włączysz w opcjach projektu kompilację wielowątkową, to w make skompiluje się z podobną prędkością jak w tup. Prędkość tup można w Eclipse nieco poprawić - przynajmniej u mnie różnica była znaczna - https://groups.google.com/d/msg/tup-user...
Mam prosty program testujący podstawowe funkcje stm32f405. Za pomocą przerwania od timera chcę migać diodą. (Korzystam z bibliotek stm): Program w pliku main.c: [syntax=c] #include "STM32F4xx.h" void Config_GPIO() { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode...
https://obrazki.elektroda.pl/8115074100_... W związku z urlopem postanowiłem opisać wykonaną w ostatnim czasie konstrukcję. W zawodzie nauczyciela akademickiego jest to 36 dni roboczych plus w moim przypadku 26 dni zaległych z zeszłego roku. Jest to więc trochę czasu - za dużo. Wszystko zaczęło się od znalezienia tunera DVB-T Opticam...
http://obrazki.elektroda.pl/6093026600_1... Witam wszystkich chciałbym zaprezentować układ sterujący przekształtnikiem energoelektronicznym DC/AC (tzw. falownik), który zbudowałem w ramach swojej pracy magisterskiej. Układ przeznaczony jest do sterowania trójfazowym silnikiem indukcyjnym za pośrednictwem falownika. W pracy zaimplantowałem...
Cześć! Mam ostatnio mały problem. Próbuje uruchomić Timer 8 tak, aby zliczał z jak najmniejszym opóźnieniem za Tim1. Robię to według RefManuala (RM0090, p. 622): "Using one timer to start another timer", niestety oba Timery są kompletnie rozjechane. Przypuszczam, że problem leży w tym, że oba timery działają w trybie center-aligned - chociaż skonfigurowałem...
Program jest następujący: Mam strukture dla czujników a w niej tablice dla której zapisuje odczytane dane z danego czujnika: [syntax=c] typedef struct { // jakies inne zmienne volatile uint8_t dataToCalculate[6]; // do zapisu danych } czujnik; [/syntax] Tworzę 3 globalne zmienne 'czujnik' (używam 3 czujników): [syntax=c] czujnik Zyroskop = { ...}; czujnik...
Witam mam taki problem, otóż mój STM32F4 bardzo dziwnie się zachowuje. Mój program ma odczytywać z 3 różnych czujników przez I2C dane i przeliczać je. I2C zrealizowane jest na przerwaniach (z najwyższym priorytetem), dodatkowo używam timera 2, by odmierzał czas. Oto kod: [syntax=c]#include "stm32f4xx.h" #include "stm32f4xx_conf.h" #include <stdio.h>...
Witam, Od pewnego czasu przestawiłem się z AVR na STM32, zbudowałem sobie proste ramię robota na 5 serv + sterownik Maestro od pololu, wszystko ładnie śmiga. Tydzień temu kupiłem sobie takie Gamepad: http://botland.com.pl/joystick/2560-game... . Chciałem za pomocą tego pada sterować ramieniem. I już na 1 kroku...
Witam, Mam problem z timerem pracującym w trybie input pwm. Chcę zmierzyć współczynnik wypełnienia przebiegu prostokątnego. Ten tryb umożliwia pomiar zarówno częstotliwości jak i współczynnika wypełnienia. Jednak gdy uruchamiam układ współczynnik wypełniania równa się okresowi przebiegu. W rejestrach CCR1 i CCR2 są te same wartości. Mikrokontroler na...
Witam, Próbuje zrobić urządzenie, które w tym samym czasie będzie wstanie komunikować się z komputerem (USB HID DEVICE), jak i przyjmować komendy z klawiatury, bezpośrednio podpiętej do niego (USB HOST). STM32F407VG ma dwa kontrolery USB: - OTG_FS - wykorzystany do komunikacji z komputerem (tryb HID DEVICE) - OTG_HS - wykorzystany do obsługi klawiatury...
Witam, mam taki problem z stm32f407, otóż odbieram dane z różnych czujników przez magistralę I2C i wszystko działało bez problemu, ale potrzebuję również odmierzać czas w programie dlatego włączyłem timer i wygląda na to, że jak przychodzi przerwanie od timera w trakcie wysyłania danych po I2C. Samo przerwanie jest bardzo krótkie, także wydawało mi...
stm32f429 discovery sdram stm32f429 stm32f429 sdram
ipsec klient gramofon radziecki status projektor
magicolor 1600w suszarka bębnowa
Skutki uboczne przewymiarowanej pompy ciepła Mercedes A180 2019 - Dolna połowa tylnych świateł nie działa