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!!
(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;...
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);...
[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]
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ć :)
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...
Dzień Dobry Mam pewien problem chcę przenieść sobie obsługę wyświetlacza LCD z avr na stm i pojawiły się problemy związane z napięciem zasilania i realizacją opóźnień. Chciałbym najpierw zapytać o realizację opóźnień. Mam dwie funkcje na bazie systicka, ale pewne rzeczy mnie zastanawiają. Pokażę kod: 1. Najpierw milisekundy [syntax=c] void delay_ms(uint32_t...
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...
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"...
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ę.
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 .
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...
(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.
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ść...
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"...
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;...
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
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...
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.
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...
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,...
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?...
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) } //--------------------------------------...
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ę...
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,...
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,...
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, 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. ** **...
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...
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...
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...
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...
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);...
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 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...
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ł...
Witam, wyświetlacz pokazuje mi nieodpowiednie znaki na ekranie. Ośmio bitowy tryb wyświetla nieprawidłowe znaki(po wpisaniu jednego polecenia wyświetlają się dwa znaki) a cztero bitowy nie wyświetla nic. Trzeba jakoś ustawić taktowanie zegara? Używam ekspandera I2C PCF8574 czyli D4-D7 dane, D0-D3 rs,rw,en,led tak ? Orientuje się ktoś co robię źle? Jestem...
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...
[syntax=c] #include <stm32f4xx.h> #include <stm32f4xx_rcc.h> #include <stm32f4xx_exti.h> #include <stm32f4xx_tim.h> #include <stm32f4xx_gpio.h> #include <misc.h> GPIO_InitTypeDef display[8], power[4]; int digits[10] = {0x03, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 0x01, 0x09}; unsigned int time = 0; void SysTick_Handler(){...
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...
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.
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 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, 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 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...
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...
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, 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 ----------------------------------------...
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...
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;...
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......
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:...
Cześć, Od jakiegoś czasu borykam się z takim problemem: chciałbym odbierać po CANie ramki, wpisywać je w gotowy szablon i dalej wysyłać po USARCie na kompa w kodzie ASCII. Czegoś mi brakuje w tym kodzie i za każdą wskazówkę będę wdzięczny. Z góry dzięki:) To mój main: [syntax=c] unsigned char tx_uart[]=" ID: DL: F: T: DATA: ";//54 char ramka[55]; unsigned...
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...
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;...
Witam, Próbuje uruchomić wyświetlacz oparty o ILI9341 z wykorzystaniem SPI. Wyświetlacz sprawdzałem pod Arduino i działa, jest sprawny. Próbuję podpiąć go do STM32F407ZET6. SPI działa, widać że są przesyłane dane na oscyloskopie. Zaczerpnąłem procedurę inicjalizacji wyświetlacza z Adafruit dla Arduino ale wyświetlacz jak był biały tak jest po wgraniu...
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...
Witam Posiadam zestaw STM32F4-Discovery i próbuję uruchomić projekt, który na wyświetlaczu LCD będzie wyświetlał odczyty z akcelerometru. Program jest z ksiązki p. Marka Galewskiego (zmieniłem konfigurację portów GPIO, żeby była kompatybilna STM32F4; w książce opisywany jest akcelerometr LIS35DL, ale adresy rejestrów zgadzają się z tym z zestawu Discovery)....
Dlaczego wyskakuje mi błąd "Undefined symbol Init_GLCDPORT?" [syntax=c] /* Includes ----------------------------------------... #include "main.h" #include "stm32f4xx_gpio.h" /* Private typedef ----------------------------------------... /* Private define ----------------------------------------...
Witam wszystkich, Próbuję uruchomić wyświetlacz LCD znakowy 2x40 ze sterownikiem hd44780 na procesorze STM32L na płytce STM32L-Discovery. Korzystałem z książki "STM32 Aplikacje i ćwiczenia w języku C" Marka Galewskiego. Do książki były dołączone pliki biblioteczne do obsługi właśnie hd44780. Wykorzystałem te pliki, zmieniłem jedynie port pod który podpiąłem...
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...
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_...
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, 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...
Witam, mam problem z termometrem DS 18B20. Termometr zasilany jest pasożytniczo tylko przez środkową nogę napięciem 3,3V i podłączony do portu PB15. Pozostałe nogi do masy. Poniżej podaje funkcje napisane do termometru. [syntax=c] #include "systick.h" #define portW1 GPIOB #define wire1 GPIO_Pin_15 uint16_t RESET_PULSE(void) { uint16_t PRESENCE=0; GPIO_ResetBits(portW1,...
Jechałem debugerem i nie wchodziło w SysTick_Handler... Kod poniżej: [syntax=c] /************************* * stm32 uart main.c *************************/ #include "stm32f10x.h" #include "stm32f10x_flash.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "stdint.h" #include "misc.h" #define CLK_FREQ 72000000...
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.
Dzień Dobry Chciałem zapoznać się z konfiguracją przerwań zewnętrznych. I mam pewien problem. Wydaje mi się, że rejestry skonfigurowałem dobrze. Założenie jest takie, żeby wygenerować sygnał prostokątny na pinie następnie podać ten sygnał na pin który będzie odpowiedzialny za przerwanie zewnętrzne. W przerwaniu chciałbym zmieniać stan diody. Przykład...
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,...
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...
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...
stm32 delay systick stm32 systick delay systick handler
amica optima instrukcja wyświetlacz brother odzyskać zdjąć telefon
Renault Kangoo błąd DF053 - auto nie odpala Problemy z BSOD po klonowaniu dysku IDE na SATA