IMHO to nie jest dobry pomysł. Z jaką częstotliwością taktujesz CPU? Uwzględnij latencję wejścia w przerwanie i to, że coś to przerwanie może blokować. A ty być potrzebował nie rozdzielczości 1 us lecz takiej dokładności co IMHO jest bardzo trudne do zapewnienia. Także nie tędy droga.
Stos dla przerwań ustawiłeś? 4\/3!!
[syntax=c]void _delay_init() { SysTick->LOAD = 0x00FFFFFF; SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk; // | SysTick_CTRL_TICKINT_Msk; } void _delay_ms(uint32_t time) { uint32_t ina, inb; while(time--) { ina = SysTick->VAL; do { inb = SysTick->VAL; inb = (ina - inb) & 0x00FFFFFF; } while (inb<72000); } }[/syntax]
Z czym może to być związane ? Z tym, że jedna funkcję masz skompilowaną w swoim projekcie a drugiej nie masz. Nie za bardzo rozumiem dlaczego nie jest skompilowana. Fragment kodu: [syntax=c]#include "stm32f10x_lib.h" void delay_ms(); void RCC_Config(); void GPIO_Config(); volatile u32 timer_ms = 0; int main(void) { RCC_Config(); GPIO_Config(); SysTick_Config(72000000/1000);...
freertos ma systemową funkcję do opóźnień (w ms). Generalnie korzystanie z opóźnień to zło, ale jeśli już musisz z nich korzystać, to w nagłówkach bibliotek możesz zrobić makro, w którym to wybierzesz sobie sam z czego korzystać :)
(at)Gunis-92: Możesz wykorzystać do odmierzania czasu np. SysTick [syntax=c] volatile uint32_t licznik_tykniec;// zmienna globalna /* obsluga przerwania od licznika/timera SysTick */ void SysTick_Handler(void) { licznik_tykniec++;// inkrementacja licznika } void delay(uint32_t czas) { uint32_t aktaualny_licznik_tykniec; aktaualny_licznik_tykniec = licznik_tykniec;...
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...
Podaję ładniejszą formę obsługi opóźnienia na SysTick: [syntax=c] #include "LPC17xx.h" #include "lpc17xx_gpio.h" volatile uint32_t licznik_tykniec; /* obsluga przerwania od licznika/timera SysTick */ void SysTick_Handler(void) { licznik_tykniec++;// inkrementacja licznika } void delay(uint32_t czas) { uint32_t aktaualny_licznik_tykniec; aktaualny_licznik_tykniec...
Witam kolegów, napisałem ostatnio biblioteki do wyświetlacza ze sterownikem HD44780. Napisałem też prostą funkcję delay'a na Systick'u (taktowanie procesora 168Mhz, częstotliwość Systicka równa 21Mhz, procesor STM32f407vgt6 cortex m4). Zauważyłem, że przez tego delay'a gdy wysyłam dane do sterownika to po wyświetleniu każdej literki jest króciutki odstęp...
z tego co ostatnio liczyłem to taka pętla: Dodano po 1 A no i bez nop'a kompilator przy pewnych ustawieniach wytnie Tobie całą pętlę.
W sumie może wrzucę cały program taktowanie to 16MHz ustawione w rcc_config i taka jest też wartość FREQUENCY main: [syntax=c] #include <stdint.h> #include "inc/stm32l053xx.h" #include "config.h" #include "gpio.h" #include "hdr/hdr_syscon.h" static void system_init(void); void rcc_config (void); void systick_delay(uint32_t us); void delay_ms(uint32_t...
Witam serdecznie. Jak poradzić sobie z SysTickiem i przerwaniem, ponieważ po kompilacji środowisko zwraca taki błąd: [syntax=bash]D:\workspaceAtolic\Cortexy\... multiple definition of `SysTick_Handler' src\main.o:D:\workspaceAtolic\Cortexy\De... first defined here [/syntax] [syntax=c] #include "stm32f10x.h"...
To ja dodam podobne pytanie, dla STM32vldiscovery. Migająca diodka i dźwięki typu beeep:). Ustawienia źródła (kwarc 8MHz), pętli PLL (x3=24MHz), ten sam program programowany z Keil działa wg ustawień (Systick 1ms, delay = 1000 daje 1sek. pasuje). Oraz ten sam program .bin (lub .hex) programowany przez STM32 ST_Link Utility i diodka mruga dużo wolniej,...
Póki co jest to niemożliwe - systick hardcodem używany do delayów ;) Każdy RTOS udostępnia jakąś formę funkcji delay .
(at)Piotr79611 Na ARM delay jest już realizowany przy pomocy timera - SysTick. Stąd zresztą wynika kolejny problem - jeśli przerwanie przerwie delay i samo odpali delay to wszystko się pokaszani. Także zmień sposób rozwiązania problemu. Możesz w przerwaniu włączyć te diody, jednocześnie odpalić timer, który wywoła przewanie gaszące diody.
Witam, prosiłbym bym o pomoc, żeby ktoś wytłumaczył, albo podał przykład jak skonfigurować przerwania zewnętrzne w tym mikrokontrolerze bo walczę z tym i nic mi nie wychodzi i zaczynam podejrzewać, że to procek jest zepsuty, albo tej sztuki jeszcze nie opanowałem :D na początku pisałem własne kody, ale po nieudanych próbach w końcu wkleiłem gotowca,...
Z tego co widzę z ST-Link Utility, program counter stoi w miejscu, konkretnie 0x20000458, czyli cos juz wykonał ale utknął możliwe .że w miejscu gdzie czeka aż przerwanie SysTick wykona sie okreslona liczbe razy. Czy trzeba jeszcze w jakiś sposób ustawić tablicę wektorów przerwań? edit: Jednak nie wykonuje się , dodałem linijkę zapalającą diodę przed...
Jeżeli nie potrzebujesz dokładnych opóźnień a takich Π•oko, to IMHO delay na pętlach w zupełności wystarczy. Timerów w stm32 niby wiele...ale prawie zawsze, w większych aplikacjach znajdzie się szczytniejsze dla nich zastosowanie. Z drugiej strony stosowanie pętli opóźniających na ARM-ach trąci profanacją :) Jeżeli nie interesuje Cie korzystanie...
Zasadniczy probem twojego rozwiązania to delay() w obsłudze przerwania i ogólnie za dużo w nim robisz. Z zasady w przerwaniu wykonujesz jak najmniej kodu, aby z niego wyjść najszybciej jak się da. A tutaj wykonanie kodu w przerwaniu zależy od kolejnych przerwań. Ustawiaj tam sobie jakąś zmienną globalną kiedy chcesz coś wykonać, wybudź procek, opuść...
Jeśli chciałbym żeby działał licznik i zarazem migała dioda, ale z innym opóźnieniem, to da się to zrobić tylko za pomocą SysTic'a? Dodano po 2 Zrobiłem coś takiego. Jakby mógł ktoś jeszcze pomóc z tą migającą diodą, aby świeciła na 100ms i była zgaszona na 1s. Licznik wg moich obliczeń działa co 0,5 Hz. [syntax=c]#include "stm32f10x.h" volatile uint32_t...
Dodałem tam systick delay 1 ms, ale na razie nie udaje mi się wprowadzić procesora w taki stan, więc w między czasie dam znać czy się udało. Oczywiście zmieniłem konfig pinu: [syntax=c] if (I2C_USE->SR2 & I2C_SR2_BUSY) { // Still Busy gpio_pin_cfg(I2C_PORT, I2C_SCL, gpio_mode_output_PP_LS); while (I2C_USE->SR2 & I2C_SR2_BUSY) { I2C_PORT->ODR ^= I2C_SCL;...
delay.h [syntax=c]void Delay_ms(__IO uint32_t nTime); void SysTick_Konfiguracja();[/syntax] delay.c [syntax=c]static __IO uint32_t TimingDelay; void SysTick_Konfiguracja() { RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency... } void SysTick_Handler(void) { if(TimingDelay)TimingDelay--; } void...
PM0056 Programming manual strona 151 The RELOAD value is calculated according to its use: ● To generate a multi-shot timer with a period of N processor clock cycles, use a RELOAD value of N-1. For example, if the SysTick interrupt is required every 100 clock pulses, set RELOAD to 99. ● To deliver a single SysTick interrupt after a delay...
Brak wywłaszczania stwierdzam po wywołaniu _delay_ms() w procedurze void TIM1_CC_IRQHandler(void). PC wchodzi mi wtedy to pętli, która jest nieskończona bo nie ma dekrementacji zmiennej w przerwaniu SysTick-a. Jak zamiast delay-a dam timer to skutek widoczny jest w pomijaniu ramek modbus-a. Być może wartości, które ustawiasz w polach PreemptionPriority,...
Zapamiętaj jedna generalna zasadę: żadnych delay w przerwaniach. Do tego ten delay o ile się już uprzesz użyć go w handlerze wymaga aby systick miał wyższy priorytet, inaczej zdechnie w deadlocku
Witam serdecznie, próbuję skonfigurować SysTick do generowania przerwania co 1us. O ile 10us działa prawidlowo (sprawdzam to poprzez świecenie diodkami) to już dla 1us nie działa. Poniżej kod: [syntax=c]#ifdef __USE_CMSIS #include "LPC11xx.h" #endif #include <cr_section_macros.h> #include "driver_config.h" #include "target_config.h" #include "gpio.h"...
Ok, dzięki. Nie rozumiem, ponieważ wpisując do licznika SysTick wartość początkową 24000, przy zegarze 24MHz (8MHz x3), mam przerwanie co 1ms, bo wywołując opóźnienie Delay(1000); - zlicza 1000 przerwań, dioda świeci 1 sek. Gdyby podział przez 8 dzialał, to powinna swiecić 8 sek.
hmm może wkleje cały flik, a systick co ma z tym wspólnego i ma być w ogóle podzielony? przez 1? ------------edit A już chyba widze, po drodzę brakuje mi[syntax=c] LPC_SYSCON->SYSAHBCLKCTRL |= 1<<TIMER_SYSAHBCLKCTRL_BIT;[/synta... ------------edit2 Ok, lata :) teraz moja zwłoka wygląda jak poniżej, oczywiście trzeba jeszcze doszlifować bo funkcja...
Proste zadanie a kod z użyciem SPL totalnie nieczytelny i do tego niedokładny... Ja tylko nie wiem jak komentarz ma się do wpisanych tam wartości: /* SysTick end of count event each 10ms */ SysTick_Config(RCC_Clocks.HCLK_Frequency / 1680 / 2); Zakładając, że HCLK wynosi 168M, to w jaki sposób wpisanie do SysTick wartości 50k ma dać opóźnienie 10ms?...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Systick i delay_ms sa w jednym module main.c Postaram sie go okroic do minimum, nie mam teraz kodu pod reka aby cos wkleic.
Tu jest problem, który odkładam od pewnego czasu z braku czasu. Przy szybkich kontrolerach obydwie metody są do kitu i powodują marnotrawstwo czasu procesora. Zastanawia mnie zrobienie tego "pod zegarem". Tzn kolejne kroki wykonywane w kolejnych przerwaniach timera. Nawet jeśli samo wysyłanie trwać będzie znacznie dłużej to w międzyczasie można kupę...
Ile taktów zegara trwa 'while(nCount--)' ? chyba nie jeden? Dodano po 6 Jak na razie wydaje mi się że nie masz dobrego sposobu określenia rzeczywistej prędkości taktowania. Zapuść jakiś timer albo SysTick i na tym zrób delay, bo to łatwo policzyć. Dodano po 1 A czemu SystemInit(); masz przed main()? Dodano po 2 Wyłącz wszystkie PLL itp. i włącz tylko...
Hej :) Natknąłem się na pewnie problem którego nie mogę rozwiązać otóż spróbowałem sobie zrobić prosty generator przerwań przy użyciu SysTicka (przykład z książki paprockiego) który zapalałby mi diode po 500ms. Nie wiem w czym może leżeć problem ale dioda mi nie miga. Poniżej wklejam kod main i funkcji void SysTickHandler(void): main: #include <stdint.h>...
Ogólnie rzecz biorąc udało mi się skonfigurować buttona tak, żeby działał na przerwaniach i timerze. Ale coś zaś musiałem fundamentalnego skopać i wywala HardFault. Tym razem nie mogę uruchomić SysTicka. [syntax=c]int main(void) { volatile uint32_t count, count_max = 1000000; system_init(); pll_start(CRYSTAL, FREQUENCY); SysTick_CLKSourceConfig(SysTick_CLKSourc...
Projekt jest dośc spory, sklada się z wiely plikow. Udało mi sie juz uruchomic wyswietlacz graficzny, klawiaturę, ADC, przerwania itd. itp. tylko z tym log10 ciagle problem. Dlatego nie dołączam całego projektu. Stosu nie konfiguruje 'recznie', chyba robi to CoIDE i chyba potrafi wyliczyć ile potrzebuje miejsca na stos. Robiłem ten program na AVR z...
Może za krótko czekasz po włączeniu zasilania i próbujesz komunikować się/inicjalizować zewnętrzne urządzenie zanim zdąży zakończyć sekwencję POR. Mogę tylko gdybać bo nie wiem co masz do tego uC podłączone, ale widać że jakieś magistrale szeregowe masz wyprowadzone. No ale koniec sekwencji POR oznacza wykonanie kodu z Reset Handler ? [syntax=c]int...
Akurat odmierzanie czasu na podstawie takiego delay opartego o timery jest całkiem precyzyjne. Z drugiej strony tak właśnie implementuje się delay na ARM, jako timer używa się SysTick. Z pewnością. Ale nie robi się tego w tak brutalny sposób, że angażujemy jeden timer do tylko jednego odliczania opóźnienia. Lepiej to zrobić w taki sposób: [syntax=c]void...
Sądziłem, że rejestr IR związany jest tylko z przerwaniami i sprawdza się go w przerwaniu. Testowałem rejestr TCR ponieważ UM piszę "Stop on MR0: the TC and PC will be stopped and TCR[0] will be set to 0 if MR0 matches 0 the TC." Zaraz przetestuję z IR & 1 ---- Kicha :( Czekanie while (LPC_TMR32B0->IR & 0x01); nic nie daje. Kurczę na SysTick opóźnienie...
Witam. Wygenerowałem kod w STM32CubeIDE. Problem polega na tym, że gdy debuguje go, to mogę swobodnie przechodzić krok po kroku do kolejnych instrukcji programu. Po wyłączeniu debugowania w celu pozwolenia mikrokontrolerowi działać swobodnie, ten nie chce działać. Znalazłem tako oto radę dotyczącą SysTicka: "You have to be very carefull when using HAL_Delay(),...
Dobry wieczór Mam podłączony do płytki wyświetlacz. Chcę wysłać przy użyciu SPI i DMA do niego dane początkowo ich liczba to 65535 i jakiś tam początkowy kolor pikseli następnie w przerwaniu od DMA końca transferu ustawiam nową wartość 11265 i inny kolor pikseli. Nie wiem z jakiego powodu poniższy kod działa w środowisku Keil, a w STM32CubeIDE już nie,...
Przykład z biblioteką SPL: [syntax=c] static __IO uint32_t TimingDelay; //--------------------------------------... void SysTickConfig() { RCC_ClocksTypeDef RCC_Clocks; RCC_GetClocksFreq(&RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);// 168MHz/1000=168000/s (1ms) } //--------------------------------------...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Witam, Mam problem z odbiorem danych na magistrali CAN. Program wysyła dane na CAN co 500ms i to działa, natomiast kiedy pojawi się ramka na RX, program przestaje już wysyłać dane i wygląda jakby zawisł. Poniżej kod. Może ktoś sprawdzić i podać przyczynę problemu? [syntax=c]#include "stm32f10x.h" #include "stm32f10x_can.h" #include "hdr_rcc.h" #include...
Witam. Na początku muszę zaznaczyć, że jestem raczej początkującym w temacie mikrokontrolerów i ogólnie elektroniki. Kupiłem sobie stm32f0 discovery oraz termometr ds18b20, podłączyłem wszystko jak trzeba - pin 1-wire do pc7, oraz piny zasilania odpowiednio do 3v i GND na płytce. Korzystam z IAR Embedded Workbench EWARM. Termometr działa, bo procedura...
Zawsze jest systick, albo prawie zawsze. Jak Ci systick chodzi to inne tez powinny. Masz debugger? - masz wyprowadzone pewnie piny SWD. W przerwaniach zewnętrznych i tak musisz miec jakaś podstawę czasu aby zrobić debouncing. No chyba że szef zrobił to "na pałę" z delayem w przerwaniu (chodzą takie przykłady w internecie) - co zresztą podejrzewam.
Przejzalem tematy na forum a nie moge uruchomic przerwania na pinie PC13 (nucleo l1 board) [syntax=c] #include "led.h" #include "delay.h" #include "button.h" int main(){ setup_LED(); setup_DELAY(); setup_BUTTON(); blink_led(); LED_ON; delay_ms(1000); LED_ON; while(1){ } while(1); } void SysTick_Handler(){ if (delay_counter > 0){ delay_counter--; } void...
Dzień dobry, postanowiłem zacząć przygodę z rejestrami na mikrokontrolerach, skupiam się obecnie na STM32 C011 z racji, że znam już jakieś solidne podstawy HALowskie. I dostałem już niczym strzał z liścia pierwszy problem - mianowicie dioda dołączona do mikrokontrolera na wyjściu nie chce mrugać. Z dokumentacji mikrokontrolera wraz z całą płytką wynika,...
Witam Idea działania programu jest taka, że po starcie na wyświetlaczu pojawia się komunikat "napis testowy", a po naciśnięciu przycisku wyświetlany jest napis "STANDBY MODE" i układ przechodzi w tryb standby. Po naciśnięciu przycisku napis wyświetla się, ale mikrokontroler nie pracuje w trybie standby (podłączony miernik na pinie IDD). Niestety nie...
Udało się rozwiązać problem, kod poniżej. Rzeczywiście wystarczyło się dostosować do tego, że USB ISP zakłada że jest wywoływane po resecie. Nie brałem tego co tam jest napisane wcześniej na powożenia, bo w poprzednim projekcie problem nie wystąpił. Nie wiem do końca która linijka jest kluczowa, na pewno nie wszystkie mają znaczenie. Delay prawdopodobnie...
Witam, chciałem wykorzystać kartę microSD do odczytu obrazków w projekcie zawierającym wyświetlacz LCD, natomiast pojawił się pewien problem z funkcją f_open() w FatFs. Podczas testowania program gładko przechodzi f_mount() zwracając FR_OK, natomiast wykrzacza się przy f_open() zwracając błąd FR_NOT_READY. Przeczytałem zarówno na forum jak i w czeluściach...
Cześć. Tak jak napisałem w nazwie tematu posiadam ARM'a STM32F072RB. Podłączyłem kolejno kolumny, później wiersze klawiatury matrycowej 4x3 do portów GPIOC1-GPIOC7. Chcę odczytywać wciskane klawisze na klawiaturze i napisałem jak na razie taki kod: [syntax=c] #include "stm32f0xx.h" #include <stdio.h> volatile uint32_t timer_ms = 0x0; void delay(int...
Całość kodu jest dość spora:) Czekam na flagę na pewno, ale nawet jeżeli nie, to zauważ że pomiędzy wywolaniami odczytu adc są spore odcinki czasu. Ano, zazwyczaj w takich sytuacjach używam volatile, tyle że wtym przypadku optymalizacja jest wyłączona. Program w zasadzie skończony, a zajmuje 20kB ze 128, więc optymalizacji nie właczałem. Dodano po 4...
Witam Mam problem z poprawnym działaniem SPI1 , zamieszczam kod i zrzuty z analizatora , niżej napiszę co nie gra . http://obrazki.elektroda.pl/6540904700_1... Zdjęcie sekwencji http://obrazki.elektroda.pl/6996450100_1... Przez spi chce uruchomić 74hc595 po małej przeróbce kodu działa ale , jak widać zawiesza się , był...
Dodano po 12 Wynik z atmega328 https://obrazki.elektroda.pl/4275963800_... To wygląda prawidłowo, wysyłam to 0xf5 czekam 30ms potem 0x81 i odczytuję dwa bajty z ack i jeden z nack i warunek stop. Następnie wszystko się powtarza bo jest w pEtli while wywoływane. A w stm niema tych trze bajtów, tylko są dwa i z nack.
Dzień dobry! Przycisk podpięty do płytki mam w/g schematu: http://arduino.cc/en/uploads/Tutorial/bu... Kod mojego maina: #include <stm32f10x_gpio.h> #include <stm32f10x_rcc.h> #include "stm32f10x_flash.h" #include "misc.h" /* Scheduler includes. */ #include <stdio.h> #include "FreeRTOS.h" #include...
Dziękuję kolegom za cenne uwagi. Co do wersji z os.mbed.com, to próbowałem ją do siebie przeportować ale niestety efekt był podobny. Poprawiłem kod według wskazówek kolegi Freddie Chopin, przerwanie SysTick jest generowane co 10 us oraz wydłużyłem czasy dla półbajtów, ale efekt jest dalej taki sam. Pojawiło się też słówko volatile. Kod wygląda teraz...
Witam, Pozmieniałem trochę ten domyślny program. Moja część zawarta jest w linijkach "moj program" reszte kodu wyłączyłem. Proszę o sprawdzenie, bo jeszcze czekam na kuriera z moim zestawem STM32F0 Discovery. ****************************************... ** ** File : main.c ** ** Abstract : main function. ** **...
Witam, Na początku chciałem zaznaczyć ze jestem początkujący jeśli chodzi o procesory typu ARM, a tym bardziej o obsługę FreeRTOS. Mam problem z obsługą magistrali CAN pod tym system. Wykorzystuje biblioteki pobrane ze strony www.freertos.org . Niby wszystko ładnie się kompiluje ale na magistrali nic się nie pojawia . Odpaliłem proste zadania typu miganie...
GPIOC->CRH ^= 5<<16; Gorzej być nie może. Najpierw wyzeruj całe pole. Potem OR z wartością docelową. W pliku z rejestrami masz odpowiednie makra. Warto sobie z biegiem czasu tworzyć dodatkowe opisujące pola wielobitowe. Konfiguracja portów jest pod tym względem najgorsza. W jakim sensie gorzej być nie może? Nieczytelności? To byłoby dobre...
Witam, chciałbym zapytać o tworzenie projektu w Atollic. Szukałem w internecie materiałów polskich i obcojęzycznych ale nigdzie nie natknąłem się na instrukcje tworzenia projektu. Uczę się programowania na rejestrach według poradnika zamieszczanego tutaj. Widziałem instrukcje tworzenie projektu za pomocą CubeMx a następnie wyciania co nie potrzebne....
Witam forumowiczów! Po przesiadce z AVR na STM32 chciałbym powtórnie napisać kod pod I2C do czujników, ale coś stoi na przeszkodzie. http://obrazki.elektroda.pl/3517599900_1... http://obrazki.elektroda.pl/6433591700_1... Dana którą odczytuję jest niezgodna ze stałą rejestru "who_am_i", przy czym zbieżna z SLAVE ADR+R/W...
Witam Wysyłam przykładowe ramki z terminala do STM32 przez driver MAX3485 i cały czas sypie mi błędami w odpowiedziach. Nie mam też pewności czy to co wysyłam z terminala do STM32 dociera bez błędów. Poniżej fragment kodu oraz zrzut ekranu. Powinienem otrzymać to co wysyłam. Czarny kolor to odebrane ramki. Proszę o pomoc http://obrazki.elektroda.pl/7456669500_1...
Witam, mam taki problem z bootloader'em : Bardzo prosty bootloader ktory skacze do adresu 0x08010000(wlasciwie to tylko czesc bootloader ktora skacze do aplikacji) pod adresem 0x08010000 jest aplikacja. No i aplikacja zatzymuje sie na funckcji HAL_Delay(100) , jesli opoznienie srobie na while(cnt++<500000) to program dziala tzn mruga dioda. Nie wiem...
Witam, otóż mam problem, a mianowicie chciałbym obsłużyć przerwanie z pinu ALRT z przetwornika ADS1115 w celu wyeliminowania opóźnienia które teraz stosuje przy odczycie każdego z kanału (delay(20)) dokumentacja: https://cdn-shop.adafruit.com/datasheets... z góry dziękuję za pomoc mój dotychczasowy kod: [syntax=c] /* Includes ----------------------------------------...
Witajcie, stworzyłem coś takiego: LCD.h http://obrazki.elektroda.pl/8774371000_1... Build przechodzi, nie pokazuje błędów ani nic. Nie wiem gdzie popełniłem błąd :( Jest to już chyba 5 podejście do tego... Ciągle nie potrafię zlokalizować błędu. Będę bardzo wdzięczny za pomoc.
Witam, Nie mogę spowodować , aby działała funkcja printf w programie napisamym w Coocoxie. Program się kompiluje, nie ma błedów, widać w terminalu napisy pochodzące od funkcji send_char, natomiast od printfa nie ma. Czy robię jakiś bład: [syntax=c]#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_usart.h" #include "stm32f10x_rcc.h"...
Cześć. Nie wiem dlaczego uc zawiesza się na czekaniu na zakonczenie generowania startu chodzi o I2C 3 https://obrazki.elektroda.pl/9115828100_... Inicjalizacja I2C [syntax=c]void i2c_init(void){ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOCEN; RCC->APB1ENR |= RCC_APB1ENR_SPI3EN; GPIOA->MODER |= GPIO_MODER_MODE8_1;...
Tak czytając ten fragment odniosłem wrażenie że omawiasz opóźnienie związane z reakcją na przerwanie, a nie na reakcje samego wątku. Chodzi o opóźnienie reakcji na "zdarzenie odblokowujące wątek". Przykładowo wątek A czeka na semafor, wiec jest w stanie "zablokowanym". Teraz następuje zdarzenie - semafor zostaje "ustawiony" (przez przerwanie lub przez...
Witam, Chciałem sprawdzić STM32Lxx pod kątem energooszczędności. Ściągnąłem NUCLEO-L053R8 i AtollicStudio. Po założeniu nowego projektu wymieniłem bibliotekę STM32L0xx_HAL_Driver na najnowszą wersje. Zmieniłem zegar dla procesora z MSI na HSI. Program miga diodą. Co kilka uruchomień dostaję HardFault na samym starcie aplikacji przy konfigurowaniu zegarów....
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...
Pokaż resztę kodu bo tam jest pewnie blad Wartość Q=7 jest niepoprawna, powinno być 6. No chyba że niepoprawnie rozgryzłem tego hala... Nie wiem czy istotne jest ustawienie dla USB z którego nie korzystam ? Dodano po 30 Pokaż resztę kodu bo tam jest pewnie blad Wartość Q=7 jest niepoprawna, powinno być 6. No chyba że niepoprawnie rozgryzłem tego hala......
W kodzie jest jedno Delay :) wykorzystane tylko do celu eksperymentu bazujące na przerwaniu Systicka. Niestety po wpisaniu: GPIOA->BSRR = 1 << 5; //set bit Delay(1000); GPIOA->BSRR = 1 << 21; //reset bit układ zachowuje się podobnie jak pisałem wcześniej albo dioda cały czas świeci, a po zamianie linijek jest gaszona. A czego spodziewasz...
Mam problem z poprawnym skonfigurowaniem wyświetlania z Noki 3410 z STM32L-DISCOVERY przez SPI. Czasami na wyświetlaczu pojawia się zbiór kropek (dołączam zdjęcie), innym razem nic nie pojawia się na wyświetlaczu. Proszę o pomoc w napisaniu poprawnego kodu. Zdjęcie wyświetlacza: http://obrazki.elektroda.pl/8093275400_1... Oto mój kod:...
Dzięki za to, że napisałeś odpowiedzi na Twój problem, przydało się ale niestety nadal mam problem... Poniżej jest mój kod do odczytu przez I2C i wysyłanie po UART. Putty niestety wyrzuca "S▒▒" co restart. Ktoś wie czemu? (wiem, że ten kod nie jest najlepszy ale powinno działać. [syntax=c]#include "stm32f30x.h" void SysTick_Handler(void);...
Okres ticka systemowego służy tylko i wyłącznie do określenia rozdzielczości delayów, timeoutów itd. Ewentualnie wpływa jeszcze na to jak często przełączane są zadania o identyczny priorytecie jeśli są stale odblokowane (tzw. round-robin scheduling), co w typowym przypadku i tak praktycznie nie występuje. Jak system nie ma co robić (albo jakiś wątek...
Witam, znalazlem kawalek funkcji na ustawienie procesora na 72MHz i wydaje mi sie, ze działa bo uzywam system tick do togglowania pinu, ale chce uzyc poprostu funkcji dostarczonych od stm. Na screenie widze ze jest gdzies definicja o ustawieniu procesora typu "STM32F10X_LD_VL" przez co program chodzi na 24MHz. Gdzie ona jest? http://obrazki.elektroda.pl/5784698000_1...
Witam, mam dziwny problem. Wczoraj napisałem program obsługujący wyświetlacz LCD przez I2C dziś rano nie pojawia się kursor. Wyświetlacz reaguje na niektóre komendy.Rezystory podciągające są. Nie sprawdzam bitu zajętości gdyż czekam dość długo na wykonanie polecenia. Może ktoś zechce przeanalizować kod :) Kod:[syntax=c]#include "stm32f0xx.h" #include...
Witam, mam taki problem. Walczę z obsługą karty SD na stm32f4 discovery. Niestety po wywołaniu funkcji f_open w najlepszym przypadku otrzymuję wynik FR_NOT_READY oczywiście bez względu na to czy karta jest czy jej nie ma. Załączam kod funkcji main oraz funkcje związane z spi. Kody są pobrane z forum, ja dopisałem jedynie obsługę SysTick do wywoływania...
Hej :) Staram się zaprogramować przerwanie, które powoduję że cyfry na poczwórnym wyświetlaczu mrugają, lecz niestety mi to niewychodzi :( Czy ktoś mógłby sprawdzić gdzie ja popełniłem błąd? [syntax=c] #include <stm32f4xx.h> #include <stm32f4xx_rcc.h> #include <stm32f4xx_exti.h> #include <stm32f4xx_tim.h> #include <stm32f4xx_gpio.h>...
Aktualnie najważniejsze pliki programu wyglądają następująco: main.c: [syntax=c]#include "main.h" //definicje stalych #define LINENUM 0x15 #define FONTSIZE Font12x12 #define LED1 GPIO_Pin_13 #define LED2 GPIO_Pin_14 #define PRZYCISK GPIO_Pin_0 //zmienne - definicje void Delay(__IO uint32_t time); extern __IO uint32_t TimmingDelay; unsigned short regVal;...
Spróbuj takiego kodu. Niestety nie sprawdzałem go bo nie mogę skompilować Twojego kodu. [syntax=c] #include "stm32f10x.h" #include "TouchPanel.h" #include "systick.h" #include "GLCD.h" #include "stdio.h" #define TP_INT_IN GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_6) void TPintInit(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP...
Dlaczego wyskakuje mi błąd "Undefined symbol Init_GLCDPORT?" [syntax=c] /* Includes ----------------------------------------... #include "main.h" #include "stm32f4xx_gpio.h" /* Private typedef ----------------------------------------... /* Private define ----------------------------------------...
To może wgraj oryginalną zawartość z Nucleo F411 jaka jest w nówkach na dzień dobry, by przynajmniej sprawdzić Nucleo plus ST-link. On tam miga i reaguje na przycisk może pamiętasz: No jest jakiś postęp chociaż nie wiem czy można to nazwać postępem. Wgrałem ten program, wyrzucił mi jakiś błąd elf loadera ale ostatecznie znalazł się w pamięci: Dodano...
Witam. Chcę za pomocą płytki STM32F334 DISCO sterować wyświetlaczem 16x2 przez interface 4-bitowy. Połączenie wygląda tak : VSS - GND VDD - 5V VO - NC RS - PB13 RW - GND E - PB15 D4 ... D7 - PA12 ... PA15 A - przez rezystor 220 ohm do 5V K - GND Kod napisany w "System Workbench for STM32" zgodnie z datasheet'em sterownika wyświetlacza. https://obrazki.elektroda.pl/3189253300_...
Chciałbym podzielić się swoim tworem DS18B20 + STM32F4 Discovery po niecałych 2 miesiącach obcowania z poradnikiem. Zaczynając od zera jeśli chodzi o znajomość mikrokontrolerów z podstawową znajomością C. [syntax=c]#include "stm32f407xx.h" void delay(uint16_t time) { TIM2->CNT = 1; while (TIM2->CNT<= time); } static void reset (void) { GPIOB->MODER...
Poprawiłem ten kod wg wskazówek. Jednak dalej nie chce mi odbierać ani wysyłać na PC. Teraz mam tak: [syntax=c]/* Includes */ #include <stddef.h> #include <stdio.h> #include "stm32l1xx.h" //defined USE_STM32L_DISCOVERY #include "discover_board.h" #include "stm32l_discovery_lcd.h" /* Private typedef */ /* Private define */ /* Private macro...
Nie włączone przerwania systick, zła nazwa handlera0 albo jeżeli wolasz z przerwania zły priorytet.
Poprawiłem. Teraz main wygląda tak: [syntax=c]/** ****************************************... ** ** File : main.c ** /* Includes */ #include <stddef.h> #include "stm32l1xx.h" #include "discover_board.h" #include "stm32l_discovery_lcd.h" #include "stm32l1xx_it.h" #include "lcd_hd44780_lib.h" /* Private typedef...
Poradnik dla początkujących, ale jedyne czego w nim brakuje to opisu jak z konfigurować środowisko do pisania na rejestrach. W sumie to masz już środowisko i tak naprawdę nic nie musisz konfigurować aby programować używając rejestrów. W CubeIDE masz przynajmniej pewność, że wszystkie pliki CMSIS są aktualne. Jak zrobić projekt bez HAL: 1. Wygenetuj...
Witam od dwóch dni walczę z bibliotekami Fatfs, i mam niezidentyfikowany błąd, wykończyły mi się pomysły. Sprawa wygląda tak posiłkuje się przykładami z książki STM32 w praktyce Autor: Krzysztof Paprocki. W zasadzie chce skompilować gotowy kod , (przykład R9 sd_fatfs) działam na układzie STM mini http://allegro.pl/zestaw-uruchomieniowy-...
Jakiego typu jest absolutnie absurdalny i perwersyjnie wypaczony pomysł, aby mając OSa robić takie delay'e w wątkach ??? Również o podobną perwersję zakrawa wykonywanie przerwania timera co mikrosekundę tylko po to, zeby zmniejszać tam jakąś zmienną. Wez timer, skonfiguruj go jako one-shot, skonfiguruj mu takt na 1us, do ARR wpisz chciany czas w us,...
Na szybko udało mi się uruchomić i usłyszeć jakieś dźwięki. na początek bez obsługi karty pamięci, próbkę dźwięku wrzuciłem na sztywno do tablicy. Niestety nie mam źródła tej próbki i nie mogę porównać tego co słyszę z oryginałem (znalazłem coś w internecie). A słyszę it's working oraz przydźwięk :( Na szybko też nie bawiłem się w ustawianie drugiego...
Cały obecny kod: http://obrazki.elektroda.pl/5926424400_1...
Czekam 100ms od uruchomienia timera1, oraz 50ms na starcie w funkcji init_lcd() Kod: main.c Dodano po 7 Udało mi się ograć problem po przez dodatkową inicjalizację w pętli while w programie głównym i dziwne znaki na wyświetlaczu pojawiają się ale rzadziej: [syntax=c] int main(void) { /* USER CODE BEGIN 1 */ uint8_t a=0; /* USER CODE END 1 */ /* MCU...
Hejka, od niedawna mam płytkę stm32 discovery. Próbuję już 2 dzień i mi nie działa transmisja po rs232.. układzik łączący z kompem zrobiłem na max3232 i jak sprawdzam echo (rx z tx) to wszystko ładnie śmiga. A jak podłącze to do pinów PA9 i PA10, to cały czas otrzymuję znaki puste. Wydaje mi się, że program poprawnie napisałem.. [syntax=c] #include...
Hej. Jestem bardzo świeży w temacie mikrokontrolerów i od razu mam problem z taką błahostką jak odczyt danych z czujnika DHT11. Moje urządzenie to STM32L152RBT6, korzystam z znienawidzonych (sic!) tutaj bibliotek STM32L1xx_StdPeriph_Driver. Póki co chcę ich używać. Nie mam w zwyczaju pisać na żadnych forach ponieważ wolę wcześniej poszukać jednak tutaj...
Nie, procek się nie grzeje Zworek nie ruszałem, St-link (oba) na dole JP2 i JP3 też i na górze JP1 zwarte jak były Programuję w środowisku Keil v5 #include "delay.c" #include "delay.h" #include "stm32f4xx.h" void GPIO_Config(void) // konfiguracja portow gpio { GPIO_InitTypeDef GPIO_InitStructure; //tu nalezy...
Witam. Od jakiegoś czasu walczę z płytką STM32F334 DISCO + wyświetlacz 16x2. Napisałem kod z pomocą StdPeriph - zadziałał, chciałem trochę poprawić kod i napisałem go rejestrami - nie działa. Przebiegi są dokładnie takie same. Przechodząc do rzeczy, zacznę może od kodu który działa : Sam kod wygląda tak : https://obrazki.elektroda.pl/7092947700_...
Cześć! Korzystam z płytki Nucleo-STM32L476RG, do której podłączyłem sobie czujnik DS18B20. Chcąc go uruchomić potrzebuję opóźnienia rzędu 1us. Napisałem sobie funkcję "delay_us" niestety liczy ona dwukrotnie za szybko. MCU pracuję z częstotliwością 80MHz. Wykonałem test z użyciem SysTicka (zakomentowane linie kody w programie) i odliczanie 1 sekundy...
stm32 delay systick stm32 systick delay systick handler
czujnik czarny czujnik zielony włącznik wstecznego renault magnum modulator
Kompatybilność części Oleo-Mac GS 370 i 937 Skuter 4T 50 cm³ - problem z wysokimi obrotami