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...
w takim razie jak poprawnie włączę kanał 1 jako pwm a kanał 3 jako ic?
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
Myrek1: DMA wyzwalasz timerem, nie zmianą stanu portu. W dotychczasowych STM32 jedynym sposobem na wyzwolenie DMA przez port jest użycie na tej linii trybu capture timera - i wtedy oczywiście DMA wykona się w kilka cykli zegarowych po zmianie stanu linii. Na 80 MHz STM32L4 jest to czas ok. 140 ns. W przypadku wyzwolenia DMA przez timer w trybie compare/PWM...
Główne różnice to obecność "zanegowanych" sygnałów wyjściowych (OCxN) z opcjonalnym deadtime oraz wejście "hamulca" (BKIN). Właśnie dlatego go szkoda. Timery w STM32 są niesamowicie rozbudowane Tym bardziej szkoda takiego całego timera jako dzielnika /2. Ale udało się-wykombinowałem. Wymagało zewnętrznego połączenia wyjścia np ch3 na który mam wyprowadzony...
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...
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...
BlueDraco dzieki za uwagę, powinno być : TIM1->CCMR1 |= TIM_CCMR1_CC1S_0; Teraz coś już zlicza (jest jakaś inna wartość niż zero w rejestrze CR1 oraz zmiennej get_counter). Konfigurację podstawy czasu muszę tylko ustawić poprawnie. PS. Pierwsze koty za płoty. Jednak można pracować z STM32 bez bibliotek. Tylko trzeba jeszcze lepiej zapoznać się z rejestrami...
Aby móc zmieniać remapowanie musisz włączyć zegar dla AFIO. [syntax=C]RCC_APB2PeriphClockCmd(RCC_APB... ENABLE);[/syntax]
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...
No wiec tak, te dwie rzeczy są takie same w obu twoich przykładach i ich nie zmieniałem: __main_stack_size = 0; __process_stack_size = 1024; Przedstawiam poniżej to co teraz mam w moim projekcie: STM32F103RC_rom.ld [syntax=c]/*****************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Witam Bardzo proszę o pomoc w konfiguracji programu OpenOCD. Męcze się już drugi dzień, czytam fora i manuale, już ściągnąłem kilka wersji oprogramowania i nic:/ Problem jest następujący. Wykonałem układ turtelizera2 i mam do niego podłączony swój układ z AT91SAM7S64 na pokładzie (dodam że pod CrossStudio wszystko chodzi bezbłędnie i układ był już testowany...
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
Wydaje mi się że mnie plik wygląda okay [syntax=c] /** ****************************************... * (at)file startup_stm32f030xc.s * (at)author MCD Application Team * (at)version V2.3.0 * (at)date 27-May-2016 * (at)brief STM32F030xc/STM32F030xb devices vector table for Atollic TrueSTUDIO toolchain. * This module performs:...
Witam. Mam następujący problem. Po raz pierwszy uruchamiam na tych procesorach magistrale SPI i mam z tym duże problemy. Układ podłączyłem tak jak w datashecie maxa [url=http://datasheets.maxim-ic.com/en/d... MAX6675.pdf Próbowałem skonfigurować stm'a w następujący sposób: [syntax=c] ...... #define NSS_0 GPIOB->BSRR=GPIO_BSRR_BR12;//L #define...
Cześć! Mam problem z procesorem stm32f107, z płytki waveshare port107v. Wszystko działało dobrze, mogłem debugować, wgrywać flash etc, aż w pewnym momencie openocd przy połączeniu wyświetla mi takie błędy: Open On-Chip Debugger 0.7.0 (2013-05-05-10:41) Licensed under GNU GPL v2 For bug reports, read http://openocd.sourceforge.net/doc/d...
Witaj, Popatrz sobie do datasheeta. Są tam informacje, kiedy pewne instrukcje nie powinny być przerwane przez przerwanie.Chodzi mi o takie wzmianki jak: EV6: ADDR=1, cleared by reading SR1 register followed by reading SR2... Może to powoduje usterkę. Zobacz sobie notę aplikacyjną: an2824 i odszukaj miejsca gdzie powinny być wyłączone przerwania. Jeżeli...
Zajrzyj do Elektroniki Praktycznej z lutego br. Parę rzeczy masz źle w kodzie. Do przyzwoitej obsługi potrzebujesz trzech kanałów jednego timera STM32, z czego jeden w trybie capture obu zboczy. żadnych innych przerwań ani opóźnień programowych nie trzeba. Timera nie trzeba zatrzymywać ani restartować - chodzi w ruchu ciągłym i sam inicjuje pomiary....
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
No to skoro nic tam nie ma, to znaczy że nie następuje input capture. 4\/3!!
Dzięki za odpowiedzi! Zainstalowałem najnowszą wersję OpenOCD v0.5. Trochę zmieniły się komunikaty, jednak błąd jest cały czas podobny... Poniżej wklejam treść: Info : only one transport option; autoselect 'jtag' 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 Info : clock speed 1000 kHz Info : JTAG tap: stm32.cpu tap/device...
Ja to sobie podzieliłem na równe wymierne części, to tylko taki przykład z tym 0xFFFF. Odbieraniem zajmuje się właśnie DCMI, po wywołaniu "DCMI->CR |= DCMI_CR_CAPTURE;" wszystkie dane po kolei są przejmowane na rejestr danych w DCMI. Bez wykasowania flagi CTCIF7 program zostaje na zawsze w przerwaniu. Jak u Ciebie wyzwalany jest odbiór danych ? DMA...
Heh, faktycznie niepotrzebnie straszę, jeśli zakładamy, że konstruktor ma CAN tu, gdzie jest default ;] Znam te "kilka stron" z erraty na temat gryzienia się remapniętych AF. I oprócz CANa nigdy szopek nie miałem, a już zdążyłem remapować i używać dosyć udziwnionych konfiguracji SPI,UARTów,timerów compare i timerów capture, mimo tej erraty ;] BTW, STM32...
Witam, Wpadła mi w ręce płytka prototypowa z STM32f103 na pokładzie wiec pomyślałem że spróbuję swoich sił z tym mikrokontrolerem. Jak dotąd programowałem hobbystycznie głównie 8bitowe AVR-y i z nimi mniej lub bardziej sobie radzę. Ale do rzeczy wymyśliłem sobie że w projekcie zaprzęgnę do pracy Timer2, którego zadaniem będzie po wywołaniu funkcji Beep();...
Po podłączeniu dostaję takie błędy od OpenOCD: Open On-Chip Debugger 0.5.0-dev (2011-06-07-18:11) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxyge... Info : only one transport option; autoselect 'jtag' 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 #0 : stm32.flash...
TIM_Pulse to jest zwykły współczynnik wypełnienia sygnału. TIM_ClockDivision jest to podziałka zegara -> timer masz taktowany określonym zegarem, który jeszcze możesz odpowiednio podzielić. TIM_OC1PreloadConfig() robi to co jest w opisie funkcji, nie wiem co więcej dodać. Ponadto: CCR1: "It is loaded permanently if the preload feature is not selected...
Pinu SPI_NNS (PA4) nie używam resjestr SPI->CR2 jest równy 0 a z resjestru CR2 wynika: 1-line bidirectional data mode selected 1-Output enabled (transmit-only mode) 0: CRC calculation disabled 0: Next transmit value is from Tx buffer 0: 8-bit data frame format is selected for transmission/reception 0: Full duplex (Transmit and receive) SSM:0: Software...
jaki sposób można to zmieniać na rejestrach? Jest rejestr TIMx capture/compare enable register (TIMx_CCER). https://obrazki.elektroda.pl/9768584600_...
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...
Witam, Jestem dość początkujący jeśli chodzi o STMy dlatego proszę o wyrozumiałość. Do pamięci flash procesora wrzuciłem kod, który prawdopodobnie zawiesza procesor. Od tego momentu nie mogę się połączyć z uC używając OpenOCD. Komunikat j/n: D:\ARM\openocd-0.5.0\bin>openocd-... -f interface/olimex-arm-usb-ocd.cfg - f target/stm32f1x.cfg...
[syntax=armasm]g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /*...
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...
Od kilku dni zabawiam się kamerką OV7670, próbuję pobrać z niej obraz w formacie RGB565 i o mało ambitnej rozdzielczości QCIF(bo taki zmieści się w całości w RAM). Program, który napisałem ma za zadanie w przerwaniu pobrać obraz do pamięci, zatrzymać przerwanie i zapisać zawartość do pliku bmp. Oto mój kod : Otw. pliku 0 Init OV7670 1 System Clock 120...
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...
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...
Ż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...
W przerwaniu mam zamiar uruchomić timer1, w którym wykorzystuje Input Capture by zatrzasnąć kolejne zbocze opadające Timer powinien sprawdzić stan pinu za jakiś czas np 30ms. Powinieneś to jeszcze połączyć z wykrywaniem zarówno zbocza opadającego jak i narastającego. Zależnie od tego, które zbocze wywołało przerwanie zwiększasz lub zmniejszasz zmienną...
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...
1. Schematu nie widzimy - tam najpierw szukłabym problemu. 2. Większość wyprowadzeń STM32 toleruje 5V. Nie jest chyba problemem podłączenie czujnika do tych właściwych. 3. Trig jest wejściem zgodnym z TTL - nie ma potrzeby stosowania niczego po drodze. ECHO jest linią dwukierunkową - co ma zrobić tranzystor? 4. Mnie martwi to, że nie używasz timera...
Najprościej podpiąć oscyloskop i zobaczyć co się naprawdę dzieje z sygnałem po podpięciu Timera albo od razu wtórnik na tranzystorze.
Myślę myślę i nie mogę wymyślić jak JEDEN timer mógłby liczyć DWIE rzeczy... Poza tym jaki dokładnie jest problem, bo w kodzie nie ma nawet pół słowa o kanale drugim, więc nie dziwne, że nie działa... Nie ma też sensu odczyt wartości capture, bo ty TAKTUJESZ timer tym zewnętrznym sygnałem. Czy poza dokumentacją do cudownych funkcji API przejrzałeś dokumentację...
Zmieniłem : 2. change The initial stack pointer in the vector table: (void *)&pulStack[STACK_SIZE-1]... to (void (*)(void))((... long)pulStack + sizeof(pulStack)), w startup_stm32f10x_md_vl.c Dalej to samo. [syntax=c]/** ****************************************...
Nie przemawia to do mnie, w stm32f0xx.h mamy coś takiego: #define TIM_SR_CC1IF ((uint16_t)0x0002) /*!<Capture/Compare 1 interrupt Flag */ jak na mój gust zapis: TIM1->SR = ~TIM_SR_CC1IF; spowoduje najpierw zanegowanie TIM_SR_CC1IF a potem przypisanie do rejestru SR, czyli de facto wrzucimy tam wartość 0xFFFD. Zapis: TIM1->SR...
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.
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...
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...
Tak, też mi sie to wydawało logiczne, ale CC2E:Capture/Compare2 output enable refer to CC1E description Bit0 CC1E:Capture/Compare1 output enable CC1 channel configured as output: 0: Off - OC1 is not active. 1: On - OC1 signal is output on the corresponding output pin. jakieś pomysły?
próbuje uruchomić openocd i rlinka na targecie stm32 primer (circle). Komunikacja z Ride7 działa, ale chciałem skonfigurować eklipsa tak jak radzi Freedie. Skompilowałem openocd 0.4.0 odpalam: G:\arm\openocd\tcl>openocd openocd -d 3 -l openocd.log -f interface/rlink.cfg -f board/stm3210e_eval.cfg lub G:\arm\openocd\tcl>openocd openocd -d 3 -l openocd.log...
stm32 input capture capture timer stm32 input capture stm32
tecumseh ustawienie zaworów kocio instrukcja defil elektronik
samsung rb31ferncsa samsung rb31ferncsa
Zastosowanie większego radiatora w MDS432 Kodowanie płytki klucza z transponderem BMW E46 320d 136KM 2000 – EWS 3, PCF7935, AK90+