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...
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...
Będzie tak jak piszesz. Przerwanie po doliczeniu do 999 po czym zerowanie licznika i liczy od nowa
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ę...
Nie musisz odblokowywać ani obsługiwać przerwań timera. Jeśli raz włączysz wyzwalanie ADC, będzie ono włączone (raczej - co prawda STM32F1 są strasznie skopane, ale chyba nie aż tak). No ale jak widać nie działa, nawet nie wchodził w przerwanie więc nie wiem już jak to powinno być poustawiane. DMA już chyba wysyła dobrze: 00 00 00 00 00 00 00 00 46...
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.
mozesz tez przy wiekszym nieco udziale rdzenia (ale wtedy bedzie już w pełni automatyczne i jedyne co musisz liczyć to co ile transmisja do ADC ma być wyzwalana). Czas ten musi być większy niż czas transmisji + 210ns. Zauważ że w przypadku 100k I2C ta częstotliwosc nie może być wieksza niż ~590Hz a w przypadku 400k 2370Hz. Jezeli potrzebujesz większej...
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.
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.
Czy dobrze rozumiem że ustawiając Update DMA i Update interrupt to po każdym przekręceniu się licznika zostanie wywołane przerwanie i DMA? W przypadku Trigger określam co bedzie powodowało start Timer'a?
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....
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...
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...
oba przerwania wykonują się z taką samą częstotliwością, niezależnie od tego co wpiszę w Pulse Nic dziwnego :) Przecież oba mają tę samą podstawę czasu, czyli rejestr TIM1->CNT. Jedyna różnica jaką mógłbyś zobaczyć, to moment przełączenia wyjścia lub pojawienia się flagi przerwania. Ale nie zobaczysz, ponieważ niezbyt szczęśliwie dobrałeś czasy 0 i...
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?
Już wyjaśniam. Pojawia się przerwanie globalne licznika TIM2. Przeskakuję do ISR przerwania. Które flagi mam tam sprawdzić żeby dowiedzieć się czy przerwanie wystąpiło z powodu przepełnienia licznika czy z porównania kanału CC1? Według poradnika szczywronka i RM'a sprawdzałbym flagi UIF oraz CC1IF w rejestrze SR. Jednak mimo, że nie występuje porównanie...
Miałeś zrobić przerwanie na opadającym i rosnącym zboczu, a nie jakieś liczniki wewnątrz przerwania... "Zbocze" sprawdza się czytając choćby rejestr IDR, a nie zakłada że zawsze będzie na przemian, bo jak widzisz jednak tak nie jest. 4\/3!!
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....
Przerwanie od input capture wskazuje, że stan licznika został zapamiętany w odpowiednim rejestrze... Jeśli dodatkowo można IC sprzęgnąć z DMA to problem akwizycji danych jest rozwiązany - DMA może wtedy wywoływać przerwanie po zebraniu dwóch (lub więcej) wartości - początku i końca impulsu. W niektórych co sprytniejszych ARMach (np STM32) można tak...
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...
v1_9. Str.221 "Swoją drogą w dokumentacji jest informacja, że nie łączy się memory to memory z direct mode. Tryb bezpośredni jest domyślnie włączony, ja go nie wyłączyłem... a i tak jakoś to działa. " RM0090 w opisie rejestru FIFO - Bit 2 DMDIS: Direct mode disable jest napisane: "This bit is set by hardware if the memory-to-memory mode is selected...
A co to jest ? [syntax=c] SysTick_Config(SysTick_FREQ/1); [/syntax] SysTick to 24 bitowy licznik, SysTick_Config służy do zaprogramowania wartości od której odlicza on w dół, po przejściu zero generowane jest przerwanie i SysTick odlicza znowu od wartości wcześniej zaprogramowanej u ciebie jest to (SysTick_FREQ/1).
Widzisz gdzieś w kodzie wyłączanie HSION? Bo ja nie... A boli cię że HSION jest włączony? Jeśli tak, to go wyłącz ;] Czymże jest "jakiś licznik"? Co ty z nim masz zmiar robić i do czego go używać? Od pomiaru czasów wykonywania kodu jest timer w procesorze. Poza tym, co ci po liczniku, skoro pierwsze lepsze przerwanie rozwala ci cały pomiar... W lewym...
Robię program składający się głównie z przerwań. Program steruje 6 silnikami krokowymi. Uruchomiłem więc 6 timerów dla kazdego silnika w trybie PWM, wypełnienie zawsze 50%, sterowanie częstotliwością. Żeby każdy silnik mógł wykonać zadaną ilość kroków (a zalezności miedzy silnikami są skomplikowane i nieprzewidywalne), każdy timer po wykonaniu impulsu...
Dzięki zatem. To oczywiście zrozumiałe że 10 razy częściej będzie wywoływane przerwanie więc 10 razy większe obciążenie. Ale jak rozumiem, sama różnica w dzieleniu pomiędzy 32768/32768 a 1000k/100k nie jest większym obciążeniem dla procka? Nie wiem jak to zostało zrobione, ale szczerze mówiąc to ja nie wiem po co tam dzielenie jest, powinien być raczej...
Kol. Kaczor dziękuję za pomoc choć brak w książecce pełnych listingów nie był aż tak wielką preszkodą. Na początek interesują mnie pola struktury inicjującej licznik, dla przykładu : TIM_TimeBaseStructure.TIM_Period = 65535; TIM_OCInitStructure.TIM_Pulse = 10000; Takie zainicjowanie licznka i kanału w jaki sposob będzie skutkowało dla generowania przerwania...
Jestem w trakcie projektowania/testowania urządzenia które w uproszczonym schemacie ma wysyłać sygnał ( zapalać diodę ) po określonej w programie liczbie przerwań. Tarcza kodowa średnicy 55mm zrobiona z blaszki nierdzewnej 1mm posiada 10 rowków o szerokości 1mm oddalonych od siebie również o 1mm ( zdjęcie poniżej ) https://obrazki.elektroda.pl/9629815600_...
Witam I zaczęło się .... Mam taki problem Robię w stm32 tcpClient łączę się z PC [syntax=cpp]conn = netconn_new(NETCONN_TCP); err= netconn_connect(conn, &addr, 11001); for(;;) { ++Dev2PcState.counter; err= netconn_write(conn, &Dev2PcState, sizeof(Dev2PcState), NETCONN_COPY); vTaskDelay(500); }[/syntax] ten licznik zwiększam co 0,5 sekundy. W PC odbieram...
Może być:) Ale rzeczywiscie niektóre informacje mogły by być nie tak ukrywane. W RM0008 przy opisie TIM2 to TIM5 - Prescaler description - ani słowa, przy opisie rejestrów TIMx_PSC - też ani słowa, jeżeli chodzi o obrazek Clock Tree to chyba nie ma go w RM0008, jest w manualach konkretnych procesorów, ale dla STM32F103VC nic takiego pod tym obrazkiem...
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...
Sądzę, że jak to określiłeś ćwierkanie spowodowane jest błędem w programie, ponieważ na LPC1114 na znacznie wolniejszym zegarze 48 MHz odgrywana muzyka i to ze znacznie wolniejszego medium czyli karty SD poprzez interfejs SPI brzmiała przyzwoicie. Sugeruj się tym kodem: [syntax=c] LPC_TMR32B1->MR3 = 256 - 1;// podstawa czasu dla PWM LPC_TMR32B1->PWMC...
A jak się ma do tego sscanf()? Ok, to sporo pomogło, teraz jednak mam kolejny problem. To obsługuje mi przerwanie: [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++ >= 128) wp = 0; } }[/syntax] A tu jest funkcja, która wczytuje...
memcpy nie ma prawa blokować jakiegokolwiek timera. To jest zwykła funkcja biblioteczna, i na pewno nie sprawdza ktory akurat timer masz włączony i również nie ma kodu aby go wyłączyć. Memcpy jest najpewniej napisany w assemblerze i został odpowiednio zoptymalizowany. Kopiowanie duzej tablicy bajtów w pętli spowoduje kopiowanie się bajtu po bajcie,...
Mogę się mylić, ale w tym przykładzie kolega miga diodką wykorzystując GPIO a nie podpinając do wyjścia timera, więc gpio out pp może chyba być. Czy kol. qczek przypadkiem na koniec nie konfigurujesz ch1 w tim2 jako capture, czyli "łapiącego" i liczącego impulsy z zewnątrz? TIM_SetCompare1(TIM2, TIM_GetCapture1(TIM1) + CH1_PULSE ); Poza tym nie zauważyłem...
Jest to proste korzystasz z przerwań jakie generuje timer0 podobnie jak to opisał kolega z innego tematu tego fora w bascom napisał '************* Konfiguracja uC ***************** '***************************************... $regfile = "attiny2313.dat" $crystal = 16000000 Config Portb = &B11111111 : Portb = &B11111111 Config Portd = &B11111111...
Witam 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...
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ę...
Wpisując w licznik wartość JEDEN zostanie wysłany JEDEN element, po czym DMA się wyłączy. To co widzisz w debuggerze nie ma tu znaczenia, może bit faktycznie wciąż jest ustawiony - nieistotne, DMA nie działa po wysłaniu zadanej ilości danych. Nie wiem też absolutnie jakim cudem chcesz "ustawiać flagę nadawania" w rejestrze CR1, skoro ta flaga jest generowana...
Problem polega na tym, że potrzebuję 2 liczników do zliczania impulsów z 2 źródeł, a te źródła to piny PB6 i PB7, czyli jak wskazuje nota katalogowa uC odpowiednio kanały 1 i 2 timera TIM4: http://obrazki.elektroda.pl/5000204900_1... Myślałem, że jak są 2 kanały to każdy z nich może być źródłem sygnału taktującego i każdy kanał może...
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?
Nie wiem, jak się programuje przerwania na RPi, robiłem to na PC - na starym PC/XT dało się wyciągnąć powtarzalny pomiar impulsu z rozdzielczością us, ale na zablokowanych przerwaniach (poza tym, które uruchamiał mierzony sygnał), na współczesnych, nawet niezbyt szybkich, ns pewnie jest do osiągnięcia. Ale jeśli jest obsługiwane przerwanie akurat wtedy,...
Gorzej, jeśli algorytm tego nie gwarantuje - a ja właśnie takie urządzenia ostatnio głównie robię. A jaka jest różnica, czy nie nadąży na przerwaniach, czy przez DMA? ;] Jak nie nadąży, i tak któreś dane musisz zadeptać, albo przyblokować nadawce RTSem. A to może robić supervisor, którego częstotliwość odpalania jest już tylko zależna od głębokości...
OK, jakoś rozwikłałem tę zagadkę i udało mi się idpalić symulację w AVR Studio, nie wiem czy prawidłowo to zrobiłem ale działa bo w external tools configuration wpisałem po prostu jako location C:\Program Files\Atmel\AVR Tools\AvrStudio4\AVRStudio.exe a w working directory ${workspace_loc:/AVR test/Debug} i działa. Natomiast do kol Chopina bardzo wazne...
Witam! Mam kilka prawdopodobnie błahych spraw, ale nie rozumiem dlaczego tak, a nie inaczej. Ponieżej program wykorzystujący timer do migotania diod. [syntax=c]#include "stm32f10x.h" void TIM1_UP_TIM16_IRQHandler(void) { TIM1->SR&=~TIM_SR_UIF; // zerowanie flagi przerwania if(GPIOC->ODR!=0x300) { GPIOC->ODR=0x300; } else { GPIOC->ODR=0x000; } } int...
Ok po kolei bo widać trochę zamieszałem. Zarówno w kofiguracji O0, O1, O2, Os występuje ten sam problem. Wchodzi cały czas do funkcji obsługi przerwań. Hard fault przestał występować po aktualizacji biblioteki core_cm3.h i c. Moje inicjalizacje wyglądają następująco: dokładnie na odwrót jak chce. Przycisk wciśnięty -> Nie ma przerwania żadnego. Przycisk...
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...
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ść,...
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ć...
Gdzie ustawiasz TIM_Clock_Division_CKD? Powinno być na TIM_CKD_DIV1 (0) - to są bity CKD w TIM1->CR1. Być może tutaj masz ustawione dzielenie przez dwa. Co do bitów CKD, to są domyślnie ustawione na 0x00 i takie pozostają, nie zmieniam ich. Natomiast Jeśli chodzi o CKD, czy to przypadkiem nie odnosi się do zewnętrznego wyzwalania timera? 1/ nadużywanie...
Witam, Jestem początkujący w STM32 i w ogóle w Armach więc proszę o pomoc. Zmagam się z problemem uruchomienia trybu enkodera na STM32. Działanie tego powinno wyglądać następująco: Kręcę enkoderem w prawo bądź w lewo - ulega zmianie licznik timera8 co można zaobserwować pod TIM8->CR1 lub jak kto woli cośtam = TIM_GetCounter(TIM8); Mój kod inicjalizacji...
Witam, Zacząłem niedawno zabawę z STM32 i mam problem z przerwaniami oraz timerami. Chciałem uruchomić przerwanie zewnętrzne, a dalej przerwanie od timera co np 1sek. Jednak nie działa ani jedno ani drugie, czy ktoś mógłby nakierować mnie na dobrą drogę i powiedzieć co robię źle? Przeglądałem przykładowe aplikacje jednak dalej nie potrafię tego uruchomić....
Witam od paru dni mam problem z poniższym kodem. Program ma zliczać impulsy generowane przez SysTick - macha on nóżką PA8 i po zliczeniu 20 uruchomić przerwanie TIM1, co spowoduje zmianę stanu załączenia diody ( Pin PA5 ). Niestety dioda wg się nie załącza. uC STM32f411RE. Proszę o wyrozumiałość dopiero zaczynam przygodę z ARM. [syntax=c] #include "stm32f4xx.h"...
To kod, który u mnie na STMF107 działa - może znajdziesz jakieś róznice... W przerwaniu mam obsługę klawiatury 4x4 + kilka liczników, ale to tutaj nieistotne, więc nie zamieszczam. [syntax=c] //--------------------------------------... // Inicjalizacja TIM2 //--------------------------------------...
(at)BlueDraco hmm przerwania owszem i ich wielopoziomowosc jest przydatna ale tez nalezy pamietac ze rdzen ARM7TDMI ma niestety tez sporo gorzej rozwiazane niz Cortex-y... a male procesory to tez nie sa ;) Jednak nie o tym mialo byc... W sumie nie zawsze petla glowna jest zlym rozwiazaniem, czasami mozna w niej przeciez zbudowac maszyne stanow ktora...
Witam. Dla ćwiczebności napisałem sobie funkcję zwracającą ilość cykli zegara w celu pomiaru długości wykonywania funkcji itp. Aby to osiągnąć odczytuję "PENDSTSET" oraz stan licznika SysTick. Jednak pomiędzy tymi dwoma odczytami upływa trochę czasu i wartość licznika jestem w stanie skorygować znając czas jaki upłynął miedzy tymi dwoma instrukcjami...
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ą...
Witajcie. Aby nie zaśmiecać forum nowymi tematami podpinam się do tego. Mam podobny problem - nie umiem poprawnie skonfigurować TIM2 w STM32F103, tak aby pracował w trybie 'encoder interface mode'. Mam zamiar jako wejście dla enkodera użyć kanałów CH3 i CH4, które po zremapowaniu pinów są przyłączone do PB10 i PB11. Enkoder jakiego używam jest magnetyczny...
witam Podpiąłem włącznik pod gipo ustawiłem na nim przerwanie i zmienną która je zlicza. jak przycisk trzymam krótko to licznik powiększa się o jeden prawidłowo, przy dłuższym przytrzymaniu przycisku zliczenie ( przerwanie ) występuje na przyciśnięciu i puszczeniu guzika, proszę o pomoc [syntax=c]void Clock_init(void); void GPIO_init(void); void NVIC_init(void);...
Witam, mam problem z poprawną konfiguracją modułu Bluetooth. Chodzi o to, że na przetwornik ADC wyzwalany timer1 podaje sygnał z GPIOB i chcę próbkować go wg ustawień timera z częstotliwością co najmniej 500Hz. Dane pobierane są z rejestru ADC przez DMA do zadeklarowanego wcześniej buforADC (unsigned short int buforADC buforTx (unsigned char buforTx[4]={0};)...
witam, mam 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.
https://obrazki.elektroda.pl/3252078300_... Poniższy artykuł przedstawia – krok po kroku – wykonanie niewielkiego, kieszonkowego oscyloskopu cyfrowego. Nie jest on tak dobry jak zwykły warsztatowy oscyloskop, ale z drugiej strony można zabrać go niemalże wszędzie. Poza tym – nie wszystkie projekty DIY muszą mieć sens....
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....
Witam, chciałbym się zapytać, czy taki sposób implementacji/algorytmu sterowania mikrokontrolerem falownika do silnika indukcyjnego 3 fazowego, przy najprostszym sterowaniu skalarnym U/f = const., bez prędkościowego sprzężenia zwrotnego jest poprawny? https://obrazki.elektroda.pl/1341149300_... Założenia: - Wykorzystuje STM32F103 -...
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...
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...
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...
Witam, Po otrzymaniu przerwania od zewnętrznego przetwornika wchodzę do funkcji: void EXTI4_IRQHandler(void) { int b; b = c+d; //inna_funkcja(&b); if(EXTI_GetITStatus(EXTI_Line4) != RESET) { EXTI_ClearITPendingBit(EXTI_Line4); } } Program przechodzi przez dwie pierwsze instrukcje int b;b = c+d;.Po wykonaniu trzeciej czyli wywołaniu funkcji bibliotecznej...
Witam Niedawno zacząłem "zabawę" z zestawem Kamami ZL27ARM z procesorem STM32F103VB. Mam problem z przerwaniem od timera SysTick. Jest ono generowane 4 razy za często - miało być 1 raz na sekundę, a jest 4. Kwarc 8MHz, SYSCLK = 72MHz, SysTick_CLK= 72/8=9MHz czyli załądowanie do licznika wartości 9'000'000 powinno dać zgłoszenie przerwania co 1s, więc...
https://obrazki.elektroda.pl/4950580000_... Witajcie moi drodzy W tym temacie poznamy podstawy przerwań i timerów w PIC18F2550 . Na początek będzie krótki wstęp teoretyczny, a potem wszystko przerobimy dokładnie na praktycznych przykładach. Do lektury tematu przyda się ogólna wiedza na temat przerwań i programowania w C, choćby taka...
Witam. Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie i z tego co już się nauczyłem oraz co sobie w ReferenceManualu wyczytałem to wiem, że AVR'y odłożę na półkę:) Moja nauka jest w stylu 'bare-metal' wykorzystuję jedynie pliki nagłówkowe stm32f103xb.h i kilka od CMSIS które można wydobyć z STM'owych bibliotek, więc ich...
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...
Czesc, mam taki problem, wydawalo sie na poczatku ze banalny. STM32L4, UART pracuje w trybie circular, przy starcie wywoluje HAL_UART_Receive_DMA(), wszystko ladnie dziala do momentu kiedy wystapi blad transmisji. Gdy wystapi blad to w standardowym handlerze zwiekszany jest licznik bledow i w innym watku porownywany jest stan licznika i ponownie wywoloywane...
Próbuje mierzyć częstotliwość sygnału wykorzystując przerwanie i Timer2 Napisałem taki oto kod przy pomocy CubeMX: 249992 Hz i niby ok. Jednak znalazłem kurs STM32 na FORBOT ( 249986 Hz. I teraz nie wiem czy prawidłowo należy skonfigurować timer do tego zadania tak jak zrobiłem czy tak jak w kursie?
Dzień dobry Koledzy. Piszę kod w C#.NETMF dla STM32F429I-DISC1. Próbuję zrealizować takie działanie w którym wykorzystuję metody klasy UIElement. Jedna z metod obsługuje zdarzenie dotknięcia panelu dotykowego. Druga z metod ("Invalidate();") pozwala aktualizować treść wyświetlacza. Do tego mam timer który co sekundę generuje przerwanie inkrementujące...
Powrót małorolnego człowieka, a moderator burdel teraz zrobił. Zamiast zostawić potrzebne posty, to temat przeniósł do ??? Jaki mikrokontroler wybrać do... ??? Co to ma wspólnego z założonym tematem ? Jakiś nieogarnięty w temacie... Tylko spójrzmy na to obiektywnie - co kolega tymon_x sprawdził ? żeby nie było niedomówień! Otóż sprawdził (przepraszam...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
Jeżeli nie potrzebujesz do tego strobów na dodatkowych liniach, np. !WR, to w czym problem? DMA1_Stream1 = Channel_7, co daje request z TIM6. Skonfiguruj resztę DMA: Half-word, DMA jako Flow Controler, Burst: Single i adresy. Jeżeli zarezerwujesz sobie odpowiedni bufor, to przerwanie od Half Transfer i Transfer Complete załatwiają resztę. Do wyboru...
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...
Nie wiem o co chodzi, support STM mi powiedział, żebym wgrał kod do ramu oraz wektor przerwań. Cały problem od początku: Zadanie programu jest następujące: ze sterownika sczytuję wartości enkoderów i zapisuję je do pamięci flash. (powinno to być wykonywane timerem co 10ms). Następnie odczytuję te wartości z flasha w celu odtworzenia ruchu i odpowiednie...
Witam! Tworzę projekt, który polegać ma na bezprzewodowym połączeniu STM32F303 Discovery i HC-05 z ELM327 (wersja bluetooth). Jestem bardzo początkujący, jeśli chodzi o programowanie a zależy mi na tym projekcie, dlatego postanowiłem zwrócić się o pomoc. Korzystam z STM32CubeMX oraz Eclipse z wbudowanym rozszerzeniem „System Workbench for STM32”....
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...
Witam, Przerabiam książkę STM32 Aplikacje i ćwiczenia w języku C Pana Marka Galewskiego. Dotarłem do ćwiczenia 12c, w którym do sterowania diodami mają być użyte TIM1 oraz TIM2. TIM1 może generować przerwanie ogólne oraz przerwanie z kanału Compare. Dzięki temu łatwo możemy sterować dwoma diodami. Natomiast TIM2 może generować tylko przerwanie ogólne...
Witajcie, siedzę i szukam błędu w bibliotekach do obsługi NRF24L01. Skopiowałem je z biblioteki, którą wykorzystuje w ATmega8. Działa nawet dobrze tam, niestety na STM32F0DISCOVERY już nie chce. Będę bardzo wdzięczny za pomoc. To najpierw kody, które wyrażają więcej niż tysiąc słów ;) : main.c http://obrazki.elektroda.pl/4732813300_1...
Witam. Posiadam sensor ultradźwięków US015, który jest podobny do HCSR04. Chciałbym go obsługiwać przy pomocy mikrokontrolera STM32F429. W internecie znalazłem kawałek kodu, odpowiedzialnego za jego obsługę. Do jego obsługi wykorzystywane są 2 timery - timer7 jest odpowiedzialny za generację impulsu inicjującego pomiar (TRIG) - 10uS, a drugi liczy czas...
Staram się połączyć STM32F0 z kartą SD (w sumie to mikroSDHC), ale niestety marne są tego skutki. Próbowałem już kilka kodów znalezionych w internecie ale w końcu zatrzymałem się na znalezionym na jakiejś niemieckiej stronie.. Skompilowałem, wyskoczyło mi kilka błędów związanych z nazewnictwem i deklaracjami funkcji to je poprawiłem. Kod teraz wygląda...
Witam Borykam w sumie z dwoma problemami 1.Wysyłając dane przez usb w ostatniej fazie, żeby dane wysłać w rejestrze DOEPCTL ustawiamy bit DOEPCTL 31- EPENA (The application sets this bit to start transmitting data on an endpoint, The core clears this bit before setting any of the following interrupts on this endpoint: – SETUP phase done –...
Mam nastepujacy problem, probuje wywolac przerwanie zewnetrzne od przycisku ktore uruchomi mi licznik w celu eliminacji drgan stykow. Wszystko dziala dla przycisku podpietego do wyprowadzenia A0 ale dla przycisku podpietego do wyprowadzenia C13 juz nie dziala. Przy debagowaniu widze ze ciagle wchodzi mi w obsluge tego przerwania mimo ze przycisk nie...
Witam, Realizuję pracę inżynierską na zestawie uruchomieniowym ZL27ARM z mikrokontrolerem STM32. Praca jest w zasadzie gotowa, ale niestety nie działa do końca poprawnie. Praca jest tworzona głównie w oparciu o książkę STM32 Aplikacje i ćwiczenia w języku C. Środowiskiem programistycznym wykorzystywanym w pracy jest Keil uVision 5. W pracy wykorzystane...
Witam, Od pewnego czasu przestawiłem się z AVR na STM32, zbudowałem sobie proste ramię robota na 5 serv + sterownik Maestro od pololu, wszystko ładnie śmiga. Tydzień temu kupiłem sobie takie Gamepad: http://botland.com.pl/joystick/2560-game... . Chciałem za pomocą tego pada sterować ramieniem. I już na 1 kroku...
stm32 przerwać przerwać stm32 przerwać przerwać stm32
falownik sofar opinie czujnik lodówki amica przeróbka mocowania alternatora
aktualizacja esperanza ev107r resetuj dekoder
Piszczenie pralki Samsung WW80AA126AX - przyczyny i rozwiązania LG LAS455H - Jak zresetować soundbar?