Aby móc zmieniać remapowanie musisz włączyć zegar dla AFIO. [syntax=C]RCC_APB2PeriphClockCmd(RCC_APB... ENABLE);[/syntax]
No to skoro nic tam nie ma, to znaczy że nie następuje input capture. 4\/3!!
no wlasnie nie mam JTAGa i z kazda chwila coraz bardziej tego zaluje :P
w takim razie jak poprawnie włączę kanał 1 jako pwm a kanał 3 jako ic?
To już nie rozumiem, co jest źle. 1) Konfiguracja timera 2) Nie można podejrzeć zmiennej podczas debug
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...
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....
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...
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...
Chyba tak jest, tutaj plik startup_stm32f10x_md.c [syntax=c]/** ****************************************... * (at)file startup_stm32f10x_md.c * (at)author Coocox * (at)version V1.0 * (at)date 12/23/2009 * (at)brief STM32F10x Medium Density Devices Startup code. * This module performs: * - Set the initial SP * - Set...
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...
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...
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...
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...
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...
jaki sposób można to zmieniać na rejestrach? Jest rejestr TIMx capture/compare enable register (TIMx_CCER). https://obrazki.elektroda.pl/9768584600_...
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
Skompilowałem openocd wydając polecenia: ./configure --enable-parport --enable-parport_ppdev make Przełączyłem się nawet na konto root'a ale dalej to samo. EDIT: Spróbowałem skompilować z opcją: ./configure --enable-parport --disable-parport_ppdev Jednak teraz wywala: Open On-Chip Debugger 0.5.0 (2012-01-31-14:10) Licensed under GNU GPL v2 For bug reports,...
Witam Nie potrafię tego procka zaprogramować. Miałem go na układzie z wyprowadzeniami UART1 + BOOT1 i 0 Próbowałem programować lock pickiem od freddiego (wyjście UART, bootloader) ale nic z tego (a wcześniej programowałem bliźniaczy układ STM32F103R4T6A taką samą metodą i poszło bezproblemowo). Następnie wyprowadziłem pełnego JTAGA z pinów procesora,...
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...
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...
Zrobiłem wtórnik na tranzystorze (najpierw musiałem przeczytać co to jest - uczę się dopiero elektroniki) i śmiga. Dzięki!
Do poprzedniego postu dopisałem takie coś, jakby umknęło. Ale już łacze na sztywno i robię Twój test. Przy połaczeniu gniazda J-tag z mikrokontrolerem tylko jedno miałem nie do końca pewne połaczenie: nSRST z pinu w manualu Freddiego mam podłaczone do pinu NRST kostki. Po rozpięciu połaczenia układ w ogóle nie gadał z j-tag'iem (świeciły tylko 2 zielone...
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...
Ż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...
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...
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...
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...
Jest gdzieś skrótowa dokumentacja do ustawień CubeMX, aby zaczynający programista się nie zniechęcił? Nawet jeśli korzystasz z CubeMX to zacznij najpierw od jakiejś literatury. "Poradnik Szczywronka" takie rzeczy dość łopatologicznie tłumaczy tzn. podstawy działania timerów (i nie tylko). Na pierwszym zrzucie mamy włączony OPM na drugim wyłączony....
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...
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
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...
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...
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ę...
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...
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...
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.
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ć...
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...
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...
Co do TIM3->SR &=~TIM_SR_UIF; przyznam, że dalej nie rozumiem jaka jest różnica w obydwu przypadkach kasuje tylko JEDEN bit nie CAŁY rejestr. W jednym przypadku zeruje jeden bit, w drugim przypadku zmieniam jego stan na przeciwny. Operacja logiczna na którą się tak uparłeś i zamierzasz bronić do ostatniej kropli krwi generalnie ma same wady i zero...
To ja proponuję tak -> licznik liczący od zera w górę z częstotliwością dobraną tak aby uzyskać założony zakres pomiaru prędkości. Czujnik podłączony do wejścia "capture". Blok capture skonfigurowany tak, aby po odebraniu sygnału z czujnika następowało przepisanie wartości rejestru licznika do jednego z rejestrów CCR. Na dokładkę włączony "Slave Mode"...
Przy włączaniu taktowania różnych peryferii: [syntax=c]RCC -> APB2ENR =rozne peryferia |RCC_APB2ENR_SPI1EN;[/syntax] Funkcja inicjująca SPI: [syntax=c] CS_GYRO=1; CS_ACC=1; //Configuring the SPI in master mode (RM str. 661), NSS softwere , fplc1/8 72MHz/8 = 9MHz //Master mode,1: CK to 1 when idle,1: The second clock transition is the first data capture...
Hej, chciałbym przesłać plik audio w jednym z formatów: wave, mp3, flac; przez bluetooth korzsytając z Serial Port Profie (wysyłam go z płytki z STM32) tak, aby odtwarzany był na bieżąco. W tym momencie mogę np. odtworzyć przesłany wave, ale zawsze będzie to odtwarzanie pliku od początku do fragmentu, ktorego dotyczy ostatnia paczka danych. Wygląda...
Poniżej wspomniany "stary" czyli at91sam7s256-wiggler.cfg . Zabieram się za zmiany i dam znać co i jak. at91sam7s256-wiggler.cfg #define our ports telnet_port 4444 gdb_port 3333 #commands specific to the Amontec JTAGKey interface parport parport_port 0x378 parport_cable wiggler jtag_speed 0 jtag_nsrst_delay 200 jtag_ntrst_delay 200 #reset_config <signals>...
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...
[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 /*...
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...
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...
Próbuje uruchomić przerwania: vector.c wygląda tak [syntax=c]static void __Default_Handler(void) __attribute__ ((interrupt)); static void __Default_Handler(void) { while (1); } /* +=======================================... | assign all unhandled interrupts to the default handler +=======================================...
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...
Dodano po 3 I aby w razie czego nie płakał że nie ma: Możesz to zrobić w C też oczywiście: [syntax=armasm] .weak NMI_Handler .thumb_set NMI_Handler,Default_Handler .weak HardFault_Handler .thumb_set HardFault_Handler,Default_Handler .weak MemManage_Handler .thumb_set MemManage_Handler,Default_Handler .weak BusFault_Handler .thumb_set BusFault_Handler,Default_Handler...
(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...
Nie zerowałem konkretnych flag przerwania od CCRx. Dziękuję za pomoc. Działający kod dla stm32f05: [syntax=c]timer2_init(void) RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->PSC = 4799; // Set prescaler TIM2->ARR = 100; // Auto reload value TIM2->CCR1= 20; TIM2->CCR2= 40; TIM2->CCR3= 75; TIM2->CCR4= 99; TIM2->CR1|=TIM_CR1_ARPE ; //AUTO...
Może od razu też powiem, że częstotliwość timera zamierzam ustawić na 10 kHz. Chciałem się jeszcze dopytać o jedną rzecz, której może nie do końca zrozumiałem. Czyli do rejestru (w moim wypadku jest to CCR1 - capture/compare register 1) wpisuje zmienną, która realizuje taką funkcje: U(a)=M×[cos(δ)] gdzie: M - współczynnik głębokości modulacji δ=2Π×f×Δt...
Witam i dzieki! Dzięki za toutorial, za włożoną pracę. Nie każdy siedzi po uszy w komputerze i np. mi czasem potrzeba wyjaśnienia podstawowych kwestii, które dla Ciebie są pewnie tak oczywiste i niezauważalne jak oddychanie. teraz mam coś takiego: Open On-Chip Debugger 0.1.0 (2009-01-21-21:15) Release BUGS? Read http://svn.berlios.de/svnroot/repos/...
Jeszcze raz dziękuję za cenne rady i wskazówki:) szczególnie dla: m.ki BlueDraco nie omieszkam sprawdzić przykładów z EP jak mi wpadną w ręce. Żeby zostawić ślad i pokazać że nauka nie poszła w las wklejam kod z uruchomienia Timerów na porcie A plus diody znajdujące się na płytce(PC8, PC9). Sam szukałem kodu do sterowania tymi diodami z PWM, więc może...
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.
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...
Nie jestem pewien ale chyba chodzi o to że służy do sprawdzania PWM. Proszę wybaczyć ale nie jest to banalne.
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
Jakie środowisko? Zakładam, że CooCox, ponieważ w innych takie rzeczy raczej nie występują. Odkąd pamiętam, to taki zapis zawsze poprawnie konfigurował SysTick do generowania przerwań co 1ms (1000Hz): [syntax=C] #include core_cm4.h #define FREQUENCY 168000000ul // lub dowolna inna, ale prawdziwa ///... jakiś fragment programu... if (SysTick_Config(FREQUENCY...
Witam ponownie, rozwiązałem swój problem, błąd był banalny i polegał na tym, że ustawiałem stan wysoki w rejestrach instrukcją |= i to było ok, ale nie zerowałem bitów tam gdzie powinny być zera instukcją &= ~. Na dole działający kod: [syntax=c]//niezbędne pliki nagłówkowe #include <stddef.h> #include "stm32f10x.h" //DEFINICJE PREPROCESORA...
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...
Witam, Zakupiłem sobie stm32butterfly, do tego programator z Allegro, przeczuwam, że był to błąd, o nazwie Triton. No i mam problem. Plik do open ocd dostarczony z programatorem jest skonfigurowany do pracy z atsam7 i w sumie nie bardzo wiem jak go zmienić, szczególnie że napisany jest dla starszej wersji openOCD. Probowałem zrobić swój własny plik...
Ja rozumiem ze mozna szarpać się z darmowymi toolchainami, ale zeby z keilem?... Postawienie darmowego toolchaina trwa minute :)
Zmienia licznik stan o 4 gdy wykonają się dwa pełne impulsy na wyjściu A i B, ale już znalazłem przyczynę, brałem stan licznika z rejestru TIM5->CCR1, czyli Capture1 i tam się stan licznika zmieniał o 4, a rejestrze TIM5->CNT zmienia się co jeden przy każdym wykrytym zboczy narastającym i opadającym tak jak wygląda to na zdjęciu z poprzedniego postu....
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...
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)...
OK. Zdaje się, że bez kodu trudno będzie to wyjaśnić. Inicjalizacja TIM1: [syntax=c] void timc_startup(void){ // timer clock and interrupt __HAL_RCC_TIM1_CLK_ENABLE(); // Set Interrupt Group Priority //HAL_NVIC_SetPriority(TIMc_IRQn, TIMc_IRQ_PRIORITY, 0); //HAL_NVIC_EnableIRQ(TIMc_IRQn); hTIMc.Instance = TIMc; hTIMc.Init.Period = TIMc_PERIOD-1; trace_printf("timHandle.Init.Period:...
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>...
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");...
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...
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...
Przydaje się podłączyć do procesora również DCLK. Pozwala to na bezbłędną synchronizację strumienia danych. U mnie jest to zrealizowane tak, że mam timer w trybie counter (naliczający zegary DCLK), a DEMOD jest podłączony pod 'capture' tego timera. Co 'capture' mam przerwanie i pozyskuje czas między zboczami (w jednostkach zegara taga RFID, co istotne),...
Ale czy w trybie ETR generowane jest jakieś przerwanie przy pojawieniu się zbocza/zwiększeniu licznika? Z tego co widzę to nie a ja bym chciał wiedzieć, że pojawiło się zbocze narastające bo na takie zdarzenie muszę odpowiednio zareagować. Impulsy na tym wejściu będą pojawiały się rzadko i nieregularnie nie jestem pewien czy mogę to wykorzystać. Chyba...
Witam od 2 dni próbuje zsynchronizować TMI1 (podczas generowania przebiegu PWM) i ADC2 w taki sposób aby przetwornik ADC2 próbkował w czasie gdy gdy nastąpi przepełnienie w liczniku jak poniżej na rysunku: https://obrazki.elektroda.pl/6382692400_... Dodam, że Timer pracuje w trybie "Center-aligned mode 2" a przetwornik ADC2 używa kanału...
Co do drugiego - cytat z manuala F4: "The counter is blocked while the auto-reload value is null" Jeżli chcesz mierzyć czas - niech timer odlicza czas. Możesz np. użyć funkcji capture - wtedy timer "zmierzy" np. długość impulsu podanego z zewnątrz.
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...
stlinkv2 powoduje taki sam błąd oto wyjście polecenia: dos(at)DoS-Aspire-7740:/mount/10.10/... sudo openocd -f interface/stlink-v1.cfg -f target/stm32f1x_stlink.cfg -d3 [sudo] password for dos: Open On-Chip Debugger 0.6.0-dev-00448-gc59a441 (2012-03-03-19:09) Licensed under GNU GPL v2...
Dodano po 5 Te paski powoduje pamięć sdram. Gdy umieszczam sekcję frame w wewnętrznym ramie pasków nie ma:( Parametry ustawione zgodnie z dokumentacją, pamięć to W9825G6JH-6I. Próbowałem już modyfikować parametry na różne sposoby, jednak brak poprawy. Dla mniejszych ramek obrazu, np dla 176x144 pasków nie ma. Czym to może być spowodowane?
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...
Korzystam z przykładowych projektów dostarczonych przez ST w programie IAR. Po lewej stronie okna programu znajduje się okienko z drzewem folderów i pośród nich znajdują się dwa pliki ze 'startup' w nazwie: startup_stm32f10x_md.o i startup_stm32f10x_md.s (zawartość plików znajduje się poniżej). To o te pliki chodziło? Zawartość dość znacznie się różni....
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...
Używam KT-LINK, OpenOCD 0.7.0, libusb. Środowisko działa prawidłowo, kilka identycznych płyt z STM32F4xx działa prawidłowo, debug, flash itp. Jedna idzie opornie. Po podłączeniu się OpenOCD: 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...
Nie jestem gotowy na taką niestabilność i zużycie RAM. PulseView to rozwiązanie doraźne a nie rozsądne. Gdyby to działało dobrze to chińskie portale handlowe byłyby zarzucone analizatorami na BluePill. Tymczasem są zawalone klonami zgodnymi z SALEAE LOGIC. Unfortunately, pulseview has one well-known, almost fatal flaw (along with several minor ones,...
Sprytnie używając timera można napisać całkowicie nieblokującą obsługę OneWire z rozsądnym wspomaganiem sprzętowym - jeden kanał timera w trybie compare ze sterowaniem wyjściem w trybie OD, sąsiedni kanał w trybie capture z chwytaniem zboczy narastających. żadnych delay, żadnych problemów z przerwaniami. Można też obniżyć priorytety wszystkich innych...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
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:...
https://obrazki.elektroda.pl/8760486500_... Po przygodach z matrycami zbudowanymi na max7219, przyszła pora na coś bardziej zaawansowanego. Miałem w planach zrobienie własnej matrycy z 1500 jednokolorowych ledów 0603, 3 rejestrów przesuwnych i paru elementów dyskretnych, ale jak już ją zaprojektowałem, to przypadkiem trafiłem na matryce...
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...
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...
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...
Cześć, Może ktoś podpowie, bo chwilowo nie mam pomysłów. Potrzebuję użyć DMA do przesyłania danych, używam kilku strumieni. DMA potrzebuję wyzwalać z określoną częstotliwością przez timmer. Jeśli użyję DMA2, to wszystko działa, Problem jest w tym, że DMA2 mogę wyzwalać tylko Timmerem 1 i 8. O ile timmer 8 mogę na to poświęcić, timmer 1 potrzebny mi...
Hej. Pacjent to STM32F401VCT6 taktowany domyślnym zegarem wewnętrznym 16MHz. Uruchomiłem sensor HC-SR04 wykorzystując TIM2 do zliczania długości impulsu ECHO wykorzystując tryb capture oraz DMA. Do rejestru TIM2->PSC ładuje 15, ponieważ chcę aby wartość CNT inkrementowała się co 1us. Kod źródłowy poniżej: [syntax=c] #include "stm32f4xx.h" static...
Windows 7 Pro, 32-bit Firmware version: V2.J15.S0 JTAG Debugger STM32 ST-LINK Utility v2.2.0 STLinkUSBDriver.dll v4.2.2.0 Open On-Chip Debugger 0.6.0-dev-00448-gc59a441 (2012-02-29-17:05) Eclipse Indigo Service Release 2, build id: 20120216-1857 GNU ARM C/C++ Development Support 0.5.4.201202210114 C/C++ GDB Hardware Debugging 7.0.0.201202111925 Próba...
Dodano po 31 Kiedy debuguje program, krokowo, zaraz po a = 124; z linii b = log10(a); wskakuje do nieskończonej pętli - void HardFault_Handler(void). Tak jakby sam adres procedury wywoływał błąd sprzętowy.
stm32 input capture capture timer stm32 input capture stm32
esp8285 tasmota słaby wtryskiwacz stm32 bascom
konfiguracja routera modem advantech
MAN TGX Error Code 3802: EGR Oxygen Sensor Fault, Lambda Sensor Issues, Engine Derate Migająca dioda na dekoderze - przyczyny i rozwiązania