Witaj :) Co do wgrania, jeżeli używasz System Workbench for STM32 to tam trzeba na projekcie w drzewku nacisnąć prawym myszy, wybrać "Debug As" -> "1 Ac6 STM32..." i po odpaleniu wybrać: Debug device: ST-Link-V2 Debug interface: SWD Tutaj masz obrazki: http://forbot.pl/blog/artykuly/programow...
Z tego co mi się wydaje przed odczytaniem wartości z licznika należałoby sprawdzić flagi które mówią o tym czy w liczniku cokolwiek sensownego się znajduje... 4\/3!!
Twoje obliczenia dalej są dalekie od optymalnych... Można to zrobić o wiele prościej: sekundy = licznik % 60; licznik /= 60; minuty = licznik % 60; licznik /= 60; godziny = licznik % 24; licznik /= 24; Dopiero od tego momentu robi się nieprzyjemnie, bo trzeba myśleć o miesiącach, dniach, latach przestępnych itp. chyba że zadowala Cię znajdująca się...
1. Przeczytaj dokładnie w manualu co robi ten bit. Kilka stron wcześniej masz obrazki które doskonale pokazują po co on jest. On tylko włącza bądź wyłącza buforowanie, a nie przeładowywanie czegokolwiek. 2. Rejestr ten w Twoim przypadku nie ma wpływu na częstotliwość, bo jego wartość ustawiona jest po prostu na połowę okresu timera, równie dobrze mogłaby...
Konfiguracja timera1. Przepełnia się co 25µs i zlicza w dół: [syntax=cpp] //Prescaler fclk = 24MHz/24 = 1MHz TIM1->PSC = 0x18; //Zliczanie od 25(dec) = 25us TIM1->CNT = 0x19; //Tryb zliczania w dol i wlaczenie licznika TIM1->CR1 = (TIM_CR1_DIR | TIM_CR1_CEN); [/syntax] Sporo w manualu rejestrów ale chyba wystarczą tylko te. Proszę o sprawdzenie....
Używam dużo enkoderów z sprzętowym licznikiem w STM32 i jakoś nigdy nic nie przeskakiwało. Nie trzeba żadnego filtrowania ani kodu, tylko konfiguracja licznika i gotowe.
Jedyną słuszną metodą jest zrobienie maszyny stanów na timerze. Najprościej będzie Ci odpalić SysTicka np na 1 ms i do tego podpiąć licznik.
Na bazie jednego z przykładów od STM zrobiłem transfer DMA z urządzenia zewnętrznego i drugi układ z transferem do urządzenia zewnętrznego. W każdym przypadku miałem zewnętrzny sygnał taktujący (zegar) danych równoległych w takt którego dane są wysyłane/odbierane. W przykładzie był do tego zaprzęgnięty któryś timer, ale nie pracował jako licznik tylko...
Witam, Jesli korzystasz z MPLABX, to opis wszystkich pragma config jest w...helpie :-) Help>c32 toolchain>C32 configuration settings.... Tez to niedawno przerabiałem :-))) Sporo informacji mozna wyciagnać z forum Microchipa - tylko kwestia zadania odp. pytania. Jak dla mnie to wlasnie PIC32 jest przyjazniejszy dla uzytkownika niz np. STM32 (własnie...
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...
Czyli w poniższym artykule są błędy? [url=link]https://forbot.pl/blog/kurs-st... Jest tam wzór: INT_FREQ = TIM_CLK/(ARR+1)(PSC+1)(CKD+1) Tak jest TIM_CLOCKDIVISION_DIV w CubeMX zdefiniowany:[syntax=c]#define TIM_CLOCKDIVISION_DIV1 0x00000000U #define TIM_CLOCKDIVISION_DIV2 (TIM_CR1_CKD_0) #define TIM_CLOCKDIVISION_DIV4...
Wygląda na to że sie uszkodził port E na innych wszystko działa. Stm32 to delikatne procesory, trzeba uważać z prądami na wejściach wyjściach. Atmele to czołgi przy nich. Temat zamykam
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
-> BlueDraco Ja to rozwiązałem jako prostą funkcję w postaci FSM, z static 'krokiem' i zmiennymi pomoczniczymi, typu 2 liczniki i CRC... Możesz zaprezentować to rozwiązanie? Ilość przyjętej wiedzy jest tak duża, że powoli się gubię w tym...
Napisz co ile ma być zgłoszone przerwanie i jak masz skonfigurowany zegar. A poza tym po wejściu do przerwania musisz skasować bit zgłoszenia przerwania TIMx->SR &= ~(1<<0); Spróbuj może takiej konfiguracji: TIM6->PSC=0xFA00;//1ms,64MHz TIM6->ARR=10;// int co 10ms TIM6->DIER=1; TIM6->CR1=0x1;
Nie znam nowych avrów, ten kod przypomina mi STM32, natomiast w starych była globalna flaga uruchomienia przerwań, sprawdzałeś czy tutaj takiej nie potrzeba? I przez analogię do STM, czy po zmianach częstotliwości zegara, nie trzeba poczekać ileś cykli aż się ustabilizuje? Jak tam prosty przykład? No i przeniósłbym zliczanie minut do przerwania, u siebie...
http://obrazki.elektroda.pl/9377221800_1... W dziale mikrokontrolery ARM znajdziecie bezpłatny (do osobistego użytku edukacyjnego) poradnik STM32 przygotowany przez szczywronek . Materiał dostępny jest w temacie: techekspert: Do kogo kierowany jest poradnik, jakie podstawy powinien mieć opanowane czytelnik? Czy znajomość określonej...
W międzyczasie "trochę" dałem sobie radę i to nawet przy użyciu funkcji NVIC_EnableIRQ. Rebuild target 'TEST' assembling STM32F10x.s... compiling main.c... src\main.c(81): warning: #1207-D: attribute "interrupt" ignored linking... Program Size: Code=744 RO-data=268 RW-data=4 ZI-data=612 FromELF: creating hex file... ".\Output\Program.axf" - 0 Error(s),...
Witam, Bawię się zestawem ZL27ARM i robię ćwiczenia z książki "STM32. Aplikacje i ćwiczenia w języku C" Jestem przy ćwiczeniu 18 i mam problem z DMA (pierwszy raz mam styczność z DMA). Zgodnie z przykładem wypełnienie PWM powinno zmieniać się od 0 do 100%. U mnie jest cały czas 50%. Dane z tablicy bufor_PWM nie są przekazywane do TIM1->CCR1 http://obrazki.elektroda.pl/9548353800_1...
Czy możesz mi powiedzieć, STM32 na wejściu dopuszcza sygnały maksymalne 3,3 V między szczytowe czy wartości skuteczne? Przykładowo dla STM32F407 i płytki Discovery zakres (full scale) to 0...3 V. Stąd po przesunięciu poziomu można podać właśnie 3 Vpp (międzyszczytowo). Dla innych STM32 to może być 0...3,3 V i wtedy można podać 3,3 Vpp. Czy możesz w...
Witam, próbuję skonfigurować licznik TIM2 w STM32L152RE, aby zliczał impulsy z pinu w trybie alternatywnym AF1 na PA0 i generował przerwanie po zliczeniu 10. Stan wysoki na linii w przerwaniu od SysTick. Niestety, TIM2 po zliczeniu impulsów nie generuje przerwania i nie ma żadnej reakcji od niego. Czy ktoś spotkał się z takim problemem? Funkcje do obsługi...
Witam Testowałem wczoraj moduł WIZ550io (spi) Max transmisję jaką uzyskałem w TCP to (wysłanie z modułu do PC) 730 Kbajtów/s (czyli nie całe 6Mbit ) czystych danych bez ramek IP. Moduł ma max 8 socketów TX i tyle samo RX , jeśli ktoś chce używać DNS i DHCP to zostanie tylko 6 wolnych. Nie ma się co łudzić przez SPI można obsłużyć (równocześnie) tylko...
Co do ustawiania w tryb capture to chyba nie ustawiam. Funkcja TIM_SetCompare1 ustawia po prostu rejestr CCR1 a wg manuala "CCR1[15:0]: Capture/Compare 1 value If channel CC1 is configured as output: CCR1 is the value to be loaded in the actual capture/compare 1 register (preload value). It is loaded permanently if the preload feature is not selected...
Witam, Mam problem z konfiguracją licznika do pomiaru czasu trwania sygnału na wejściu PA1. Generalnie chcę to rozwiązać w następujący sposób: w momencie wykrycia zbocza narastającego lub opadającego wywołuję przerwanie EXTI1. W obsłudze przerwania EXTI1_IRQHandler, sprawdzam stan portu PA1 jeśli jest stan wysoki to chcę uruchamiam licznik, który zmierzy...
Witam Opracowałem prosty program, żeby nauczyć się eliminować programowo drgania styków. Idea jest taka, że po starcie wyświetla się napis „Test0 „ po naciśnięciu przycisku „Test1” i „Test2”. Wykorzystałem rozwiązanie z przykładu 9.6 z książki K. Paprockiego, sam przykład po uruchomieniu działa prawidłowo, czyli zlicza...
(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...
Witam ponownie tym razem próbuję uruchomić przerwanie od TIM7 w mikro STM32 F303VC6 na płytce Discovery F3. Napisałem konfiguracje NVIC i TIM7 po czym uruchomiłem całość i owszem to co jest w funkcji obsługi przerwania jest wykonywane ale mam wrażenie, że pełną częstotliwością a nie co 1 sekundę tj ustawiłem. Prosiłbym o jakieś wskazówki bo pierwszy...
Przeczytaj jeszcze raz mój post. Za maksymalną wartość licznika (counter, CNT) odpowiada ARR (period). Jeśli przedtem miałeś 0 to counter zawsze będzie wynosił 0, teraz ustawiłeś 99 więc maksymalnie osiąga 99.
W tym momencie wypłynęło mi coś zupełnie innego. Sprawa dotyka USART i modułu BTM222 (kamodBTM222). Nie mam pojęcia, dlaczego nie mogę wykonać tak prostej czynności, jak zmiana nazwy komendą ATN. Korzystam z przykładu zamieszczonego na http://www.mikrokontroler.pl/content/blu... W tym momencie zrezygnowałem z przerwań...
Witam, próbuje sterować diodą RGB podłączoną do Nucleo l053r8. Konfiguracja portów została ustawiona tak jak i przerwania. Problem mam z ustawieniem pracy kanałów i wlaczeniem generowania sygnalu na wyjściu licznika. Czy poniższy kod wskazuje prace kanałów? niestety cały czas kompilator wywala mi błąd. TIM2->CCMR2, TIM_CCMR2_OC3M_PWM1 | TIM_CCMR2_OC3PE...
Witam Proszę o pomoc w rozwiązaniu problemu. robię projekt silnika prądu stałego z enkoderem na STM32 podpiąłem wyprowadzenia : -PA6 Enkoder CHA Wejście pływające (TIM3_CH1) -PA7 Enkoder CHB Wejście pływające (TIM3_CH2) i nie wiem jak ruszyć dalej by wyświetlać odczyt prędkości na wyświetlaczu LCD. Robie to na STM32f103VBT i Używam biblioteki ST Tyle...
Witam Probuje zmienic satan pinu z okresem 1Mhz. Niestety maksymalnie co uda mi sie wyciagnac to 526kHz przy preskaler=1 okres=1. Jak moge szybciej przemiatac pinem? zegar rozbujany do 72Mhz , pin ustawiony na 50MHz. reszta ustawien : [syntax=c] TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //Konfiguracja licznika TIM 1 //Ustawienia taktowania i trybu...
Zapytam tu o inną jeszcze sprawę, bo nie chcę dla tego drobiazgu zakładać nowego tematu. Muszę ustawić timeout ramki, jezeli po odpowiednim czasie odbiornik nie odpowie, to transmisja zostaje przerwana z flagą błędu. Chcę do tego użyć timera, np.TIM4. Uruchomiony bedzie w najprostszej konfiguracji zwykłego licznika, ładowanego przed rozpoczeciem transmisji....
E tam, nie jest wcale tak źle. Przy timerach akurat nie ma problemu, bo w manualu do każdego "typu" konfiguracji (licznik, PWM, input capture, ...) jest opis jak krok po kroku to skonfigurować. Zresztą - wystarczy napisać swoją bibliotekę, wtedy przynajmniej działa sensownie (rozmiar i prędkość) i wiadomo jak tego używać oraz co dokładnie robi. W przykładach...
Przyłącze się do tematu- nie łatwiej wykorzystać przerwanie od przepełnienia timera? Ponizej przyklad realizacji 32 bitowego licznika dla enkodera: // Inicjalizacja timera void TimEncInit(void) { TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12,TIM_ICPolarity_Fall...
Cześć Próbuję stworzyć komunikację z diodami WS2812 za pomocą licznika i DMA. Licznik ma mi generować PWM o wypełnieniu pobieranym z tablicy. Wypełnienie to ma być przesyłane przez DMA w momencie osiągnięcia wartości maksymalnej licznika. Sam licznik działa prawidłowo i generuje PWM wpisany na sztywno lecz transfer danych nie jest inicjowany przy osiągnięciu...
Jest to panel 32x16 z multiplexem 1 z 4 Wg mnie powinieneś spokojnie to zrobić całkowicie sprzętowo pod warunkiem, że masz swobodę w użyciu pinów oraz do dyspozycji odp. ilość kanałów DMA. 1. Podstawa to sygnał OE powinien być generowany jako np. fast PWM. Użyć któryś z kanałów licznika i uruchamiać licznik w trybie master. Sterując wypełnieniem tego...
Nie wiem w jaki sposób ten wzór mógłby cokolwiek zmieniać w kwestii zaokrągleń - wartość liczbowa USARTDIV odpowiada rzeczywistemu dzielnikowi pomnożonemu przez 16, przed całym wyrażeniem jest drugie "*16" więc całość pięknie się skraca i tyle... Jeśli ktoś chce zaokrąglać "prawidłowo" (a nie "w dół" jak to ma miejsce przy prostych obliczeniach na liczbach...
Witam, Mam problemy z poprawną pracą LCD na PCD8544. Jest to wersja na niebieskim PCB z Aliexp... https://obrazki.elektroda.pl/6243402900_... Fragment kodu:[syntax=c]system_init(); // reset LCD //konfiguracja LCD LCD_DC=0; // 0-przesyłanie komend SPI_cmd(0x21);// rozszerzone rozkazy LCD. SPI_cmd(0xC5);// ustawienie LCD Vop (Kontrast). SPI_cmd(0x06);//...
Napisałem delay oparty o timer konfiguracja TIM1: void TimerConfig() { RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_ClockDivision=... TIM_TimeBaseStructure.TIM_CounterMode=TI... TIM_TimeBaseStructure.TIM_Period=72; TIM_TimeBaseStructure.TIM_Prescaler=1;.....
Rejestr AFR odpowiada za wybór alternatywnej funkcji pinu, bo piny często mogą mieć wiele różnych alternatywnych funkcji - patrz post #17. Jak widać na zdjęciu dla PA8 alternatywna funkcja związana z licznikiem ma nr 1 (AF01). Z racji, że każdy pin potrzebuje aż 4 bitów do konfiguracji AF (16 różnych funkcji AF) to w jednym 32 bitowym rejestrze można...
Witam, mam problem z obsługą timera w STM32f103ZET6 na płycie ewaluacyjnej HY RedBul v3.0. Problem polega na opóźnionym zapłonie jednej z funkcji. Realizuje to na przykładzie samozamykającej się bramy po 15 sekundach, tak aby nie zatrzymać całego programu. Generalnie udało mi się skonfigurować przerwania od TIM1, ale timer liczy cały czas, czyli jeżeli...
Witam, Jestem początkujący w STM32 i w ogóle w Armach więc proszę o pomoc. Zmagam się z problemem uruchomienia trybu enkodera na STM32. Działanie tego powinno wyglądać następująco: Kręcę enkoderem w prawo bądź w lewo - ulega zmianie licznik timera8 co można zaobserwować pod TIM8->CR1 lub jak kto woli cośtam = TIM_GetCounter(TIM8); Mój kod inicjalizacji...
Witam, mam problem z poprawną konfiguracją modułu Bluetooth. Chodzi o to, że na przetwornik ADC wyzwalany timer1 podaje sygnał z GPIOB i chcę próbkować go wg ustawień timera z częstotliwością co najmniej 500Hz. Dane pobierane są z rejestru ADC przez DMA do zadeklarowanego wcześniej buforADC (unsigned short int buforADC buforTx (unsigned char buforTx[4]={0};)...
Witam Mam następującą konfiguracje : https://obrazki.elektroda.pl/9301426500_... Dla Timera2 jest APB1 i jak widać jest ustawiony na 84MHz zatem TIM2 ustawiam tak : https://obrazki.elektroda.pl/8953606600_... Ustawienie ma służyć dla funkcji opóźnienia w µs z krokiem co 1µs. Realizowane jest to w następujący...
Napisałem program liczący wariancję z obu tablic, dodatkowo skonfigurowałem Timer2 do pracy w trubie PWM o częstotliwości 1Hz z wypełnieniem 10%. Podałem ten sygnał na mój przetwornik A/C. Przetwornik próbkuje sygnał i liczy wariancję z obu tablic. Po wykryciu że wariancja jest bardzo duża zmienia stan diody LED PC9. Druga dioda jest połączona do wyjścia...
Mam oto Evoluation Kit od Nordica z układem nRF51422. Po wykonaniu wszystkiego co jest opisane w guide (upload najpierw FW ze stosem, a potem konfiguracja adresów Keila). Niestety gdy wywołuję funkcję (projekt z example'a S310) sd_softdevice_enable(..) program nie przeskakuje te funkcji jednak powoduje ona zwiększenia licznika programu od 0 do adresu...
Zrobiłem teraz oczekiwanie na timerze 6 tą przerwę (1 sek) ale nic nie pomaga: Dodano po 38 Porównałem rejestry CR przed wywołaniem kalibracji w moim i przykładowym programie. Różnica polega na tym, że u mnie włączony jest bit ADstart a w przykładzie jest wyłączony. Skąd się bierze ta różnica?
Masz jeden licznik, którego zawartość jest porównywana z 2 rejestrami. Niezależnie od tego co masz ustawione w rejestrach porównujących, licznik wykonuje jeden cykl w jednostce czasu. W jaki sposób dla statycznych wartości rejestrów porównujących mógłbyś uzyskać różną częstotliwość, czyli wielokrotne porównanie na jednym kanale i tylko pojedyncze na...
witam, mam podobny problem, nie wiem co robię źle, chcę zapalić diodę podłączoną do PB0 za pomocą przerwania od przycisku podłączonego do PC7 lub 8. po wgraniu kodu przerwanie od SYSTICK ładnie działa, zapala i gasi na zmianę diodę na PB1, natomiast dioda na PB0 swieci się cały czas i nie ma żadnej reakcji na naciskanie przycisku.... poniżej kod.
Wydaje mi się, że najłatwiej będzie rozwiązać to w obsłudze przerwania jednego z timerów. I przychodzą mi do głowy dwie możliwości: 1. Zmienianie parametrów pracy timera po każdym "trybie" przebiegu jaki ma być wygenerowany na wyjściu. Tj. przeładowywanie liczby do jakiej licznik powinien odliczyć zanim wygeneruje przerwanie. 2. Ustawienie licznika...
dea jest taka, że należy skonfigurować Timer1 na FastPWM z rejestrem ICR1 jako Top (czyli licznik będzie liczył do wartości tego rejestru). Należy tak dobrać preskaler i wartość ICR1 by licznik przekręcał się co 20ms a więc np. preskaler 1024 i ICR1 15625 (a raczej 15624 bo licznik liczy od zera). Przy tych ustawieniach otrzymujemy granulację 1,3 µs/tick,...
Nie powinno zatrzymywać się na wartości AAR tylko liczyć dalej (przekręcić się). Timer musi być zle skonfigurowany. Poniższy kod na pewno działa :) // konfiguracja timera TIM_DeInit(TIM2); //Konfiguracja timera do zliczania impulsow z enkodera TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI1,TIM_ICPolarity_Falli...
Witam, Wklejam działający kod. Sugeruję zerować licznik a nie konfigurować go od nowa w całości, lepiej zrobić to wcześniej, a zerowanie można osobno wykorzystywać gdzieś w kodzie później. Abstrahując od bibliotek których nie ogarniam: [syntax=c]while((RTC->CRL & 0x8) == 0); //Czekam aż rejestry RTC_CNT, RTC_ALR lub RTC_PRL będą zsynchronizowane....
Funkcja delay ma posłużyć tylko do posprawdzania i zapoznania sie z środowiskiem wiec jest jaka jest (prymitywna). Nie jestem aż tak biegły w programowaniu wiec symulator pod avr przydawał mi się bardzo często. Tutaj mam debuger i chciałbym go używać ale bez jakiegoś licznika jego użyteczność dla mnie spada. Dziwi mnie tez ze ta funkcja tak prosta...
He, dziękuję za sprostowanie - jednak dwa miesiące przerwy w programowaniu i mi się myli :). Tak - wkleiłem te niepotrzebne linie gdyż są one z komentarzem który przynajmniej mi pomaga zrozumieć co tam się dzieje w tych komórkach rejestrów, ale zgadzam się, że również może zaciemniać ogół - i to bardzo :). Freddie napisał dokładnie i krótko, to co chcę...
Ale taki Z-80 zwykle miał podpięte dużo więcej RAMu, a tutaj mamy 2019 rok i nadal 2kB... Jak już budować coś takiego to na STM32. Są w podobnych cenach a wymieniać ich zalety na AVRami można w nieskończoność... 45$ za AVRa i to nawet nie XMEGA... Śmiech na sali... Ostatnio popularne są płytki z STM32 zwane "Blue Pill". 2$ na ali (wysyłka darmowa),...
Od kilku, lub nawet kilkunastu dni próbuję uruchomić moduł Ethernet dp8388 (ZL3ETH) i niestety nie udaje mi się ta sztuka. Doszedłem do etapu w którym wysyłam z komputera ping (tylko po to aby został przesłany jakiś pakiet) i podczas debugowania podglądam rejestry i zauważyłem że w rejestrach: Ethernet MMC received frames with alignment error counter...
Jest to proste korzystasz z przerwań jakie generuje timer0 podobnie jak to opisał kolega z innego tematu tego fora w bascom napisał '************* Konfiguracja uC ***************** '***************************************... $regfile = "attiny2313.dat" $crystal = 16000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111...
Witam. Mam problem z komunikacją przez SPI z BMA180. Chciałbym na razie tylko odebrać ID czujnika czyli wartość 3 spod adresu 0x00. Żeby odczytać cokolwiek trzeba przejść w tryb READ MODE czyli na adresie zrobić operację adres |= 0x80 (MSB musi być równy 1). Ja tą operację na adresie zrobiłem ręcznie i już wysyłam "gotowy" adres, jest to u mnie zmienna...
STM32CubeIde STM32L552CCT6 Timer2 w trybie encoder mode Konfiguracja Timera [syntax=c] static void MX_TIM2_Init(void) { /* USER CODE BEGIN TIM2_Init 0 */ /* USER CODE END TIM2_Init 0 */ TIM_Encoder_InitTypeDef sConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; /* USER CODE BEGIN TIM2_Init 1 */ /* USER CODE END TIM2_Init 1 */ htim2.Instance...
0. Czy masz włączone zegary dla GPIOB, GPIOD oraz TIM4? W tych kilku liniach tego nie widać. 1. Konfiguracja GPIO nadal w oparciu o magic numbers. W dodatku, AF ma 4 bity, a Ty ustawiasz tylko 1. To nie jest dobra praktyka - raz ustawione, nigdy nie będą skasowane. 2. Włączasz licznik, ale nie ustawiłeś bitu OPM, więc tryb pojedynczego impulsu na pewno...
Na wejściu częstościomierza jest układ formowania impulsu/wzmacniacz i dzielnik przez 16. Sygnał po podzieleniu jest podawany na wejście zliczające jednego z timerów w STM32 i co sekundę pobierana jest liczba zliczonych impulsów, następnie licznik jest zerowany. STM32 jest taktowany zwykłym kwarcem więc na stratę informacji związaną z obecnością dzielnika...
FPU jest włączone (Opcja "FPU Hard" w Configuration -> Compile -> Options -> FPU). Jeśli wybiorę "Not use FPU" to mi się chyba licznik "przekręca" - jest różnica w czasach. W linku, który podałem gość używał opcji "FPU Soft" ale dlatego, że biblioteka PDM mu nie działała. Co do zegarów to wydaje mi się być ok. Czasy na TIM1, który wyzwala ADC...
przelatuję przez te przypisania zanim ADC wykona pierwszy pomiar Na to wygląda. Jeszcze możesz wyrzucić włączanie przerwania w NVICu. Ręki sobie nie dam uciąć, ale wydaje mi się, że konfiguracja rejestru TIMx_CCER też nie jest potrzebna. A! I "rozsuń" włączenie zegara dla TIM4 i zapis do rejestrów tego licznika - żeby te operacje nie następowały tuż...
Witam. Na początek pochwalę się kodem : Tak wygląda main: [syntax=c]int main(void) { /* This sample code shows how to use STM32F4xx GPIO HAL API to toggle PG13 IOs (connected to LED3 on STM32F429i-Discovery board) in an infinite loop. To proceed, 3 steps are required: */ /* STM32F4xx HAL library initialization: - Configure the Flash prefetch, instruction...
Witam, Chcę użyć DMA do przesyłania danych z tablicy do rejestru CCR1->TIM1. Kanał TIM1->CCR1 ma zostać użyty do sterowania sygnałem PWM diodą LED. Z dokumentacji wynika, że do obsługi TIM1_UP muszę użyć DM2 Stream 5. Niestety nie mogę skonfigurować DMA2. Najpierw stworzyłem kod wykorzystująć SPL [syntax=c]void DMA_Config(void){ DMA_InitTypeDef DMA_InitStruct;...
Ok no to zaczynamy na początku (po konfiguracji itp.) powinieneś mieć coś takiego: [syntax=c] if (BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5) /* Sprawdzamy czy trzeba ustawić zegarek */ { /* Zawartosć licznika RTC nie jest prawidłowa, należy ustawić zegar */ /* Konfiguracja oscylatora, preskalera itp. */ RTC_Configuration(); /* Funkcja w której ustawiasz...
A dokładniej rejestr BSRR... I szkoda, że takie rozwiązanie istnieje tylko w STM32. BTW, w LPC11xx istnieje sporo innych paskudztw: - timery ktore mają 4 match'e, ale nie ma oddzielnego rejestru 'końca' (przewijającego licznik) - timer w trybie counter nie obsługuje preskalera... - nie istnieje przerwanie przepełnienia timera, i trzeba wykorzystywać...
To akurat jest dla mnie w miarę oczywiste, bo podobny program robiłem już na AVR. Natomiast z STM32 nie chciałem się zagłębiać właśnie w konfiguracje zegarów - stąd pytanie o jakiś gotowy projekt, który można by tylko dostroić do potrzeb. Wygląda na to, że jednak będzie trzeba napisać samemu od zera. Przeglądałem opis procesora z F4 i doszedłem do wniosku,...
Dzień dobry, zmagam się już z tym problemem od kilku dobrych popołudni, a zatem chcę napisać kod, który będzie uruchamiał tryb PWM korzystając z timera1 na dowolnym pinie w mikrokontrolerze STM32F303RE i nijak mi nie chce to zadziałać. Próbowałem już wielu rzeczy i nie wiem, co jest nie tak (zrobiłem to tak, jak jest w dokumentacji napisane, aby zrobić)....
Witam Chcę zrobić regulator obrotów silnika dc. Stopień mocy mam odseparowany optoizolatorami i mam wyprowadzone następujące sygnały : sterowanie każdym z osobna tranzystorem w mostku H i wyjście nadmiarowo-prądowe. Więc zaplanowałem, że wyjścia OC1, OC1N, OC2 i OC2N z timera 1 będą sterować poszczególnymi tranzystorami z uwzględnieniem czasu martwego....
Próbowałem, ale coś robiłem źle lub o czymś nie wiem. Efekt miałem taki, że nic nie świeciło. [code][syntax=c] RCC_APB1PeriphClockCmd(RCC_APB1Periph_TI... ENABLE); void init_timer() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TI... ENABLE); // Konfiguracja podstawy czasu....
Witajcie, Potrzebuję pomocy przy STM32F429. Moje pierwsze podejście do rozwiązania docelowego zadania było oparte o biblioteki HAL i była to moja pierwsza styczność z STM. Pomysł fajnie się spisywał, ale później miałem jakąś totalną masakrę, żeby zaimplementować jakiekolwiek klasy. Wyszło tak, że przerzuciłem się na rejestry i nie wygląda to najgorzej....
Nie mogę rozwiązać problemu maksymalnej częstotliwości wyzwalania przerwania od timera (Update). Timer nie wyzwala przerwania z częstotliwością większą niż ok. 400kHz. Testuje zwykłą funkcjonalność wyzwalania przerwania w momencie zakończenia zliczania do góry lub na dół (update), bez PWM. Wszystkie próby prowadzę na jednej płycie (oryginalnej). Testowałem...
Uprościłem znacząco zadanie tak by wyeliminować wpływ komunikacji na wartość przepisywaną do zmiennych, które służą do aktualizacji rejestrów CC. Otóż na chwilę obecną program "mruga" dwiema diodami, po naciśnięciu przycisku chciałbym zmienić wartość zmiennych. Jak się okazuje mogę zmienić w ten sposób tylko częstotliwość kanału pierwszego, zatem tak...
Sam main.c raczej nic nie da ale proszę. /** ****************************************... * File Name : main.c * Description : Main program body ****************************************... * This notice applies to any and all portions of this file * that are not between comment...
To mój pierwszy post na tym forum, więc witam wszystkich użytkowników. Od jakiegoś tygodnia bawię się ARMami, używam płytki ZL31ARM z prockiem STM32F103RBT6. Po kilku próbach zdałem sobie sprawę, że standardowa biblioteka ST to jakieś nieporozumienie i zacząłem pisać programy po prostu operując na rejestrach. Zatrzymałem się na pewnym problemie częstotliwością...
Cześć, czy ktokolwiek na tej planecie próbował użyć opcji remapowania enkodera z TIM15 na TIM2/TIM3/TIM4 w STM32? W datasheet opisane jest to tak (rejestr SYSCFG->CFGR1) https://obrazki.elektroda.pl/4378207500_... TIM15 nie ma bloku enkoderowego, ale według mojego rozumienia ustawiając odpowiednio bity ENCODER_MODE w tym rejestrze mogę...
Konfiguracja zegarów w STM32H7 nie jest wcale taka trudna. Warto zapoznać się z dokumentacją, a pisanie w stylu: Niestety, nie znalazłem nic na ich temat w Internecie a wgryzać w note katalogową zwyczajnie mi się nie chce. to tak jakby lenistwo i roszczeniowa postawa, która stoi w sprzeczności z zasadami udzielania pomocy na forum. Kolega bardzo lubi...
Tak więc przepraszam za chaotyczny kod programu, ale był to na szybko wyjęty fragment. Poniżej program, napisany w związku z moim pytaniem, które poprawnie brzmi: Jak wprowadzić zmianę ARR, w czasie działania programu, zapis nowej wartości odbywał się po wyzwoleniu timera. [syntax=c] uint32_t buf_ARR, xARRx, s=1, j=1, pozycja=0; __IO uint8_t f_zapis;...
Mógłby ktoś rzucić okiem i sprawdzić czy konfiguracja timera jest poprawna? [syntax=c]void TIM_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; // TIM_OCInitTypeDef TIM_OCInitStructure; //Konfiguracja licznika 1 //Ustawienia taktowania i trybu pracy licznika 1 TIM_TimeBaseStructure.TIM_Prescaler = 7200-1; //taktowanie licznka fclk = 72MHz/7200...
Jechałem debugerem i nie wchodziło w SysTick_Handler... Kod poniżej: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 72000000...
Witaj. Także mam falownik ESB 6kW-24V. Sprawa jest generalnie prosta, tylko trzeba rozpracować poszczególne polecenia, a i to niekoniecznie, by pobrać dane z falownika o statusie i bieżącej konfiguracji. Ot wystarczy wysłać sekwencję bajtów i potem obrabiać odpowiedź. Na potrzeby pobierania statystyk - to wystarczy na dowolnej platformie (AVR/STM32/ARM/Android/PC...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Zaczynam powoli pisać taką najprostszą obsługę ADC. Chciałbym dokonywać konwersji w pętli while w main. Generalnie jest może jakiś algorytm postępowania w trakcie inicjalizacji przetwornika? Widzę że są pewne różnice odnośnie AVR i nie jestem tego w stanie zrobić przez całkowitą analogię... Przedstawię to co zrobiłem: main: [syntax=c] #include <stdint.h>...
Bardzo serdecznie dziękuję wszystkim Kolegom za zaangażowanie i okazaną pomoc. Szczególnie mocno zaś chcę podziękować Koledze IS, który poświęcił mnóstwo czasu żeby pomóc mi na PW. Stos udało mi się odpalić. Zasadniczo wszystko ruszyło. Jednak pojawił się niepokojący objaw. Zrobiłem sobie stronę, w której umieszczona jest ramka iframe dynamicznie odświeżana...
Witam, mam problem z obsługą popularnego wyświetlacza ze sterownikiem HD44780. Nie działa on zgodnie z moimi oczekiwaniami, po wyłączeniu i włączeniu zasilania albo nic nie wyświetla albo wyświetla zadany tekst gubiąc przy okazji litery, tutaj podam przykład: do wyświetlenia napis "Test", na wyświetlaczu: "Tst" lub "TWt". Wydaje mi się że problemem...
Aktualnie najważniejsze pliki programu wyglądają następująco: main.c: [syntax=c]#include "main.h" //definicje stalych #define LINENUM 0x15 #define FONTSIZE Font12x12 #define LED1 GPIO_Pin_13 #define LED2 GPIO_Pin_14 #define PRZYCISK GPIO_Pin_0 //zmienne - definicje void Delay(__IO uint32_t time); extern __IO uint32_t TimmingDelay; unsigned short regVal;...
Problem dotyczy wykorzystania wejścia licznika w trybie Input Capture wraz z DMA. Celem jest pomiar częstotliwości sygnału i jego wypełnienia. Na samym początku dodam, że jest jedno ograniczenie, które związane jest z wykorzystaniem pojedynczego wejścia licznika. Oczywiście, można skonfigurować tryb PWM Input, ale niestety w tym przypadku będą wykorzystane...
To ja proponuję tak -> licznik liczący od zera w górę z częstotliwością dobraną tak aby uzyskać założony zakres pomiaru prędkości. Czujnik podłączony do wejścia "capture". Blok capture skonfigurowany tak, aby po odebraniu sygnału z czujnika następowało przepisanie wartości rejestru licznika do jednego z rejestrów CCR. Na dokładkę włączony "Slave Mode"...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
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...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
Ok, coś jest nie tak. Przede wszystkim systick działa na trybie optymalizacji O1 i O2. Bez zmiany kodu. Na O0 od razu jest hard fault. Ale nie występuje na żadnej linijce kodu. Nie wchodzi do przerwania i wywala od razu błąd. EDIT: Działa w momencie kiedy wywaliłem inicjalizacje: N VIC_Init(&NVIC_InitStructure); A w to miejsce dałem: NVIC->ISER...
https://obrazki.elektroda.pl/9740534800_... Wczoraj uruchomiłem swoją pierwszą stację bazową w systemie LoRa WAN. Najpierw parę słów o budowie samego BTS'a. Sercem całości jest Raspberry Pi 3 wraz z modułem radiowym RAK831 Chińskiej firmy RAK opartym o SX1301 -taki miniaturowy klon słynnego iC880A. Do płytki łączącej Radio z Rasperry...
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...
Witam, Realizuję pracę inżynierską na zestawie uruchomieniowym ZL27ARM z mikrokontrolerem STM32. Praca jest w zasadzie gotowa, ale niestety nie działa do końca poprawnie. Praca jest tworzona głównie w oparciu o książkę STM32 Aplikacje i ćwiczenia w języku C. Środowiskiem programistycznym wykorzystywanym w pracy jest Keil uVision 5. W pracy wykorzystane...
Witam, jestem początkującym w dziedzinie programowania STM32. Posiadam zestaw STM32 Discovery F407. Po dwóch dniach walki udało mi się skonfigurować Tim8 do pracy z enkoderem obrotowym. Jest to enkoder mechaniczny posiadający 32 pozycje na obrót. Oto mój kod: [syntax=c] void Encoderinit(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI...
Witam, Przerabiam książkę STM32 Aplikacje i ćwiczenia w języku C Pana Marka Galewskiego. Dotarłem do ćwiczenia 12c, w którym do sterowania diodami mają być użyte TIM1 oraz TIM2. TIM1 może generować przerwanie ogólne oraz przerwanie z kanału Compare. Dzięki temu łatwo możemy sterować dwoma diodami. Natomiast TIM2 może generować tylko przerwanie ogólne...
stm32 licznika konfiguracja stm32 konfiguracja licznika
aquamatic candy hasło compal płytka sterownika zgrzewarki
piekarnik samsung piekarnik samsung schemat
Brak polskich znaków w SMS na telefonie Motorola - jak to naprawić? Lokalizacja przewodu prawej kurtyny SRS w Mitsubishi Colt Z30