Aby móc zmieniać remapowanie musisz włączyć zegar dla AFIO. [syntax=C]RCC_APB2PeriphClockCmd(RCC_APB... ENABLE);[/syntax]
TIM2->SR&=!TIM_SR_CC1IF ; // Zeruję flage - to inaczej TIM2->SR &= 0; Ten and to w jakim celu? Do autora ten wykrzyknik to herezja. Poprawne kasowanie : [syntax=c]TIM2->SR = ~TIM_SR_CC1IF; [/syntax] Flagi przerwania nie kasuje się na końcu obsługi. Ponownie się wykona.
No to skoro nic tam nie ma, to znaczy że nie następuje input capture. 4\/3!!
aktualnie mam kod do DMA: konfiguracja i2c gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ, GPIO_CNF_OUTPUT_ALTFN_OPENDRAIN,GPIO_I2C... | GPIO_I2C1_SDA); I2C_CR1(I2C1) |= I2C_CR1_SWRST; I2C_CR1(I2C1) &= ~I2C_CR1_SWRST; i2c_peripheral_disable(I2C1); i2c_set_clock_frequency(I2C1, I2C_CR2_FREQ_36MHZ); i2c_set_fast_mode(I2C1);...
w takim razie jak poprawnie włączę kanał 1 jako pwm a kanał 3 jako ic?
A tak nie wybiera się funkcji alternatywnych? [syntax=c] BUTTON_PORT->MODER |= GPIO_MODER_AF << (IC_TEST << 1); [/syntax]
Panowie mam chyba zaćmienie , pomroczność jasną albo skutki Covid-19. Procesor STM32L552 STM32CugeIDE i HAL Mam zmierzyć częstotliwość sygnału prostokątnego ok. 2,8 – 3,1 MHz FCPU 100 MHz Licznik Tim2 kanał 1 Clock source - InternalClock Channel 1 - Input Capture direct mode Tim2 global interrupt - enabled. Przerwanie działa void HAL_TIM_IC_CaptureCallback(TIM_Handl...
Zrozumiałe że nie rozumiesz bo nie napisałem wszystkiego :) Zasilam enkoder z 3.3V, nie tak jak rekomendują między 4,5-5,5V. Nie chciałem aby sygnał z enkodera był większy od V zasilania mikrokontrolera, żeby nic nie upalić. Czytałem w Data Sheecie że jest coś o 'five-volt tolerant' port/pin ale nie mogłem zrozumieć dokładnie o co chodzi. Działał mi...
W timerach STM32 jest coś takiego jak PWM Input Mode który służy do sprzętowego pomiaru wypełnienia i okresu PWM - szczegóły są w np w Reference manual. O ile jednak dobrze pamiętam to jednym timerem sprzętowo można mierzyć tylko jeden sygnał PWM. Na jednym timierze 4 kanały pewnie trzeba będzie mierzyć programowo z wykorzystaniem Input Capture Mode
Najprościej podpiąć oscyloskop i zobaczyć co się naprawdę dzieje z sygnałem po podpięciu Timera albo od razu wtórnik na tranzystorze.
No ale czemu nie przejrzysz DOKŁADNIE manuala do tego układu? Przecież w nim są szczegółowo opisane tryby pracy takie jak input capture, czy PWM capture (czy może input PWM, nie pamiętam jak on się nazywa) - w tych trybach właśnie masz zmierzony czas impulsu. Zamiast brnąć na ślepo po prostu przejrzyj reference manual, rozdział o timerach i wszystko...
gaskoin -> No właśnie o to pytałem od początku. Widocznie źle zadałem pytanie :) Dokładnie tak samo (albo bardzo analogicznie) robiłem w xmega. STM32 to dla mnie nowość, dopiero zaczynam a właściwie to tylko pobawiłem się troszkę w wolnej chwili. Wgłębiał się będę w najbliższym czasie przy okazji pracy dyplomowej. Czyli skoro już się rozumiemy o co...
Żeby nie zakładać oddzielnego wątku - mam problem z włączeniem przerwania na TIM4. Wszystko niby skonfigurowane - GPIOB.9 jako wyłapanie przerwania: /* TIM 4 intetrupt pin PB.7 channel 4 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); RCC_APB1 dla TIM4...
Jak dla mnie to nadal nie jest do końca jasne jak działa ten układ po przeczytaniu opisu. Rozumiem na razie tyle, że bajty wysyła się po SPI i tyle Dalej sygnał zegara ze SPI odpala timer (input capture trigger, zajrzyj do PDFa) generujący impulsy i DMA kopiujące wartość z portu F do licznika timera. Dzięki temu timer przeskakuje cykl jeśli na linii...
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...
Wszystkie funkcje arduino-embedded powinny działać. Czyli obsługa i2c, 1wire, spi, uart, operacje na pinach gpio. Dlaczego? Bo chociaż czasem przez różne rejestry to w zasadzie robią to samo więc można wysokopoziomową funkcją "przykryć" różnice sprzętowe. Proste rzeczy jak PWM, input capture itp. też powinno się dać, natomiast liczników jest całe mnóstwo...
Ja troszkę odsunę się od odpowiedzi. I powiem tak: Jeśli poznasz dobrze jedną architekturę w raz z całą otoczką, tzn sposobami debugowania, posługiwania się narzędziami. Nauczysz się dobrze kodzić i nie mam tu na myśli napisania czegoś co działa, bo to dopiero 20% sukcesu. Bo niezawodność czytelność kodu i łatwość modyfikowania jest również ważna i...
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...
AT90PWMx - Produkt w fazie zakończenia produkcji. Nie ma sensu w to inwestować. ATTiny26 - zupełnie bez sensu jeśli idzie o falowniki. Praktycznie żadnego zysku względem mega88. ATXMEGAxx - od biedy może być do nauki. Ale pamiętaj o upierdliwości ADC w trybie single ended (offset), braku synchronizacji pracy liczników z jedną podstawą czasu, pomiar...
Jakieś małe opóźnienie i kolejny raz sprawdzenie stanu No przecież po to Ustawilem przerwanie co 30ms. To jest właśnie opóźnienie, którego potrzebujesz :) W kolejnych wywołaniach tego przerwania sprawdzasz sobie stan poprzedni i porównujesz z bieżącym. Jeśli są takie same, to uwzględniasz zmianę. Dodano po 8 Ewentualnie spróbuj podejścia z filtrami...
To także mam zrobione (dużo wcześniej w samym mainie na początku odpalam wszystkie porty i afio). Ogółem z testów wynika jakby wogóle nie były podpięte piny kanałów 2 i 4. Już sprawdziłem milion możliwości ustawień, żadne nie prowadziło do jakiejkolwiek reakcji na impulsy na tych pinach.. Cytując manuala: Bits 9:8 CC2S[1:0]: Capture/Compare 2 selection...
Proszę kod bez dodatkowych pustych lini. biblioteka [syntax=c] /* Includes ----------------------------------------... #include "TC.h" #include "systick.h" #include "GLCD.h" #include <stdio.h>; /***************************************... * Function Name : MAX31855_SPI_Init * Description...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
(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...
NA STM32F można też w tym celu użyć trybu timera przwidzianego dokładnie dla takiego zastosowania - "PWM input mode", z automatycznym zerowaniem timera po wykryciu jednego ze zboczy, co zapewne jest lepszym rozwiązaniem w tym konkretnym przypadku. W czym to będzie lepsze, od zaproponowanego przeze mnie capture mode z automatycznym zerowaniem po wykryciu...
Znalazłem w końcu ale tam też nic ciekawego nie ma, są problemy z input capture ale tego trybu nie używam. Idiotyczną nawigację na stronie ma STM.
A jakby taki pomysł wypalił: Ustawić Timer jako Input Capture reagującego na obydwa zbocza sygnału. DMA skonfigurować na żądania od Timer i jako Circular buffer, Periph -> Memory. Analizować w wątku bufor kołowy z DMA, ślędząc licznik transferu i ładować do innego bufora wykryte stany 1 i 0 na podstawie róźnicy czasu obydwu zbocz. Z innego wątku ściągać...
Witam, próbuje znaleźć dobry sposób na pomiar amplitudy impulsu PWM. Zakres zmian wypełnienia 5 % do 95 %. Czestotliwosc sygnalu sie nie zmienia i wynosi 1 KHz. Mój pomysł polega na tym, że po wychwyceniu zbocza narastajacego odpalam ( w przerwaniu od input capture) timer ktory co 10 us ( 5 % z 1 ms to 50 us) trigeruje pomiar ADC poprzez DMA (czyli...
Po pierwsze: jak często jest ono zgłaszane? Przerwanie jest zgłaszane z częstotliwością 1 kHz. DCMI odbiera dane non stop. Po trzecie: co robi AKTUALIZUJ_PWM (pwm_lookup_table aktualizuje rejestr PWM poprzez wywołanie funkcji [syntax=c]TM_PWM_SetChannelPercent(&... TM_PWM_Channel_1, 100-x);[/syntax] która wywołuje [syntax=c]TM_PWM_Result_t...
Witam. Mam następujący problem. Potrzebuje odczytać temperatury z układów MAX6675. Na początek testuje komunikacje z jednym układem. O ile wykorzystuje wyjście NSS mikrokontrolera to wszystko działa należycie. Gdy jednak chciałbym aktywować MAX'a innym wyprowadzeniem niestety nie przynosi to rezultatu. Ciekawe jest to, że przy użyciu debuggera program...
Próbowałem dziś skonfigurować zgodnie z radami niestety nic z tego. Bardzo bym chciał wiedzieć czy SPI jest dobrze skonfigurowane . Pozwoliło by mi wykluczyć część programową, może uszkodzony jest układ. Termopare wykluczam. Sprawdziłem dwie na obu to samo. Na próbę zwarłem wyprowadzenia max6675 od termopar i nadal to samo. Bardzo prosze o sprawdzenie...
No to kiepsko. Przeczytałem sobie kilka razy rozdział o GPIO aby znaleźć informacje maksymalnej szybkości odczytu "danych wejściowych". Wiem, że maksymalna prędkość 50 MHz w przypadku pracy jako wyjście jest nieosiągalna przez proste machanie pinami. W przypadku wejścia czytam, że: "The Input Data register (GPIOx_IDR) captures the data present on the...
Jak w temacie, od dłuższego czasu nie mogę sobie poradzić z skonfigurowaniem DCMI tak by na rejestrze DCMI->DR pojawiły się dane. Próbuję pobrać obraz z kamery MT9D111. Wszelkie próby nawet z DMA ( którego nie chcę na razie używać ) kończyły się fiaskiem, więc proszę o pomoc kogoś kto zna odpowiedź na moje pytanie. Układ realizowany jest w oparciu...
Witam. Postanowiłem zgłębić tajniki mikrokontrolerów STM32. Wybór padł na procesor STM32F3 Discovery. Mam problem z poniższym kodem. Jest to przykład działania przetwornika ADC. Problem polega na tym, że nie wiem dlaczego to nie działa. Uruchamiam debugger, biorę krokową pracę, a program w zasadzie zatrzymuje się na linii ADC1ConvertedVoltage jest równa...
Witajcie, Zmieniam właśnie w moim projekcie gyro i akcelerometr na cyfrowy MPU 6050 i mam problemy z i2c (pierwszy raz tego czegoś używam :). Problem jest taki, że przy odbiorze danych po losowej ilości odebranych danych (kilka do kilkunastu odczytów, proc się zawiesza na 99% tutaj [syntax=c] // disable acknowledge printf("disable acknowledge\n\r");...
Funkcja inicjalizująca wywołuje kilka innych, więc żeby po trochu nie wstawiać kodu, oto cały plik RC5_IR_Emul_Receiver.c : [syntax=c]/** ****************************************... * (at)file STM32F10x_RC5_Receiver_Lib/src/RC5_IR_Em... * (at)author MCD Application Team * (at)version V1.0.0 * (at)date 03/16/2010...
Od tego zaczałem - od czytania Manuala, ale nic nie rozumiem. Nie mam dużego doświadczenia. Coś tam kombinuję, ale nie działa jak trzeba. Żeby zrozumieć instrukcję, trzeba znać używane tam pojęcia. Czy timer ma pracować w trybie capture? Byłbym wdzięczny za podpowiedź które rejestry ustawić. Wybrałem TIM4 i wejścia GPIO dla kanałów B6, B7, B8, B9, które...
Witam, chciałbym zczytać dane z enkoderu, mam jeden podłączony do PB6 i PB7,a drugi do PB3 i PA15 i posiadam STM32f103RE Mam 16 impulsów na obrót i nie moge nic zczytać do zmiennych. Bardzo proszę o pomoc bo siedzę juz 4 dni i nic nie działa Oto mój kod: [syntax=c] void Encoder_Config(void) { //Konfiguracja timerow //1. GPIO_InitTypeDef GPIO_InitStructure;...
Zmiana przypisania funkcji jakie mają pełnić dane wyprowadzenia nie jest możliwa. Jeżeli dobrze zrozumiałem to żeby móc wykorzystać dane wyprowadzenie do wykrycia zbocza narastającego/opadającego z wykorzystaniem Timera to wyprowadzenie musi mieć możliwość pracy w trybie TIMx_CHx. Na tej podstawie widzę, że to wyprowadzenie (PE0) nie ma takiej funkcji...
W funkcji System_conf w której narazie jeszcze korzystam z bibliotek od ST :-/ [syntax=c][/syntax] void System_conf(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_Configuration(); //System Clocks Configuration NVIC_Configuration(); //NVIC Configuration RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_DMA1 ,ENABLE);...
Witam Pracuje obecnie nad projektem odbiornika sygnały DMX512. Sprawa wygląda następująco: -Sygnał danych czytany jest z urządzenia zwane Kwamatik USB2DMX, obsługiwane przez program Q Light Controller. „Po drodze” do uC trafia jeszcze na driver RS485 a potem na PIN RX UART1 oraz PIN PB9 skonfigurowanego jako wejścia dla Timera 11 pracującego...
Witam, Mam jeden z dwóch często występujących problemów. Nie wiem czy to wina konstrukcji czy kodu. Z napięcia około ~12V mam zrobiony dzielnik napięcia (4K7 i 8K) tak, że na wyjściu mam około 2.44V. Po wgraniu kodu otrzymuje następujące wyniki: 2715 $ 2723 $ 2721 $ 2718 $ 2717 $ 2715 $ Jak widać, rozbieżność jest w granicy moich oczekiwań jak na rezystory...
Problem dotyczy wykorzystania wejścia licznika w trybie Input Capture wraz z DMA. Celem jest pomiar częstotliwości sygnału i jego wypełnienia. Na samym początku dodam, że jest jedno ograniczenie, które związane jest z wykorzystaniem pojedynczego wejścia licznika. Oczywiście, można skonfigurować tryb PWM Input, ale niestety w tym przypadku będą wykorzystane...
1. Proponuję zapomnieć o arduino. 2. Nucleo ma debugger, który Ci się bardzo przyda. 3. Jak mierzyć - najlepiej obydwiema matodami. ADC + CMSIS-DSP -> robisz analizę widmową i znajdujesz największy "bin". Potem mieniasz próbkowanie aby jak najbardziej ten "bin" pasował. Do tego komparator (bo niestety STM32103 to dość stara i prosta konstrukcja - i...
mogłeś nie przeczytac uwagi Te Callback to nie zawsze działają jak by się chciało. HAL lubi włączać przerwania wszystkie z możliwych. Najlepiej swoje funkcje umieszczać w pliku "stm32f4xx_it.c"" Przykładowo robię tak: [syntax=c] void TIM1_UP_TIM10_IRQHandler(void) { /* USER CODE BEGIN TIM1_UP_TIM10_IRQn 0 */ if (__HAL_TIM_GET_FLAG(&htim1, TIM_FLAG_UPDATE)...
Chcę w jakiś sposób okiełznąć USART, na razie bez DMA. Korzystam z gotowego przykładu, jednak pustki w terminalu. Fizycznie : GND przejściówki USB RS232 podłączony z GND disco, RX, TX kros. stm32f10x_usart.c [syntax=c] #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include <stdio.h>...
Proponuję użyć dowolnego uC z dwoma licznikami, ale niekoniecznie atmega8 ;) Pierwszy pracuje w trybie pomiaru częstotliwości lub pomiaru czasu (Input Capture). Drugi pracuje jako generator przebiegu wyjściowego, pędzony np. z zegara systemowego. Wartość zmierzona przez pierwszy licznik jest argumentem funkcji modyfikującej częstotliwość i/lub wypełnienie...
Ja pisałem o metodzie cyfrowej. Przecież to są pojedyncze linijki kodu. Heterodyny: pobieranie danych z tablicy sinusa (albo po prostu liczenie sinusów, jak ktoś ma odpowiednio mocny procesor). Mieszacze: Zwykłe mnożenia. Filtry: Formuła z kilku mnożeń i kilku dodawań. Miałem to gdzieś ale nie mogę znaleźć kodu. Za to znalazłem kod do innej metody....
https://obrazki.elektroda.pl/4768835200_... Introduction to the course In order to understand what kind of device we will be designing today, let's first briefly recall what soldering stations generally are, and how they differ from each other. The entire lower price segment of such equipment, as you might guess, is captured by Chinese...
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...
Bardzo prosze o pomoc! Mam czujnik, którego sygnal chcialbym nie tylko móc ujac "capture" jak w ponizszym programie ale równiez móc spisac wynik z "capture" na inny pin. Nie mam pojecia jak ten Pin odbiorczy skonfigurowac. Tu poczatek konfiguracji capture. void timer3_konfig(void) { // TIM3 do pomiaru nadchodzacego sygnalu PWM z czujnika TIM_ICInitTypeDef...
Witam, udało mi się skonfigurować TIM1 do pracy w trybie PWM z dead time'em. Poprzez dolutowaną złączka podłączam go do przekształtnika i 'kręce' silnikem - tutaj wszystko jest ok. Potrzebuję dokonać pomiaru 3 prądów z przekształtnika, napięcia Udc oraz nap 1 fazy - do tego celu stworzyłem i zlutowałem układ oparty na wzmacniaczach TL072CN bo jak wiadomo...
input capture stm32 capture input input capture
paliwowy scania napiecie sterowania driver wzmacniacza
kompresor samochodowy kompresor samochodowy
Dlaczego z zasilacza LED wychodzą dwa przewody 12V? Wymiana wężyka w drzwiach lodówki Samsung - krok po kroku