Mnie tam brakuje ustawienia przerwania: [syntax=c]TIM1->DIER = 0x00000001;// enable update interrupt[/syntax] Ogólnie takie coś powinno działać: [syntax=c]TIM1->CR1 = 0x00000000;// default TIM1->PSC = 0x000000FF;// set max prescaler TIM1->ARR = 0x00000FFF;// set max reload count TIM1->CCMR1= 0x00000068;// set PWM mode 1 TIM1->CCR1= 0x000000FF;// set...
może popatrz na to: https://stm32.eu/2012/04/11/timer-systic... Nie mam doświadczenia z STM32. Moja odpowiedź raczej dotyczyła licznika 4-bitowego.
Można spróbować po prostu wrzucić któryś z małych uC - coś z rodziny MSP430 lub STM32? Większość ma liczniki chodzące do dziesiątek MHz, mogą pracować praktycznie bez elementów zewnętrznych, obudowy mogą być małe, plus jeśli trzeba to dodatkową funkcjonalność można samodzielnie zaprogramować.
Będzie tak jak piszesz. Przerwanie po doliczeniu do 999 po czym zerowanie licznika i liczy od nowa
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...
Jesli rozumiem, to potrzebujesz mocy obliczeniowej tak ze 10x większej niz uK tworzacy te PWM. Niekoniecznie. Niektóre mikrokontrolery mają liczniki umożliwiające to sprzętowo ogarnąć. Np. STM8, czy STM32. A w przypadku AVR można skorzystać ze wspomagania przerwań licznikiem. Poleć jakąś literaturę, sporo jest różnych książek w necie. Temat mikrokontrolerów...
Update licznika?
Dla licznika TIM1 trzeba dodatkowo dodać polecenie: [syntax=c]TIM_CtrlPWMOutputs(TIM1, ENABLE);[/syntax] Ustawia ono bit MOE w rejestrze BDTR, polecenie dotyczy liczników 1, 8, 15, 16 i 17 .
Z tym bym polemizował: TIM2->PSC = (uint16_t)83999; //Prescaler: counter value increased every milisecond Dodatkowo nie bierzecie pod uwagę, że może wystąpić przerwanie od przewinięcia się licznika.
OK, dzieki użyłem gotowca Nie używaj gotowców w takiej banalnej sytuacji. Doczytaj co to jest ten Systick. W dużym skrócie to licznik 24 bitowy - to ważna informacja, może zliczyć maksymalnie do ok. 16 mln (2 do 24). Po doliczeniu do zaprogramowanej wartości zgłasza przerwanie. Do ustawiania wartości można użyć funkcji Systick_Config(), ale najlepiej...
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.
dlaczego od wartości Load odejmujemy 1 ? Bo liczniki używają też wartości 0, więc jeśli chcesz mieć przykładowo 5 cykli, to wpisujesz do licznika wartość "5 - 1". Licznik w efekcie odliczy 4-3-2-1-0 - razem pięć (;
No ale przecież tak właśnie jest zrobione - preskaler/dzielnik to po prostu licznik z porównaniem. 4\/3!!
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!!
https://forbot.pl/blog/kurs-stm32-f1-hal...
czy też muszę użyć trzech liczników? Procesor mam na płytce typu STM32F100RB. Nasuwa mi się pytanie czy w ogóle potrzebujesz to zrobić na timerach. A nie po prostu użyć przerwań od zboczy na pinach (EXTI). Typowo czas martwy G-M podawany jest rzędu 100µs, czyli nawet jak na wolny F100 jest to mnóstwo czasu i nie ma ryzyka zgubienia impulsów. Co...
Witaj. Tu masz trochę o PWM czyli o sterowaniu pompą: https://forbot.pl/blog/kurs-stm32-7-licz... Poczytaj również o STM32CubeMX. Dobrym środowiskiem programistycznym jest Atollic studio. a tu masz jak odczytywać napięcie: https://forbot.pl/blog/kurs-stm32-6-pomi...
Też się bawiłem taką prowadnicą tyle ze na stm32, mają wbudowany licznik kwadraturowy. Można się fajnie PID'em pobawić, zrobić prosty serwomotor.
To, co jeszcze warto wyciągać z takich drukarek to enkoder liniowy. To wygląda jak ten transoptor szczelinowy, ale przechodzi przez niego taki przeźroczysty pasek z kreskami. Super sprawa. Standardowo można znać przesunięcie paska, względem enkodera o 1/4 odległości pomiędzy kreskami. Działa jak zwykły enkoder, czyli można np. podłączyć, prawie bezpośrednio...
Skoro mamy taką definicję funkcji GPIO_SetBits: void GPIO_SetBits ( GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin ) To możemy zrobić tak: [syntax=c] GPIO_SetBits(GPIOB ,((uint16_t)1<<licznik)); [/syntax] lub (być może będzie działać nieco szybciej) [syntax=c]uint16_t maski[16]={ GPIO_Pin_0, GPIO_Pin_1, GPIO_Pin_2, //itd..... GPIO_Pin_15, };...
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ę...
Czy nie powinno być: [syntax=c] TIM1->PSC = 0; [/syntax]
Dzięki ;) Czyli powinno to wyglądać mniej więcej tak: [syntax=c] //Prescaler fclk = 24MHz/24 = 1MHz TIM1->PSC = 24-1; //Zliczanie od 25(dec) = 25us TIM1->CNT = 25-1; TIM1->ARR = 25-1; //Tryb zliczania w gore, trub powtarzania i wlaczenie licznika TIM1->CR1 = (TIM_CR1_ARPE | TIM_CR1_CEN); [/syntax] Paprocki wypisuje, że artość rejestru CNT jest przepisywana...
konstrukcja na pojedynczych licznikach TTL + bramkowanie z GPS. Całość odczytywana i obrabiana przez procesor. Bez sensu. Liczniki sa w mikrokontrolerze, jak licznik jest za krótki, to albo przerwanie od przepełnienia i część licznika programowa, albo lepiej kaskadowe połączenie liczników. W STM32 kaskadowo można łączyc liczniki programowo, w AVR sprzętowo....
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.
Jakby mógłby wyglądać odczyt wartości licznika używając przerwania ?
(at)excray, (at)es2, w stm32 jest coś takiego jak rejestr powtórzeń licznika - więc zmienna / licznik stanu nie ma sensu ;) Dygresję nie na temat usunąłem.
Wypełnienie ustawia się w rejestrze ccr. Jeśli przebieg ma być nie standardowy, użyj tablicy z ilościami cykli i ładuj do rejestru licznika poprzez dma.
1/ nadużywanie ustawiania bitów "|=". Nigdzie nie ma odpowiadającego wstępnego kasowania bitów, które są ustawiane, więc z góry zakładam, że ten kod może być zawodny. Najlepszym rozwiązaniem jest pojedyncze wpisanie do rejestru jednej wartości zawierającej żądane ustawienia wszystkich pól. 2/ [syntax=C]TIM1->PSC = 23999; TIM1->ARR = 1;[/syntax] Na timer...
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...
Jestem autorem, będą w AVT. W TME, Farnel można kupić (można było) zestawy devkity (tanio nie jest) z FT201, FT220, FT221 ale bez izolacji galwanicznej. Do zabawy wystarczą. Prawie skończyłem funkcje dla STM32. Praktyczne zastosowanie - licznik resetów: https://obrazki.elektroda.pl/6970164000_... Tylko 8-bit ale to demo.
Może by tak te impulsy na próbę podać na zwykły licznik/timer i zobaczyc ile zliczy na sek. i czy zlicza stabilnie? Przynajmniej bedzie wiadomo czy to problem bardziej sprzetowy, czy programowy.
Przerwanie powinno być w porządku, ale co do inicjacji samego Timera to nie jestem pewny. Po prostu nie mam zaufania do funkcji API dla Timerów. Czy udało Ci się uruchomić cokolwiek związanego z licznikami na tych funkcjach?
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...
Prawda, z 32 bitowym licznikiem działa prawidłowo. Dzięki za pomoc ! p.s. jeszcze jeden szczegół mnie zastanawia: Te statystyki są wyliczone z przedziału czasu od poprzedniego pobrania statystyk ? czy to znaczy, że dostaniemy bardziej dokładne statystyki jeśli będziemy rzadziej je pobierać ? a max czas pomiędzy kolejnymi pobieraniami to przedział od...
Odpowiedź na Twoje pytanie jest trywialnie prosta. Rejestry które są buforowane (ARR, PSC i chyba jeszcze jakieś) aktualizują swój realny stan w momencie update'u, który występuje automatycznie w momencie przekręcenia licznika, czyli (w uproszczeniu) doliczenia do ARR. Ty w swoim wyjątkowo dziwnym kodzie fizycznie uniemożliwiasz wystąpienie update'u,...
Jak wyżej. Jest to nie wykonalne na STM32. Aby spełnić Twoje warunki to licznik musiał by się zwiększać z częstotliwością (2,7*10^6 * 100 / 5)=540MHz - zakładając że chcesz uzyskać rozdzielczość co 5%. Po co Ci PWM o takiej częstotliwości?
Witam, Ostatnio zacząłem przechodzić na mikrokontrolery STM32 i testowałem program zawarty poniżej. Licznik TIM2 zlicza w górę, drugi licznik generuje żądanie DMA od przepełnienia się licznika, wysyłając wartość licznika CNT TIM2 do tablicy, która jest inkrementowana. Powinienem otrzymać w tablicy wartości zwiększające się cyklicznie co tą samą wartość,...
Ok. Nie wiem dlaczego zasugerowalem sie licznikiem, moze wlasnie dlatego, ze na lpc wystarczylo ustawic zdarzenie jako toggle i nie trzeba bylo uzywac funkcji w przerwaniach, procek robil to sprzetowo. W takim razie przejrze PWM ale juz mam nastepne pytanie z tym zwiazane: jak chce wygenerowac okreslana (20) liczbe sygnalow, to jakie bedzie najlepsze...
Nie powinno być przypadkiem dekrementacji licznika? [syntax=c]if (i2c_timer) i2c_timer--; [/syntax]
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...
Jest jakiś powód dla którego używasz WWDG (okienkowego watchdoga) a nie IWDG? WWDG zresetuje układ jeśli wartość licznika spadnie poniżej 0x40 lub kiedy uaktualniasz licznik, ale jego wartość podczas aktualizacji jest większa niż to co zapisałeś do CFR. Do CFR zapisałeś 1. Więc masz "wieczny reset". Zainteresuj się IWDG lub zapisz do CFR jakąś sensowną...
są jakieś praktyczne przypadki wykorzystywania zdarzeń? Pytam ogólnie w całej rodzinie stm32. Tak w praktyce to zdarzeń nie ustawia się wcale. BlueDraco, a np. zdarzenie od zmiany stanu pinu ? Zdarzenie od przepełnienia licznika i zmiany stanu pinu ja osobiście dość często wykorzystuję. Co do pytania o aspekty praktyczne takich zdarzeń, hmm no to chyba...
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...
Czytając o rejestrach liczników, jedyną taką flagą (którą znalazłem), jest TIMx_SR_UIF, czyli UpdateInterruptFlag. Co prawda nie będę włączał przerwania, ale jest to chyba jedyna flaga którą mogę w tym celu wykorzystać, czy też jest jakaś inna lepsza do tego celu? To jest właśnie flaga która jest Ci potrzebna. 4\/3!!
Ostatecznie możesz zrealizować taki pomiar w oparciu o układy cyfrowe. Budujesz generator o odpowiednio dużej częstotliwości do tego jakiś licznik i układ bramkujący ...a mikrokontroler stosujesz do sterowania tym układem oraz odczytem wartości z licznika i akwizycji na wyświetlacz. Wspomniane mikrokontrolery XMEGA są oczywiście lepszym wyjściem z sytuacji...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
Brak Ci preloadingu (buforowania). Wytłumaczę ten fenomen tak: Powiedzmy że Twój timer liczy od 0 do 100 (taka wartość jest w ARR), a ty nagle zmieniasz ARR na 10, tyle że aktualna wartośc licznika wynosi 50. No i teraz Twój timer musi doliczyć do 65535 żeby się przekręcić i doliczyć do tych 10. Dokładnie tak samo ma się sprawa z wartością CCR. Przed...
0. Jaki dokładnie STM32? Jest ich kilka tysięcy i mają trochę różne peryferia, łącznie z licznikami i DMA. 1. Dlaczego akurat wybrałeś DMA1_Ch5. Z tego co się orientuję, nie ma żadnego połączenia między TIM1 i DMA1, ponieważ TIM1 może być obsługiwany przez DMA2. Nawet wtedy, w grę wchodzą kanały 0 i 6. 2. Co ma wyzwalać transfer w Twoim programie. Nie...
Powtórzę po raz trzeci. Jeśli CCR <= ARR, znacznik ustawia się przy zrównaniu wartości licznika z CCR. W przeciwnym przypadku znacznik CC ustaia się razem z UIF. Co jeszcze nie jest jasne? Z czym właściwie jest problem? W procedurze obsługi przerwania reaguje się na zdarzenia, na które chce się zareagować. Nie chcesz reagować na CC - to nie reaguj....
Taki na który umiesz napisać program. Na przykład Arduino czy STM32. Chyba nie ma mikrokontrolera który by tego nie ogarnął.
zostanie wysłana po i2c cała paczka danych, czy może się zdarzyć, że zostanie wysłany kawałek starej tablicy i kawałek nowej ? (w trakcie wysyłania zostaną już nadpisane dane) Czy jednak trzeba sobie jakoś samemu zapewnić to, żeby takie "zbiory" były wysyłane jako całość ? W czasie przesyłania przez DMA, możesz modyfikować zawartość, bo i tak DMA widzi...
Dół 4W/cm^2 góra 7...8W/cm^2 . Arduino czyli AVR wystarczy do zrobienia regulatora PID, którego wyjściem będzie PWM liczony w ms Stała czasowa ceramicznych promienników to sekundy czyli regulator nie musi być super wypasiony pod względem mocy obliczeniowej. Odradzam układ MIMO. Wystarczą dwa oddzielne regulatory PID dla dołu i góry. Autostrojenie PID...
To do PY32F003 pewnie też (takie zamówiłem :) ). Ciekawe czy ten LED Driver do wyświetlaczy 7 segmentowych też jest. Z tego co rozumiem, to piny powinny mieć wtedy charakter źródeł prądowych (20-40-60-80 mA). Przy tej obudowie 10-pinowej w PY32F002 na PB3 można mieć wspólną katodę pierwszej cyfry, a na PA1 anodę segmentu C. Można by podłączyć LED i...
Jest wiele metod. Najwygodniejsze: 1. Ustaw sobie SWV data trace i pisz do jakiejś globalnej zmiennej. Bedzesz miał w CubeIde licznik taktów wyświetlony kiedy ten zapis się dokonał. Odejmiesz dwie wartości i będziesz miał wynik :) [url=https://www.elektroda.pl/rtvforum/v... pisałem Ci już o SWV Jest to potężne narzędzie...
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...
Zaraz będzie, że krytykuję albo się naśmiewam, ale widzę tutaj poważne braki w wiedzy. Zacznę od końca: SSD1289 to jakieś nieporozumienie. Nawet jeżeli uzyskasz dobre wyniki przy wypełnianiu całego ekranu, to wszystko się wysypie przy malowaniu ikon czy dowolnego obszaru innego niż cały ekran. Ten kontroler potrafi w jednej transmisji wypełnić tylko...
Witam, Małe słówko sprostowania odnośnie porównania STM32 i AT91Sam7X.... . Cena: STM32 chyba korzystniejsza Peryferia: STM32 już nie koniecznie, proszę zauważyć że STM32 ma 16 bitowe rejestry i np. skorzystanie z 32 bitowego licznika trzeba kombinować w specjalnym trybie. At91sam7x ma większość 32 bitowych rejestrów. Dokumentacja: AT91SAM7x wygrywa...
Witaj Kolego Szczywronek ! Oczywiście, mam nadzieję, że wiele razy już czytałeś jak piękną robotę odwaliłeś pisząc swój poradnik. Myślę, iż słowo poradnik jest nieadekwatne do tej książki, którą wydałeś w domenie PUBLIC DOMAIN. Wielki szacunek i wielkie podziękowania, za włożony trud! Nie mniej jednak w rozdziale 1.4 (uwagi końcowe) dałeś przyzwolenie...
No a zdradź mi tajemnice dlaczego to mają być przerwania a nie callback-i. Jeżeli chcesz funkcje A wolac co każde przerwanie a B co 20 na przykład to zrób sobie licznik. Sprzętowo to tak jak MS napisał nie da się. Jak potrzebujesz licznik w liczniku to albo kaskadujesz timery albo robisz to programowo.
72e6 razy sie zmieni to wywoła UEV co spowoduje wywołanie (w tym przypadku) tego handlera. poniewaz 1 zmiana licznika to 1 takt zegara to 72e6 / 72e6 = 1s Jak wartość bedze 72e3 to 72e3/ 72e6 = 1e-3s Takie pytanko: czy wiesz w ogóle jak działa licznik? Tyle że systick jest 24 bitowym timerem. Wypadałoby zajrzeć do implementacji zanim zaczniesz wprowadzać...
Witam. Kupiłem płytkę uruchomieniową STM32vldiscovery z kontrolerem STM32F100RB. W przykładowym programie użyto licznika SysTick do wywoływania przerwania co 1ms. W programie użyto funkcji włączającej podział zegara systemowego (ustawionego na 24MHz) przez 8. "SysTick_CLKSourceConfig(SysTick_CLKSour... Jednak aby przerwanie było wywoływane...
Black Pill jest na F4xx a nie F103. To zależy, z której strony pochodzi informacja ;) https://stm32-base.org/boards/STM32F103C... https://robotdyn.com/stm32-arm-arduino-m...
Nawet jeżeli nie generuje jednego tylko więcej, to po jakimś czasie licznik powinien zliczyć do 5, w moim przypadku nic się nie dzieje, przerwanie się nie wywołuje.
z tym flashem to nie jest do końca tak różowo... po pierwsze to nie 100k cykli jest gwarantowane tylko 10k (str. 52 STM32F100x 4 6 B.. Datasheet) i oczywiście nie wybuchnie ale nawet nie wiesz kiedy możesz przestać polegać na tym co sie w tym flashu dzieje (bo chyba niema żadnego licznika - przynajmniej nic o tym nie wiem). Niestety czasem jak się...
Witam zainteresowanych tematem. Czy ktoś może mi wytłumaczyć tak troszkę łopatologicznie, krok po kroku, jak działają te dwa liczniki? // TIM3 jest masterem dla TIM4 TIM3->CR1 = 0; //CNT_EN jako TRGO TIM3->CR2 = TIM_CR2_MMS_0; //Trigger mode, wyzwalanie przez T1FP1 TIM3->SMCR = TIM_SMCR_TS_0 | TIM_SMCR_TS_2 | TIM_SMCR_SMS_2 | TIM_SMCR_SMS_1; //Włączenie...
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...
Cześć, Projektuję moduł miernika mocy na trzech przekładnikach prądowych do silnika DC 7500W. Trzy przekładni prądowe będą umieszczone przed mostkiem prostowniczym 3F oraz przed regulatorem obrotów na triakach...... Dodam ze przeglądałem internety i nie znalazłem zadowalających wyników, mam wątpliwości...... Przekładniki prądowe to TA20-100, a ich prąd...
Dzięki za odpowiedź. Jednak nigdzie nie widzę zasilania 36V. Interesuje mnie połączenie mikrokontrolera z licznikiem energii po M-Bus. Z góry dzięki.
Poszukaj RM0008. Ma około 1100 stron i uwierz mi - jest tam wszystko opisane. Nawet jak się posługiwać licznikami (no może poza opisem peryferiów związanych z CM3 które są w PM0056). Jeżeli już to masz, tzn że nie chciało Ci się tego przeczytać :)
Poza tym event system - o ile SAM i XMEGA go mają to inne ARMy już zazwyczaj nie. Licznik w trybie IC nie potrzebuje Event System, ponieważ ma dedykowane piny ICx. ADC nie potrzebuje Event System, ponieważ konwersja, zarówno podstawowa jak i dodatkowa (injected) może być wyzwalana z 1 z 6 liczników (w tym jeszcze poszczególne moduły IC/OC) lub pinów...
Cały czas jednak nie ogarniam tego, dlaczego jeżeli chce pobrać dane z IrQHandler z tablicy gpsread do tablicy RxBuffer w funkcji niżej, to wgl nie moge skopiować danych nawet zwykłym for'em? [syntax=c]void USART1_IRQHandler(void) { //odbiór danych if((USART1->ISR & USART_ISR_RXNE) != RESET) { uint8_t data = USART1->RDR; gpsread[wpp] = data; if(++wpp...
Pytanie 1: http://infocenter.arm.com/help/index.jsp... CORTEX nie koniecznie wykonuje czynności w spodziewanej kolejności czy w spodziewany sposób, przekonałem się o tym dobitnie po kilku dniach nieustającej próby napisania tego w c/c++ bez podglądu na wygenerowany kod (tzn algorytm działał jednak występowały jittery...
Korzystam z licznika sprzętowego. Generalnie w rachubę wchodzą liczniki z obsługą enkodera czyli advanced albo general purpose(Najprawdopodobniej TIM1, lub TIM3). Licznik będzie pracował dwukierunkowo z przeładowaniem. Czy jestem w stanie stwierdzić czy przeładowanie nastąpiło na wskutek przekroczenia zakresu od góry czy od dołu? Oczywiście w obsłudze...
Zamierzam wykorzystać to bardziej do nauki podstaw niż jakiegoś konkretnego projektu. Dlatego zdecydowałem się na zestaw Discovery, nie wiem tylko z jakim procesorem. Na początek takie podstawy jak zabawa diodami, wyświetlaczem 7-segmentowym, LCD. Chodzi o dokładnie opanowanie podstaw (porty, liczniki, przerwania itp).
Odnośnie inicjowania liczników, pole struktury TIM_Period w jakim związku pozostaje z okresem wykonywania przerwania powstającego od kanałów licznika. Zauważyłem że wartośc tego pola nie zawsze ma wpływ na okres wyzwalania przerwań. Chyba że coś pochrzaniłem.
Zrób sobie jakaś sygnalizacje na pinie zgłoszeniowym, ledka czy coś będziesz wiedzial czy przerwanie przyszło czy nie. Albo jakiś licznik wejść w przerwanie. od czegoś trzeba zacząć zobaczyć po czyjej stronie jest wina.
Dzięki, sprawdzę kod. No nie zadziała, bo 107 nie ma kalendarza. Z drugiej strony F0 nie maja licznika, za to maja kalendarz. Brałem pod uwagę użycie funkcji konwersji czasu używanej przy obsłudze NTP (przeliczanie sekund na datę/czas i na odwrót) ale każda pomoc się przyda. Ot, załaduj unix-timestamp do licznika RTC i możesz używać funkcji z time.h...
(at)kamil94goldman Nie w każdym STM32 znajdziesz odpowiednik AWEX, ale jeżeli na liście timerów danego uC jest TIM1 i/lub TIM8, to spokojnie wystarczy do większości zastosowań - DC, BLDC, AC, STP... TIM1 i TIM8 to zaawansowane timery, które mają po 4 kanały IC/OC/PWM, z których 3 pierwsze mają wyjścia komplementarne z kontrolą czasu martwego + nadrzędny...
Ok, z niechęcią pokażę jeszcze trochę kodu. Od razu wyjaśniam - ten kod to tylko taka tymczasowa partyzantka celem sprawdzenia i wykrycia takich sytuacji jak ta powyższa. Docelowo to będzie zupełnie inaczej zorganizowane. Dane są zbierane do RAMu przy pomocy DMA do podstawy 5-5ms/kratkę. Powyżej już są wyświetlane na bieżąco. Niemniej w obu przypadkach...
Tak, o jeden za duży, często o tym zapominam, ma być 0x7FFF. Ok, czyli zlicza tylko sek. Zapisuję w tych nieulotnych rejestrach datę startową, a po każdym włączeniu muszę z licznika sekund wyliczyć aktualny czas i datę. A w STM32F4 są już liczniki min. godz. dni itd...? Nie patrzyłem jeszcze do dokumentu. Na razie nie ruszam F4 zgodnie z zaleceniami,...
To RM w łapę i czytać o timerach i ADC. Jak czegoś nie zrozumiesz pytać. Ciekawe jak generujesz to PWM jak nie wiesz jak to działa. ... Wyczuwam ... Czuję ... Jakiegoś gotowca. Piotr - na Ciebie zawsze można liczyć... :) Na drugie powinieneś mieć REFERENCE :) OK, doczytam sobie na temat przerwań od bloku porównującego COMPARE - bo chyba to sugerujesz?...
pomiędzy włączeniem licznika a kasowaniem flagi przerwań miałem opóźnienie, które powinno spowodować to że zdążą sie wpisać nowe wartości do rejestrów. Mógłbyś pokazać ten kod z opóźnieniem o którym piszesz?
Masz to zupełnie źle rozwiązane. Oczekiwanie w przerwaniu to jest kardynalny błąd! Jeśli chcesz to tak zrobić, to powinieneś mieć bufor z możliwością sprawdzenia ile jeszcze zostało do wysłania - np licznik pozostalych znaków. W przerwaniu sprawdzasz licznik - jeśli większy od zera, to zmniejszasz, wysyłasz, przesuwasz index tablicy (czy jak to tam...
zliczanie impulsów z dwóch enkoderów Jeżeli to są enkodery inkrementalne z sygnałem A, B i ew. Home, zrezygnuj z megi64/128. Xmegi mają wsparcie sprzętowe do obróbki sygnału z takich enkoderów przez użycie liczników w połączeniu z eventami. Na STM32Fxxx zrobisz to łatwiej i być może szybciej korzystając z gotowców. generowanie dwóch przebiegów PWM...
Ale wciąż czekam na opinie! kogoś kto zrobil coś duzego na tych bibliotekach! Ale co według Ciebie znaczy "duże"? Ja robiłem może nie coś ogromnego w sensie objętości we Flashu, ale ze skomplikowanymi zależnościami czasowymi na STM32F103VD/VE. Używałem przerwań i robiłem rekonfigurację różnych bloków układu w tych przerwaniach. I to działało z użyciem...
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, Problem przesunięcia fazowego sygnałów PWM próbuję rozwiązać już jakiś czas, niestety z marnym skutkiem. Czy mógłbyś przesłać kod który rozwiązuje synchronizację/ przesunięcie fazowe na stm32? Każdy kod przyjmę z otwartymi rękoma, mój zestaw to stm32f407VG Pozdrawiam, Antek
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...
Witam, W mikrokontrolerze "stm32f103c8t6" chciałbym wygenerować następujący przebieg na pinie: a) krótkie, powtarzające się, pulsy przez "x" czasu b) zero (przez "y" czasu) c) a i b powtarzające się z okresem "x"+"y" Myślałem aby w tym celu połączyć TIM3 i TIM1 w konfiguracji master-slave. W TIM3 (master) generowałbym przebieg x+y, który by służył do...
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...
Tylko że cały czas nie rozumiesz. Masz racje a ja się myliłem - mój błąd. Przepraszam . Zasugerowałem się czymś innym a potem brnąłem w PWM. a trzeci PWMa 2MHz będzie dawał do próbek co mają 8kHz twierdząc że to absolutne minimum. A tego nie rozumiem. Jeśli chcesz 8000 tysięcy próbek na sekundę o różnej wartości (załóżmy 8 bitów) to ile powinna wynosić...
Dla przykładu: EOC: End of conversion This bit is set by hardware at the end of a group channel conversion (regular or injected). It is cleared by software or by reading the ADC_DR . Sprawdź czy Twój program w pętlach w ogóle oczekuje na to zakończenie konwersji (dodaj tam jakiś licznik i sprawdź czy się zwiększa). 4\/3!!
Podejrzewam funkcję delay ale miło by było jakbyście rzucili wzrokiem. Słusznie podejrzewasz. Jak podejrzysz sobie assemblera, to na 99% ta funkcja zostanie wywalona, bo te liczniki (wystarczy jeden) które tam masz nie mają cudownego modyfikatora na "fał". 4\/3!!
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
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, od paru dni ogarniam nową dla mnie architekturę ARM na bazie STM32103C8T6. Bawię się aktualnie licznikami, udało mi się jakoś skonfigurować pwm, ale mały problem pojawia się przy próbie skonfigurowania timera w tryb odpowiadający CTC z AVRek. Chodzi o zerowanie licznika po zrównaniu (Compare) tak, żebym mógł sterować częstotliwością. Ale coś...
AAAAAAAA! :crazyeyes: Dziękuję :) 1. Gdzie znaleźć informację na ten temat? Tak na przyszłość, żebym wiedział co czytać pierwsze. 2. Da radę zrobić taki trik w F4? Update: 1. W RM, opis GPIO :) 2. Tak, sterowaniem bitami w rejestrze PUPDR, dokładniej trzeba zmieniać podciąganie w taki sposób: [syntax=c]#include "stm32f4xx.h" int main(void) { RCC->AHB1ENR...
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...
Obrałeś trochę złą drogę, po co się tak męczysz w tym przerwaniu skoro RTC przecież w swoim liczniku przechowuje czas w sekundach. Przy ustawieniu czasu wpisujesz tą wartość do licznika a potem RTC sam go zwiększa co sekundę nawet na zasilaniu bateryjnym ;) Jak potrzebujesz sprawdzic godzinę to odczytujesz tylko ten licznik i odpowiednio przeliczasz...
konfiguracja licznika stm32 stm32 przerwanie licznika brother licznika licznika
astra tunel środkowy revox tuner podgląd rejestrator
hewalex sterownik hewalex sterownik
Zamienione pedały w kierownicy Cobra Rally GT900 Gaźnik Komara w silniku Sachs - kompatybilność i modyfikacje