Porównaj: SysTickHandler SysTick_Handler 4\/3!!
Te mikrokontrolery mają coś takiego jak System Tick Timer, dzięki któremu możesz ustawić przerwania z dokładnością do 10ms. Ja mam coś takiego ustawionego dla LPC1343 (inicjalizacja SysTick): [syntax=c] // System Tick Clock source: System clock SysTick -> CTRL = 0x7; // Program the LOAD register (10msec) SysTick -> LOAD = 0x0927BF; // Clear SysTick...
Wskazany w linku debugger to zapewne JLink ale za cenę niespełna 10 $ to napewno nielegalny klon :) Jeżeli chcesz poznać LPC'ki i mieć debugger to wejściami . Kiedyś zapomniałem o tym fakcie i dziwiłem się dlaczego program nie działa tak jakbym się tego spodziewał.
witam, mam podobny problem, nie wiem co robię źle, chcę zapalić diodę podłączoną do PB0 za pomocą przerwania od przycisku podłączonego do PC7 lub 8. po wgraniu kodu przerwanie od SYSTICK ładnie działa, zapala i gasi na zmianę diodę na PB1, natomiast dioda na PB0 swieci się cały czas i nie ma żadnej reakcji na naciskanie przycisku.... poniżej kod.
Bez obrazy, ale nachalne wciskanie początkującym rozwiązania DIY, którego sama konfiguracja wymaga przeczytania podręcznika w sytuacji, gdy są dostępne darmowe rozwiązania gotowe, zbudowane zresztą z tych samych klocków co DIY, zakrawa na jakąś dziwną autopromocję... Jestem tego świadomy, dlatego - z tego co sobie przypominam - NIGDY nikomu niczego...
Witam, Mam płytkę ewaluacyjną STM32L1Discovery i mam mały problem ze zrozumieniem działania licznika SysTick. Przy włączonym HSE (32MHz), dzieleniu częstotliwości przez 8 i później przez 1000 w ustawieniach SysTick`a przerwanie teoretycznie powinno się generować co 1ms. W praktyce jest tak że dioda świeci około 2s(delay(1000)) gasnie 2s. Czyli mamy...
impulsy są generowane przez przerwanie SysTick
SystemCoreClockUpdate(); SysTick_Config( SystemCoreClock / 1000 )... Mogę sprawdzić na SysTicku, tylko że to nie ma żadnego związku z szyną APB1 (przypominam, że dla dzielnika APB1 równego 1,2 lub 4 dioda pulsuje poprawnie). BTW. dlaczego SystemCoreClock / 1000 ? Jeśli dobrze liczę, skoro pędzę procesor zegarem 80MHz, SysTick dostaje ten zegar podzielony...
Jak pewnie wiecie dioda nie miga co pół sekundy i tu jest moje pytanie. Nie widzę w kodzie żebyś przetaktowywał procesor na 72MHz ? generalnie kod systicka co zmienia stan diody co pół sekundy wygląda tak: Miga na 5 sekund co 5 sekund (~). dla zrodla systicka: SysTick->CTRL=0x7;, a dla jakich magistral? :) Wiesz co to jest RCC ? Albo PLL ? Bo jak nie...
Bardzo dobra myśl. Sprawdziłem za pomocą SysTick [syntax=c] void SysTickConfig(void) { SysTick->CTRL &= ~SysTick_CTRL_CLKSOURCE;// AHB / 8 = 9Mhz SysTick->LOAD = 8999999; //1 sek SysTick->CTRL |= SysTick_CTRL_ENABLE; } [/syntax] W main() mam fragment [syntax=c] GPIOC->BSRR |= GPIO_BSRR_BS6; while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG)); GPIOC->BRR...
Witam Niedawno zacząłem "zabawę" z zestawem Kamami ZL27ARM z procesorem STM32F103VB. Mam problem z przerwaniem od timera SysTick. Jest ono generowane 4 razy za często - miało być 1 raz na sekundę, a jest 4. Kwarc 8MHz, SYSCLK = 72MHz, SysTick_CLK= 72/8=9MHz czyli załądowanie do licznika wartości 9'000'000 powinno dać zgłoszenie przerwania co 1s, więc...
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.
Dzień dobry, Napisałem sobie program (korzystam z: STM32CubeMX oraz Atolli TrueStudio, mam BluePill STM32F103C8, port szeregowy podłączony za pomocą UART2 oraz konwertera FT232RL (ustawionego na 3,3V - bo w dokumentacji wyczytałem że te wejścia nie tolerują 5V) do portu USB, gdzie łączę się za pomocą BrayTerminal). Na BluePill mam wbudowaną jedną diodę,...
SysTick_Config() to przykład całkowicie bzdurnej funkcji, która "za Twoimi plecami" ustawia na sztywno że SysTick będzie taktowany z zegara rdzenia podzielonego przez 8. Tak wiec dla Twojego mikrokontrolera taktowanego zegarem 48MHz, SysTick był taktowany zegarem 6MHz. Właśnie potwierdziłeś co pisałem wcześniej, nie znam tej funkcji aż tak dogłębnie...
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...
Witam. Rozpocząłem przygodę z programowaniem układów STM32F4. Nabyłem płytkę XNUCLEO-F401RE (kompatybilną z NUCLEO-F401RE) oraz skorzystałem z kursu który znajduje się pod tym linkiem [url=http://forbot.pl/blog/artykuly/prog...
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...
Droga, którą obrałem to wpierw HAL, ze względu na bardzo przyjazną graficzną możliwość konfiguracji, a potem wraz z przeglądaniem dokumentacji powolne przechodzenie na rejestry. Po prostu po kolei np. obsługę portów (wejścia/ wyjścia) stosuję już bezpośrednio na rejestrach. I tak krok po korku ;) Co do wcześniej opisanego problemu, to moduł BT sterowany...
Przesada. Jedna dioda to 30µs, a więc typowy 5m łańcuch 60/m to 9ms 9ms dla mnie to wieczność. W 9ms, to nawet przy 9600 gubię 9 znaków, przy 115200 ponad 100. W ARM, przerwania systick są co 1ms,więc gubię 9ms. Milisekunda to ogrom czasu, co dopiero 9ms. Może autor na razie nie używa UART ale nie wiadomo, czy Autor coś jeszcze nie będzie chciał...
jest mały problem uruchomiłem wszystko jednak system się zawiesza dioda się zapala uruchamia się wyświetlacz i usart wszystko zawiesza :/ main.c [syntax=c]/*****************************... (c)*************************************... ** ** http://www.powermcu.com ** **--------------File Info------------------------------------...
Witam, modyfikuję bibliotekę pod klawiaturę matrycową 4x4. W funkcji "Keypad4x4_ChangeColomn" dla określonego warunku należy zmieniać ustawienia pinów z PushPull na Oped Drain. Wszystko funkcjonuje dobrze : dla pierwszego warunku "if(colNum_0_to_3==0)" bity w rejestrze zostają ustawione poprawnie, jednak dla kolejnych warunków pozostają one bez zmian,...
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;...
Dziękuję za sugestię :) Śmieszne... Trzymając przycisk RESET, odpaliłem OpenOCD i nic... Pomyślałem... Wcisnę desperacko do tego przycisk USER-> Podpięty do GPIOA PIN_0 Dioda sygnalizująca komunikację pomiędzy komputerem a płytką zaczęła migać... Odpalił się nawet mój stary program... SysTick Timer zaczął działać... Dioda zaczęła migać co sekundę......
Przesadzacie trochę z tym SPLem. To że ktoś nie potrafi skonfigurować SysTick to nie wina biblioteki. Jak masz ustawione zegary? w SPLu plik system_stm32f4xx.c (jest makro w excelu do generowania tego pliku dostępne na stronach ST) Jaki masz kwarc i jaką wartość ma stała preprocesora HSE_VALUE ?Obsługę przerwań masz w pliku stm32f4xx_it.c Te trzy linijki...
może popatrz na to: https://stm32.eu/2012/04/11/timer-systic... Nie mam doświadczenia z STM32. Moja odpowiedź raczej dotyczyła licznika 4-bitowego.
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,...
Niby można i tak, ale normalnie robi się to inaczej - programujesz SysTicka na jakąś ładną, okrągłą częstotliwość, np. 100 lub 1000 Hz, a w przerwaniu odliczasz programowo i co ileś przerwań coś robisz. Wrzucam Ci program na STM32F0, który miga dwiema diodami przy użyciu SysTick, co pół sekundy. [syntax=c] /* STM32F0DISCOVERY SysTick-based blinker gbm,...
Użyłem RCC_HSI48Cmd(ENABLE); i już nie zacina przycisku przy ustawieniu 48000, jednak zgasła dioda LED do pomiaru częstotliwości. Mam taką oto procedurkę: [syntax=c] void RCC_Config(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); // Reset ustawien RCC RCC_HSEConfig(RCC_HSE_ON); // Wlacz HSE RCC_HSI48Cmd(ENABLE); HSEStartUpStatus = RCC_WaitForHSEStartUp();...
Wszystko jasne. Można zrobić to tak modyfikując ten plik: stm32f4xx_it.c a dokładnie to: [syntax=c]void SysTick_Handler(void) { /* moje komenda np.: zamrugaj diodą */ }[/syntax]
Ok, dodałem alternatywną funkcje dla portu: [syntax=c] BUTTON_PORT->AFR[1] |= 0x2;//Alternate function selection for port => TIM1_CH1 [/syntax] Teraz jest lepiej, gdy połączę PC8 z PA8 (dioda już nie gaśnie). Przypisuję capture/compare register 1 do globalnej zmiennej i następnie sprawdzam podczas debugowania wartość tej zmiennej w pętli for(;;)....
0x000000E0 E7FE B SysTick_Handler (0x000000E0) To mi wygląda na pętle nieskończoną czyli wygląda to tak program wchodzi w ten adres : 0x000000E0 i wykonuje skok pod adres taki sam do jakiego wszedł a tak być nie może i dlatego widzisz że program "stoi". Teraz włączyłem Keila i przejrzałem tego start up i bym proponował coś takiego (ostrzegam...
Ech, mam dzisiaj dzień dobroci... [syntax=c]#include "stm32f10x.h" #define SYSCLK_FREQ72000000 // jesli srodowisko magicznie nie skonfigurowalo zegara -> zmienic na 8000000 #define SYSTICK_FREQ100 #define LED_BIT13// PC13, active low //======================================... int main(void) { // enable peripherals...
Od kilku dni walczę z ćwiczenie 8.4 z kursu: http://www.elektroda.pl/rtvforum/topic31... W kursie jest kod dla F103, ja próbuję to przerobić dla wersji F407. Niestety bezowocnie. Sam timer, kiedy wyzwalać go sygnałem zegarowym, działa prawidłowo i włącza/wyłącza diody w procedurze przerwania. Niestety kiedy ma zliczać impulsy na pinie...
Ad. 3. Tak, mam ten moduł od pewnego czasu. Ad. 4. Zrobię jak piszesz. Prawie w każdym programie i tak uruchamiam SysTick, który miga diodą - informacja, że program nie poszedł w krzaki.
Ok, dzięki w takim razie zacznę pisać programy nie korzystając z gotowych funkcji, ale mam jeszcze jedno pytanie o role plików _write.c i _inictialize_hardware.c które dodawane są do moich projektów nie zależnie czy wybrałem projekt z dodanym przykładowym programem na świecenie diodami czy nie, o ile widzę w drugim pliku inicjalizacje PLL to pierwszy...
Np. zaprogramuj SysTick lub dowolny inny timer na zgłaszanie przerwań z częstotliwością 100 Hz. Co 25 przerwań zmieniaj stan jednej diody, a co 100 - drugiej. Wszystko razem zmieści się w max. 20 liniach. Jeśli chcesz "zobaczyć" działanie timera z rejestrami compare - użyj dwóch rejestrów CC. W przerwaniu końca okresu zaświeć dwie diody, w przerwaniu...
Wydaje mi się że świecenie diody trwa dłużej niż 1s... raczej jestem przekonany. 1) Masz błędy w konfiguracji zegarów 2) Nie masz żadnej pewności że rdzeń chodzi na 168MHz... 3) Nie wiesz co jest wpisywane do systick'a 4) Wiesz, że takt RTOSa nie wynosi 1ms Na podstawie powyższych punktów ogarnij sprawę zegarów
Czy działa Systick to łatwo sprawdzić w debuggerze. Zresztą wiele spraw można sprawdzić. Ja bym zaczął od tego czy właściwe rejestry podlegają zmianom. To nie jest nic trudnego, w krokowym trybie Też jaka wartość jest SystemCoreClock, to zmienna globalna. Może ląduje gdzieś w HardFault, zaraz po uruchomieniu. EDIT. Często problemem przy kopiowaniu plików,...
Ok po kolei bo widać trochę zamieszałem. Zarówno w kofiguracji O0, O1, O2, Os występuje ten sam problem. Wchodzi cały czas do funkcji obsługi przerwań. Hard fault przestał występować po aktualizacji biblioteki core_cm3.h i c. Moje inicjalizacje wyglądają następująco: dokładnie na odwrót jak chce. Przycisk wciśnięty -> Nie ma przerwania żadnego. Przycisk...
Witam, Napotkałem ostrzeżenie przy kompilacji kodu: [syntax=csharp]#include "stm32f10x.h" int main(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; //Wlaczenie zegara portu A /*dioda*/ GPIOA->CRL |= GPIO_CRL_MODE5_1; //Wyjscie 2MHz GPIOA->CRL &= ~GPIO_CRL_CNF5_0; //Open-drain SysTick_Config(4000000); while(1) { }/*while*/ }/*main*/ __attribute__((interrupt))...
W poradniku Szczywronka opis konfiguracji zegara był dokładnie opisany dla STM32F103. Przepisanie kodu stamtąd powinno dać Ci poprawny wynik konfiguracji. Teraz piszę z pomocą CMSIS". Pracę z STM zaczynam zawsze od przygotowania funkcji SystemClockConfig() jak to opisano w poradniku, posiłkuję się zarazem schematem z zegarów z CubeMX . Całość odbywa...
Nie widzę wywołania SystemCoreClockUpdate(). SysTickConfig uruchamia timer, a Ty później próbujesz ręcznie robić na nim delay(). Zdecyduj się na jedno albo drugie. Najlepiej zapomnij o jakichkolwiek delay(). Gdyby wszytsko zadziałało, sekunda u Ciebei miałaby 999 milisekund, a co ok. 4 miliony sekunud zegar miałby dość nieregularną sekundę. Zaprogramuj...
Witajcie, od dwóch dni próbuję ogarnąć przerwania EXTI. Już na to patrzeć nie umie... Gdy naciskam przycisk wszystko się zacina. Działanie programu (docelowe jakie ma być): dioda mruga co sekundę, po wciśnięciu przycisku gaśnie, po ponownym wciśnięciu zaczyna mrugać i tak w kółko. Działa: mruga, po wciśnięciu zostaje w stanie w jakim była podczas wciskania...
Po mojemu się zgadza :) W razie wątpliwości możesz jeszcze podać sygnał zegarowy SYSCLK na wyjście MCO (Master Clock Output) i zmierzyć częstotliwość. Ewentualnie wersja dla leniwych (lub nie posiadających odpowiedniej herc-miarki): ustawić SysTick tak aby migał diodą co np. 0,5s i skonfrontować efekty z jakimś stoperem :)
Nie mam oscyloskopu pod ręką :( Gdy zrobiłem tak: [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" volatile uint8_t x=0; int main(void) { RCC -> AHBENR = RCC_AHBENR_GPIOCEN; // port C GPIOC -> MODER |= GPIO_MODER_MODER8_0; // wszystkie piny jako wyjścia GPIOC -> PUPDR |= GPIO_PUPDR_PUPDR8_0;//pull-up dla całego portu SysTick_Config(16000000);//SysTick...
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...
Zacznijmy od tego, że w poprawnie napisanym programie do sprawdzania stanu przycisku nie używa się ani przerwania od przycisku (bo to nie ma prawa działać), ani pętli zdarzeń (bo jest to optymalne i nie ma sensu). Cała funkcjonalność programu, o ktrórym mowa, powinna być zrealizowana w przerwaniu timera, np. SysTick.
Dodam, że VAL podczas inicjowania należy wyzerować, a migania diody z częstotliwością rzędu kHz raczej nie zauważysz.
Witam Ten kod jest zakręcony jak świński ogon, i jeszcze te biblioteki. Masz rację że ale USB nie jest takie proste żebym bez przykładu ruszył więc oparłem program na przykładach udostępnianych przez ST. bez USB_Istr(); Program wchodzi do przerwania od USB -> USB_LP_CAN1_RX0_IRQHandler() i już tam zostaje. Teraz odkryłem USB_Istr(); i po kolei: -Ukrycie...
Od kilku dni próbuję uruchomić FreeRTOS i zamigać diodami na zestawie Hymini z procesorem STM32F103VCT6. Używam Eclipse Juno oraz Sourcery G++ Lite 4.6.3. Projekt kompiluje się poprawnie. Wcześniej program zatrzymywał się na przerwaniu HardFault_Handler. W pliku FreeRTOSConfig.h dodałem więc linie #define vPortSVCHandler SVC_Handler #define xPortPendSVHandler...
systick handler stm32 systick systick interrupt
ekspres nivona przepływomierz równoległa mosfet immergas wyświetlane błędy
Skoda Octavia 1.6b: Climatronic nie grzeje przez brak termostatu Odgłosy mielenia w Oplu Astra H 1.9 CDTI - przyczyny i diagnostyka