Porównaj: SysTickHandler SysTick_Handler 4\/3!!
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ł.
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, 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...
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, 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...
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...
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...
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...
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ę,...
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...
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...
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,...
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]
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...
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,...
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
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,...
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))...
Witam Zamierzałem ustawić zegar na 32MHz w następujący sposób: zewnętrzny kwarc 8MHz i pętla PLL x8/2. Posłużyłem się przykładami zawartymi w RM, kod konfiguracji: [syntax=c]// --- RCC ----------------------------------------... RCC->CR |= RCC_CR_CSSHSEON // Clock security system on HSE enable bit | RCC_CR_HSEBYP // HSE clock bypass bit | RCC_CR_HSEON;//...
Dobra, zadziałało. Program generuje stabilne wykresy, nawet do 18kHz. To fakt, że teraz im mniejsze dX, tym większa częstotliwość, ale zastosowano odwrotność (R/dX) i będę musiał sobie poprzeliczać dX'y na częstotliwości odpowiadające nutom. Dla potomnych zamieszczam tu gotowy, działający kod. Brakowało będzie tylko konfiguracja peryferiów i wypełnienia...
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...
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...
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...
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...
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...
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...
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(;;)....
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...
systick interrupts stm32f4 systick systick handler
czyścić zbiornik paliwo mazda alarm schemat tester gniazda procesora
Skoda Yeti 1.8 TSI 4x4 2012 - Kierownica multimedialna nie działa po wymianie radia na Android Znaki na kole zamachowym silnika Andoria 1CA90