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!!
https://forbot.pl/blog/kurs-stm32-f1-hal...
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?
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ą...
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...
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!!
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?
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...
Zapomniałeś tylko dopisać, że ustawiłeś samodzielnie bit UDIS w rejestrze CR1 timera, który właśnie coś takiego powoduje. Nie wiadomo jednak po co go ustawiłeś. Nie potwierdzam, nie zaprzeczam ale faktem jest, że obecnie nie ustawiam bitu UIDS w rejestrze CR1 i bez ustawienia bitu UG w rejestrze EGR preskaler nie działa poprawnie. Poniżej kod jakim...
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...
Stąd wynikało moje pytanie o to co siedzi w funkcji przerwania. Może uC usilnie próbuje wykonać funkcję zawartą w przerwaniu i nie może jej zakończyć. Funkcja przerwania była potem rozbudowana, zaczynałem od pustej a w zasadzie tylko włączeniem diody. Kasowanie flag nic ci nie daje, ponieważ nie są one w tamtym momencie ustawione. Ustawiają się te...
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...
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ść,...
Jeśli zajrzysz do definicji funkcji NVIC_SetPriority((), zobaczysz, że dla SysTick nie rusza ona wcale NVIC. Racja, wpisuje do innych rejestrów. Ale Manual pisze że SysTick też wchodzi o NVIC. Jeszcze kolejna sprawa. Skoro Aby mogło wystąpić przerwanie należy zarówno ustawić i to co generuje przerwanie np Timer jak i NVIC. Ale co np ze znacznikiem...
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ął.
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...
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...
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ć :)
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.
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...
(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...
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.
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ń...
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...
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...
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.
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...
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...
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...
Cześć Od razu nadmienię, że jestem w tym początkujący. Posiadam mikrokontroler STM32F100C4T6B oraz moduł GY-50 L3G4200D. Próbuję nawiązać połączenie za pomocą interfejsu I2C i wyświetlić informację na komputerze kominukując się po UART, który na pewno działa. Jeżeli chodzi o połączenie to jestem na 99% pewny, że jest dobrze. Korzystam z programu STM32CubeMX...
Mam taki prosty programik: [syntax=c]void TIM1_BRK_UP_TRG_COM_IRQHandler(void) { TIM1->SR &= ~TIM_SR_UIF; GPIOA->ODR ^= GPIO_ODR_2; //led PA2 if(TIM1->CR1 & TIM_CR1_DIR) TIM1->CNT = 0; //blokuję licznik przed przeładowaniem else TIM1->CNT = 20; } void TIM1_CC_IRQHandler(void) { TIM1->SR &= ~TIM_SR_CC1IF; GPIOA->ODR ^=...
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.
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...
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...
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...
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...
Witam, Zrealizowałem prosty wyświetlacz led którego każdy segment ma swoją nóżkę w procesorze. Sterowanie jasnością odbywa się za pomocą przerwań timera - po prostu ileś okresów od przerwania do przerwania tego licznika świecą segmenty które mają się świecić, a ileś nie świecą. Ale czy da się to zrobić bez przerywania programu głównego? Na myśl przychodzi...
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,...
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! Eclipse Kepler Sourcery CodeBench Lite 2011.09-69 OpenOCD 0.6.1 STM32F103ZET6 Od pewnego czasu bawię się modułem GSM. Komunikacja z modułem standardowo komendami AT. Chciałbym usprawnić komunikację z modułem ponieważ moim zdaniem teraz robię to bardzo nieefektywnie: - wpisanie do bufora nadawczego komendy i uruchomienie wysyłania z wykorzystaniem...
Poczytaj, poeksperymentuj a jak po tym będziesz miał jakieś konkretne pytania to pisz. Wtedy z chęcia odpowiem. Trzymam za słowo :) A dlaczego timer nie mógłby wyzwolić konwersji w dowolnym momencie zaprogramowanym przez Ciebie? Z Twojej wypowiedzi rozumiem, że timer pracujący w trybie PWM może jednocześnie wyzwolić przerwanie w momencie startu licznika?...
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...
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
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
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ś...
Nucleo, to moduły STM32 - a są i moduły nie-NUCLEO: STM32F103C6T6, STM32F103C8T6 (oba bywają nazywane "Blue Pill" - pierwsze są zbliżone do Arduino Nano (ale dużo szybsze: STM32 ma 32-bitową magistralę i zegar np. 72MHz, a Arduino z ATmegą 8-bitową z zegarem np. 16MHz), drugie mają więcej pamięci. Ale i Arduino, i Nucleo (a tym bardziej STM32) jest...
Mimo wszystko nie działa. Jak linijke RCC->APB2ENR|= RCC_APB2ENR_TIM1EN dodam gdzieś poniżej pierwszego odwołania do rejestrów TIMERA1 to diody nie zapalają się w żadnej kombinacji, wtedy chyba nie wchodzi do przerwania w ogóle. edit: [syntax=c]#include "stm32f10x.h" void TIM1_UP_TIM16_IRQHandler(void) { GPIOC->ODR ^= 0x300; /*break point*/ } int main(void)...
Dzięki za wszelkie sugestie i nowe doświadczenia. Program ma dokonywać pomiaru rzędu pojedynczych sekund. Rozpoczęcie pomiaru w momencie pojawienia się stanu niskiego, zakończenie (zatrzaśnięcie licznika) rowniez na stan niski. Już jestem świadomy więc z przerwania od przecieku rezygnuję. Nie chciałbym rownież w pętli while cały czas sprawdzać stanu...
konfiguracja licznika stm32 stm32 przerwanie licznika brother licznika licznika
przycisk stabilny silnik kopcić iveco daily problemy klimatyzacja
filtr piaskowy szuflada kuchenna
Funkcje pinów D+ i DF w regulatorze Bosch 0 124 625 014 Dźwięk zasysania powietrza w lodówce - przyczyny i rozwiązania