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...
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ę...
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!!
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...
Ok, czyli to z ARR jest przepisywana wartość do CNT, a jak się ma taką potrzebę to można pobrać z CNT wartość przy której aktualnie jest licznik? Sprytne :) Więc konfiguracja Timera finalnie wygląda tak: [syntax=c]void TIM_Config(void) { //Konfiguracja Timera //Prescaler fclk = 24MHz/24 = 1MHz TIM1->PSC = 24-1; //Zliczanie od 25(dec) = 25us TIM1->ARR...
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...
Ja mam to tak skonfigurowane: [syntax=c] // gpio enkoder - PB4, PB5 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER |= GPIO_MODER_MODER4_1 | GPIO_MODER_MODER5_1; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR4 | GPIO_OSPEEDER_OSPEEDR5; GPIOB->PUPDR |= GPIO_PUPDR_PUPDR4_0 | GPIO_PUPDR_PUPDR5_0; GPIOB->AFR[0] = 0x00220000; //init enkoder RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;...
ale czy przypadkiem nie powinieneś jeszcze włączyć zegara w RCC dla timera oraz gpio? Jeśli autor tematu skorzystał z narzędza CubeMX do wygenerowania szablonu, to zegary do peryferiów powinnny być włączone. Tutaj masz link do kursu z przykładem obsługi enkodera z bibliotekami HAL: [url=https://forbot.pl/blog/kurs-stm32-f...
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...
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...
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...
-> 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...
Kupa błędów, trudno, żeby działało. Nie wiem, czy wszystkie wyliczę: 1. W komentarzach jest TIM1 ch1, TIM1 ch2, TIM1 ch3, ale kody pod tymi komentarzami są identyczne (tylko rejestr CCRx jest zmieniony) - niby czym się różni inicjowanie dla poszczególnych kanałów? 1a. Rejestry PSC i ARR są określone dla timera (wspólne dla wszystkich kanałów), więc...
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...
Witam, Moja konfiguracja: Eclipse, bazuje na przykładzie od freddiego, Linaro z 28.IX, optymalizacja -O0, [syntax=c] __main_stack_size = 2048; __process_stack_size = 2048; rom (rx): org = 0x08000000, len = 64k ram (rwx): org = 0x20000000, len = 20k[/syntax] [syntax=c]void TIM3_Conf(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TI...
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...
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,...
Witam, Ostatnio postanowiłem zająć się licznikami i przerwaniami. To co chcę osiągnąć, to każdorazowe przerwanie po przepełnieniu licznika TIM1. Konfiguracja licznika: [syntax=c] //zliczenie w gore TIM1->CR1 &= ~(TIM_CR1_DIR); //aktualizacja zrodla przerwania (tylko overflow/underflow) TIM1->CR1 |= TIM_CR1_URS; //generowane przerwanie //TIM1->CR1 &=...
Ja wiem co chcesz osiągnąc ale to chyba nie do końca właściwa droga. Po pierwsze aktualizacja CCRx powinna następować w pewnych określonych momentach. Dlaczego: wyobraź sobie, że licznik jest np równy 100, CCRx 105. Tym momencie zmieniasz ten CCRx na 99. Co się dzieje. Licznik będzie liczył do końca, przekręci się i doliczy do 99 - dając takie PWM o...
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...
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...
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...
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...
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 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...
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 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...
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 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, 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...
No a zdradź mi tajemnice dlaczego to mają być przerwania a nie callback-i. Nigdy nie pisałem funkcji z callback-iem, nie miałem jeszcze takiej potrzeby. Tak ogólnie chodzi o to by stworzyć licznik 50Hz, zmienną, którą będę inkrementował, i stworzyć event, który co 50 przerwań (tj 1Hz) wywoła mi callback? Jeżeli chcesz funkcje A wolac co każde przerwanie...
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...
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....
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};)...
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...
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;.....
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...
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);//...
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, 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...
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...
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...
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...
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?
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...
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 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...
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....
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....
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...
Witam Chciałem sobie sprawdzić czy skonfigurowałem poprawnie zegar zewnętrzny. W tym celu użyłem zegara systemowego. Problem polega na tym że gdy mierzę częstotliwość na wyjściu GPIOD 12 wynosi ona 47.5 kHz. Spodziewana częstotliwość 50kHz. Przebieg na oscyloskopie jest czysty, bez żadnych overshootingów, rise time na poziomie 30ns. HCLK=100Mhz=FCLK...
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...
T3 nie współpracuje z enkoderem. Analogiczna konfiguracja na T1 jak najbardziej działa poprawnie: [syntax=c]//GPIO //GPIOA RCC->AHBENR |= RCC_AHBENR_GPIOAEN;//zegar dla GPIO GPIOA->MODER |= (0<<0) | (3<<2) | (1<<4) | (1<<6) | (1<<8) | (2<<10) | (2<<12) | (2<<14) | (2<<16) | (2<<18); GPIOA->OSPEEDR...
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...
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),...
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...
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...
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ą...
Hmm moglibyście spojrzeć. Napisałem coś takiego, jednak na LCD są tylko jakiej pasy. Obrazu brak. Stworzyłem bufor 2kB, i dwa wskaźniki na niego (na jego początek i środek). DMA ustawione na circular i zapisuje ciągle ten bufor. Dodatkowo zgłasza przerwania po przesłaniu połowy bufora i całego. I na podstawie tych przerwań próbuję w pętli głównej na...
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...
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...
Tylko, że w programie jedynie odczytuje przez HAL_RTC_GetTime: RTC_Time1.Hours, RTC_Time1.Minutes, RTC_Time1.Seconds i wyświetlam na LCD, gdzie obok widzę inkrementujący licznik który wyświetla się szybko i równomiernie. Edit Po dłuższym czasie widać, że minuty i sekundy się śpieszą z powodu nierównomierności odliczania sekund.
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...
Ja mam tak i działa [syntax=c] int ADC_On() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_AD... ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); GPIO_InitTypeDef GPIO_S; GPIO_StructInit(&GPIO_S); GPIO_S.GPIO_Pin = GPIO_Pin_0; GPIO_S.GPIO_Mode = GPIO_Mode_AN; GPIO_S.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_Init(GPIOA, &GPIO_S); ADC_CommonInitTypeDef...
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;...
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...
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ć...
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ę...
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...
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ć)....
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,...
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....
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>...
Raczej "katastrofalnie rozbudowany timer" ;) Kwestia zrozumienia filozofii działania i obsługi tego timera. Potem wystarczy wzrokiem ogarnąć wszystkie rejestry i od razu wiadomo co gdzie ustawić. Początkującemu nie rekomendowałbym programowania SCT nawet do prostego generowania PWM... ;) Konfiguracja PWM 16b 366Hz, tutaj akurat dla LPC1519. Naprawdę...
Witam Piszę program, który będzie musiał się synchronizować z siecią 230V. konfiguracja Timera: [syntax=c] TIM8->PSC = 168-1; TIM8->CR1 |= TIM_CR1_ARPE; TIM8->ARR = rotor_period; //20000-1+5000; TIM8->DIER |= TIM_DIER_UIE | TIM_DIER_CC1IE; TIM8->EGR |= TIM_EGR_UG; // update generate TIM8->CCMR1 = 1; TIM8->CCER = TIM_CCER_CC1E; TIM8->CR1...
Witam ,(mój pierwszy post na forum :) ) mam następujący problem , prawdopodobnie spowodowany brakiem mojej wiedzy. Otóż potrzebuję co 1 sekundę wyzwalać ADC za pomocą TImera 1 dokładnie Flagi Timera TIM1_SR_CC4IF. Wydaje mi się że ustawiłem wszystko zgodnie z datasheetem a mimo to Przetwornik mój cały czas wykonuje konwersję wchodzi w przerwanie void...
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...
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...
Prawdopodobnie tak, ale ja nie korzystam z SPL i nie będę wnikał czy to co wywołujesz realizuje zadanie, ponieważ SPL to inny świat ;) Na pewno działa konfiguracja w moim szablonie (link poniżej). Poza tym... ustaw odpowiednio jeden z liczników i zmierz częstotliwość; nawet migającą diodą. Przecież łatwo odróżnić np. 0,1s od 0,9s.
Hi, spróbowałem skonfigurować UART5 w tryb Half-Duplex, jednak nie otrzymuje żadnych danych, zawartość bufora caly czas to 0x00. Skonfigurowałem wpierw UART5 tak samo jak do transmisji szeregowej i sprawdziłem na RS232 czy mi działa, było OK, potem przerobiłem kilka rejestrów tak aby pracował w trybie Half-Duplex i puściłem sekwencje na termometr. Ten...
Witam , Posiadam stm'a takiego jak w tytule, na zestawie uruchomieniowym ZL27ARM. Mam zestaw diod podłączonych do portu GPIO D - schemat w załączniku. Potrzebuje zapalić diody zaznaczone elipsami. (taki grot strzałki wychodzi) Z tego co zdążyłem zauważyć wyświetlić tylko da się je kolumnami. Najpierw kolumna K2 potem K3 i K4 . Będą się wyświetlały w...
1. Zegar dla I/O? 2. Wyrzuć TIM_DIER_UDE - to nie TIM generuje żądania DMA, tylko DAC. Masz debugger? Podejrzyj w rejestrach czy: - licznik działa - CNDTR w DMA maleje - może jakieś flagi typ error/overrrun się ustawiają A! I jeszcze zerknij na bit: SYSCFG_CFGR1_TIM6_DAC1_CH1_DMA_RMP ;) W konfiguracji DMA trzeba tez okreslic kierunek przesyłu danych...
Dzień dobry. Od kilku dni bawię się z STM32L152RE, mam problem z generacją PWM z timera 4. Wszystko robię zgodnie z opisem w RM i już nie wiem w czym tkwi problem. Opis programu: TIM4 skonfigurowany do genercji PWM na swoim wyjściu (TIM4_CH1), dla pinu 6 portu B włączona funkcja alternatywna (jako TIM4_CH1). Na wyjściu timera kompletna cisza, ponadto...
konfiguracja stm32 konfiguracja licznik stm32 konfiguracja bibliotek
deska rozdzielczy iveco błąd klimatronika sygnał syrena
Nagrzewanie kondensatora w nagrzewnicy - przyczyny i rozwiązania Softstart w PMH2400 - jaki układ scalony?