(at)ElektrodaBot,post=21642893"]. Co dalej / pytania pomocnicze 1. Czy dioda ECO świeci ciągle czy miga? Ciągle świeci 2. Czy pompa spustowa pracuje zaraz po włączeniu? Nie da się włączyć 3. Czy panel kiedykolwiek „zakwili” brzęczykiem przy dotyku, nawet cicho? Tylko jak power on lub off Inne "przyciski" nie reagują Podsumowanie – co już wiemy • Zmywarka:...
Dopisz coś takiego: [syntax=c]... TIM2->ARR = 6550; TIM2->EGR = 1; //bit UG TIM2->CNT = 10; ...[/syntax]
Btw. dlaczego atrybyt "interrupt" jest zbędny i powiększa kod? Dla Cortexów to co robi ten atrybut (zapewnienie wyrównania stosu do 8 bajtów) da się zrobić sprzętowo. W większości Cortexów jest to domyślnie włączone, w przypadku STM32F1 trzeba sobie to akurat włączyć przy użyciu takiej oto linijki "SCB->CCR |= SCB_CCR_STKALIGN_Msk;". Ponieważ atrybut...
Witam, W przypadku wykorzystywania przerwań EXTI trzeba włączyć zegar dla AFIO RCC_APB2Periph_AFIO. Cytat z STM100xx Referene Manual (RM0041, rozdział 7.4 pierwsza notka) To read/write the AFIO_EVCR, AFIO_MAPR, AFIO_MAPR2 and AFIO_EXTICRX registers,the AFIO clock should first be enabled. Więc aby poprawnie skonfigurować przerwania EXTI (zapis do rejestrów...
Choć dopiero zaczynam przygodę z STM32 to po mojemu nadpisujesz strukturę i dlatego zawsze działa Ci ostatnie zdefiniowane przerwanie.
STM32F10x Standard Peripherals Library - niestety ST wygenerowalo dokumentacje w formie pliku pomocy i nic z tym się nie zrobi - popprzednia wersja biblioteki (2.0) miała to w wersji pdf. Ale to właśnie w tym pliku dokładnie opisane są wszystkie funkcje bilbioteki związane z pracą peryferiów plik stm32f10x_it.c zawiera definicje wszysktich funkcji odnoścnie...
Witam Od dłuższego czasu zmagam się z ogarnięciem ethernetu na STM32. O ile z warstwą sprzętową i konfiguracją poszło relatywnie łatwo - TCP loopback i pingi w zasadzie zadziałały od razu, o tyle z UDP miałem dość poważny zgrzyt no ale finalnie działa - jestem w stanie wysyłać dane pod wybrany IP oraz je odbierać. Tak więc na poziomie konfiguracji wszystko...
Witam, Mam problem z realizacją przerwania z USART3 na STM32L152RBxx. W momencie wywołania przerwania debugger zatrzymuje się na funkcji default_handler(). Poniżej umieszczam kod: main: #include "stm32l1xx.h" #include "stm32l1xx_conf.h" #include <string.h> void GPIO_Conf(void); void RCC_Conf(void); void NVIC_Conf(void);...
Witam, chciałbym mieć przerwanie zewnętrzne na PE0 a cały czas cokolwike bym nie zrobił, przełączył, zmienił itd jest na PA0, moglby ktos rzucic okiem na kod i powiedziec co jest zle... wydaje mi sie ze w tym syscfg jest cos zrabane, albo nie chce sie ustawic etc... swoje wnioski opieram na tym ze PA0..2 normalnie smiga tylko nie mogeprzejsc jakby na...
witam, Mam następujący problem: Do Pinu 3 portu GPIOC mam podłączony sygnał 1kHz i chcę generować przerwanie od zbocza opadającego. moja konfiguracja: [syntax=c] GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GP... ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SY...
mam ustawione przerwanie zewnętrzne ustawione na wyzwalanie zboczem opadającym i narastającym w funkcji obsługi przewania zapisuję sobie do bufora: void EXTI0_IRQHandler(void) { //Check if EXTI_Line0 is asserted if(EXTI_GetITStatus(EXTI_Line0... != RESET) { Buffer[iWriteIdx] = 'I'; GoToNextElement(&iWriteIdx);...
Zieeew. Mówimy o podstawach działania UART, a nie o jakichś wydumanych parametrach ilościowych. MUSIMY co jakiś czas (np. co kilkadziesiąt bajtów) robić przerwy w transmisji danych nie krótsze niż czas transmisji bajtu, bo inaczej być może NIGDY nie odbierzemy żadnej danej. Parę razy temat ten był już poruszany. No właśnie temat był już kilkanaście...
Witam, Szukałem na forum i nie znalazłem... Mam taki oto problem, przerwania są skonfigurowane w następujący sposób: [syntax=c] NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); NVIC_PriorityGroupConfig(NVIC_PriorityGr... NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemp...
Witam, przy ustawionym preskalerze np na 80 przerwanie zostaje wywołane, ale gdy zmniejsze preskaler to przerwanie się nie wykonuje. #include "stm32f10x.h" void RCC_Conf(void); void Show(int); void GPIO_Conf(void); void NVIC_Conf(void); void TIM_Conf(void); . . . int main(void) { #ifdef...
Witam, Jestem poczatkujacy jesli chodzi o programowanie pod architekture Cortex. Posiadam zestaw ewaluacyjny STM32 Butterfly. Probuje skonfigurowac przerwanie, aby wykonało się po naciśnięciu przycisku. Debugujac program widac, ze po nacisnieciu przycisku flagi sa ustawiane, ale funkcja obslugujaca przerwanie nie jest wywolywana. tak wyglada moj kod...
Witam, Naciąłem się na problem z przerwaniami z którymi nie mogę sobie jak na razie poradzić. Jeśli w bootloader'ze nie wykorzystam przerwać, to po skoku do aplikacji wszystko działa ok, jeśli natomiast zostanie tam wykorzystane, to aplikacja już ich nie wykonuje. Wydaje mi się że ma to związek z wskaźnikiem przerwania, ale nie mogę znaleźć rejestru...
Czesc, mam problem z konfiguracja przerwan zewnetrznych. Sprawdzalem kilka przykladow znalezionych w necie i zaden (prawie) nie dziala. Jedynym przykladem ktory dziala jest gotowiec z Atollic studio, i generowanie przerwan na porcie PA0. Niestety zadne modyfikacje na inne porty nie dzialaja. Oto moj kod: Inicjalizacja GPIO na porcie PB12: [syntax=c]void...
Programiści wykorzystujący STM32 z serii L najczęściej korzystają z biblioteki HAL do obsługi tego typu przerwań. Chciałbym skonfigurować przerwanie które resetowałoby procesor po rozłączeniu zasilania bez jej wykorzystania. Układ zaprojektowany mam tak aby na pinie PA2 pojawiła się jedynka w momencie odcięcia zasilania. Według dokumentacji załączonej...
Witam Bardzo często nie mogę debugować programów ponieważ debuger się zawiesza w momentach jak poniższych screenach poniżej. Zerwanie połączenia czasami pomoże a czasami nie. Widać że nie mogę wybrać ani opcji "Resume" ani "Terminate". Nie wiem czy to może mieć coś wspólnego ale dodam jeszcze, że zauważyłem iż nawet kiedy nie chce debugować (program...
Witam. Za mną cały dzień ślęczenia nad tym nieszczęsnym prockiem i problem dalej nie rozwiązany. Potrzebuję oprogramować przerwania EXTI z przycisków/krańcówek itd. Z kodem zszedłem już do poziomu migania diodą, żeby tylko uruchomić sukcesywnie te przerwania, a tu dalej klapa. Program w momencie przerwania przechodzi od razu do pętli Reset_Handler i...
Witam Mam następujący problem przy płytce STM32F0Discovery. Celem programu jest na poziomie obsługi przerwania ustawienie globalnej zmiennej, a następnie po powrocie do maina sprawdzenie zmiennej i wykonanie instrukcji. Kod pliku main.c [syntax=c] #include "stm32f0xx.h" #include "setup.h" volatile bool new_data = false; int main (void){ setup(); while(1){...
Mam skonfigurowany I2C wraz z DMA do odbierania danych z sensorów. Inicjalizacja odbioru następuję z częstotliwością 100Hz i jest załączana przez timer, następnie standardowo w przerwaniach od I2C i DMA dane są odbierane. Konfiguracja jest prawidłowa, ponieważ gdy testuje odbiór danych podczas nieskończonej pustej pętli while w głównej funkcji main():...
Cześć, mam dziwny problem z STM32F030K6T6. Są dwa timery TIM1 i TIM3. TIM1 ma podpięte 4 kanały PWM. Sytuacja jest następująca: zezwolenie na przerwania pochodzące od TIM3 powoduje zaprzestanie działania PWM na kanałach 1,2,3. 4 działa poprawnie. W agonicznym poszukiwaniu problemu wyłączyłem wszystkie inne przerwania a kod obsługi IRQ TIM3 wygląda teraz...
Cześć, Mam taką funkcję jak poniżej, która powinna przełączyć procesor w tryb STOP2. Testowo wywołuję ją zaraz przed wejściem w pętle główną for(;;) w main.c Problem polega na tym, że jak bym tego nie robił, to procesor w ogóle nie reaguje na WFE. Przerwania są jak widać wyłączone, żadna flaga pending w EXTI nie jest podniesiona. Żadne przerwanie 'nie...
Próbuję pożenić template Freddiego (stm32_blink_led) z StdPeriph Ale to widziałeś? http://www.freddiechopin.info/pl/artykul... Ma ktoś pomysł co może być nie tak ? W skrypcie linkera należy ustawić rozmiar stosu dla przerwań - domyślnie jest zero, co zwykle źle się kończy. Ustawiłeś...
zy obsługę przerwania mogę mieć w pliku main.c tak jak w avr czy musi to być plik-stm32f10x_it.c? Pliki stm32f10x_cośtam to jakby sterowniki urządzeń (GPIO, SPI, NVIC itd...). To są jakby "drajwery", a użycie ich, stworzenie ich konkretnej konfiguracji, inicjację struktur i inne rzeczy powinieneś umieścić w swoich plikach. W żadnym wypadku nie polecam...
Niestety nie mam oscyloskopu i jest to dla mnie spore ograniczenie w obserwowaniu procesów i rozwiązywaniu tego typu problemów. Podczas pracy i rozruchu tranzystory nie grzeją się wcale. Wystepuje jednak małe szarpnięcię podczas rozruchu. Poniżej zamieszczam kod z prośbą o sprawdzenie poprawności. Odpowiedzialny jest on za sztywny rozruch, druga część...
Jeśli używasz DIY toolchain wg. Freddiego, to zapewne właśnie wpadłeś w jego słynną pułapkę z brakiem stosu. NVIC_Configuration możesz spokojnie wyrzucić.
A zająłeś najpierw semafor ? xSemaphoreTakeFromISR. Nie możesz zwolnić semafora jeśli go wcześniej nie zajmiesz. Niby oczywiste, ale z postu, który napisałeś wnioskuję dziwne rzeczy Semafor jest zajmowany dwa razy. Raz po stworzeniu bez blokowania, drugi raz w miejscu gdzie wątek ma czekać na przerwanie. Dla STM32 configPRIO_BITS jest równe 4. U siebie...
Cześć, Nie dawno zacząłem przygodę z STM32. I mam duży problem nad którym siedzę już parę dni. Chciałem stworzyć prostą komunikację z komputerem gdzie przez terminal odpowiednimi komendami będzie można gasić i zapalać diody i w drugą stronę przesyłać które diody są zapalone. nie wiem gdzie jest tu błąd więc Ustawienie GIPO void GPIO_Conf(void) { GPIO_InitTypeDef...
W dniu w którym ściągałem tą wersję komunikat o braku wersji ARM już był na stronie. Nadal jednak można ją ściągnąć poprzez aktywną subskrypcję dla wersji LITE. (czyli zlikwidowali tylko odwołanie do niej na stronie głównej) To czy nadal będzie rozwijana czy nie - nie wiem , wiem że wersje LITE były wydawane nieregularnie i w związku z tym przerwa półroczna...
Odebrane znaki przechowywane będą w podanym buforze. Przerwania obsługiwane są w HALu, funkcja HAL_UART_RxCpltCallback jest wywoływana po odebraniu całości (w tym przypadku 22 znaki). Oczywiście możesz z nich korzystać wcześniej, ale musisz zajrzeć głębiej do HALa. Obsługi przerwań są w pliku projektu, plik z końcówką "it" (funkcja UART_IRQHandler)....
Trzeba jeszcze włączyć przerwanie w NVIC. BTW - nie trzeba czyścić flagi ręcznie - wejście do przerwania kasuje ją. 4\/3!!
To trzeba sprawdzać w Ref. manualach układów, bo np. w F4 już nie trzeba tego robić. Ale cieszę się, że się udało :) Pozdrawiam
if( EXTI_GetITStatus( EXTI_Line5 != RESET ) ) Przyjrzyj się dobrze. 4\/3!!
Jak dla mnie brakuje w ogóle funkcji do obsługi przerwania: [syntax=c] void DMA1_Channel5_IRQHandler(void) { }; [/syntax] więc powinieneś dostać dodatkowo HardFault.
No to szukaj błędu w ustawieniach zegara - skąd bierzesz przebieg wejściowy, częstotliwość (sprawdź czy dobrze ustawiona w module startowym), wywołanie SystemCoreClockUpdate itp... Prosty test: zaprogramuj timer i procedurę przerwania od niego an miganie diodą z częstotliwością 1Hz i zmierz sekundnikiem czas np. 60 mignięć.
A gdzie masz ustawienie bitów SW na PLL w RCC?
Dzięki Freddie za dotychczasowy poświęcony czas i cenne uwagi To masz magiczny przycisk "POMÓGŁ", z którego nota bene jak widać nie korzystasz. EXTI + przycisk = wałkowane to tysiące razy.
A jeśli chodzi o typ, to w tym przypadku powinienem użyć IRQ? Nie powinieneś używać żadnego. Jeśli używasz STM32F1 (technicznie rzecz ujmując - jeśli używasz rdzenia ARM Cortex-M3 w rewizji r1r1), to po prostu na początku main() (albo w startupie, albo gdzieś "bardzo wcześnie" - byle przed pierwszym przerwaniem) dodaj taką oto magiczną inwokację: SCB->CCR...
A czy poza tym CAN2 działa? Tzn. czy wysyła dane?
Tu masz info: http://infocenter.arm.com/help/index.jsp...
Na pierwszy rzut oka nie widzę włączonego zegara od AFIO.
Przerwanie od zbocza jest kompletnie niepotrzebne do niczego - wystarczy TYLKO przerwanie od timera, w którym również można zrobić wykrywanie zbocza i filtrowanie - wystarczy kilka zmiennych pomocniczych (poprzedni stan, jakieś liczniki). Jest to skrajnie proste i działa idealnie. Angażowanie dwóch przerwań do czegoś co można zrobić w jednym jest kompletnym...
Deklaracja jako extern "C" zmienia tylko specyfikację interfejsu binarnego funkcji, a konkretnie sposób wywołania i przekazywania argumentów oraz sposób generowania nazw symbolicznych dla linkera (po polsku: konsolidatora :) ). Ale nie zmienia to języka źródłowego, tzn. jest to dalej C++.
Bit RXNEIE włącza przerwanie od dwóch flag: RXNE i ORE (overrun) - patrz tabelka USART interrupt requests . Odczyt z DR kasuje RXNE. ORE jest kasowane przez (cytat z opisu bitu ORE): "an read to the USART_SR register followed by a read to the USART_DR register".
Jeśli mierzysz to timerem to nie ma takiej możliwości. Za to na ADC można coś takiego ustawić i nazywa się to "analog watchdog". 4\/3!!
Jeżeli skok jest z przerwania to HardFault jest spowodowany tym, że zmieniasz wskaźnik stosu w obsłudze przerwania.
Zewnętrzne przerwania nadają się - przykładowo - do obsługi pinów sygnalizacyjnych z innych układów scalonych, a nie do zabaw z przyciskami. To po prostu nigdy nie zadziała... Zrób sobie przysługę i odczytuj po prostu wszystkie piny w okresowym przerwaniu od timera (co 20-50ms, albo i rzadziej) i będzie wtedy działało perfekcyjnie.
Przerwanie bym raczej właczył przed odpaleniem DMA. Odbiór przez DMA to raczej tylko w przypadku kiedy masz zawsze tę samą ilość danych. nie wiem jak w Twoim przypadku bo nic o tej "ramce" nie piszesz. Rozmiem że ma dokładnie 30 bajtów. Jezeli ma więcej lub mniej o choćby jeden bajt to Twój algorytm nie zadziała. - jezeli mniej np o 5 bajtów to odbierze...
Tak. Tak bardzo Ci to przeszkadza? Przecież jeżeli chcesz coś wykonać co 2 sekundy to po prostu robisz to co ileś tam wystąpień przerwania. Ponadto, zastanowiłbym się nat tym czy Twój kod musi być w przerwaniu. Skoro chcesz go wykonywać z częstotliwością 1Hz to raczej to nie jest konieczne.
RTC_IRQ_Handler(void)? A nie przypadkiem: RTC_IRQHandler(void)?
Też nie bardzo wiem jaka jest nazwa (wektor) funkcji tego przerwania, więc mam tak: Przecież wystarczy zajrzeć do tablicy wektorów i wszystko stanie się jasne... Można też zajrzeć do manuala, aby dowiedzieć się, że system CSS jest zmapowany na przerwanie NMI. Nie wiem czy czekanie na odpowiedź na forum jest naprawdę szybsze... 4\/3!!
Witam A jak masz ustawione priorytety przerwań? Przypadkiem przerwanie od DMA nie wywłaszcza Ci przerwania od DCMI? Proponował bym sprawdzić Status Register w przerwaniu DMA, co jest źródłem przerwania, sam ostatnio miałem taki przypadek, że mimo tego, że nie włączałem przerwania od Start Conversion[SC] a jedynie End Conversion[EC] w ADC, kiedy ADC...
Co robi funkcja send_uintUSART2? Nazwa sugeruje, że raczej nie wysyła znaków. Pomysł z nadawaniem z aktywnym oczekiwaniem i odbiorem w przerwaniu zajeżdża amatorszczyzną, ale czasami działa. Za to brak zabezpieczeń przed przepełnieniem bufora odbioru to już poważny błąd.
Nie będę głębiej wnikał, bo dopiero zabieram się za ARMy, ale to: http://www.stm32.eu/index.php?option=com... może coś ułatwi, gotowy projekt, który sprawia wrażenie prostszego.
Witam W trybie FS możesz mieć mały problem z freeRTOS i USB jeśli chodzi o wysłanie danych z Stm32 do PC. W nim nie masz DMA i żeby wysłać dane musisz albo sprawdzać sam czy pierwsze 64 bajty zostały wysłane i potem wysłać następne (np co 1ms) lub zostawić jak masz zrobione w bibliotece od Stm, czyli oni włączają przerwanie Tx FIFO Empty Interrupt,...
Załóż nowy to podyskutujemy (; 4\/3!!
Popularne stm32f103 lub wg. potrzeb może być coś mocniejszego z rodziny f2,f3,f4...
Wyłącz przerwanie od TXE skoro nie chcesz wysyłać. 4\/3!!
Sprawdź najpierw pochodzenie tego zera. Najlepiej w terminalu jak Ci pisałem. Moje podejrzenie jest takie, że jak wysyłałeś przez putst() było OK, bo on eliminował zero na końcu Twojego "stringa" char dataBuff wychodząc z funkcji. To zero pojawia się w tablicy niejawnie, ale tam jest. Gdy uruchamiasz DMA nie bierzesz pod uwagę, że tablica ma rozmiar...
Nie znam uC-os jednak wiem jak działają RTOSy, i mogę stwierdzić, że masz coś nie tak z prio wątków. Jeśli chcesz po prostu 2 niezależne wątki które się wykonują quasi-równolegle to twój os musi potrafić wywłaszczać (round-robin time slicing) a oba wątki muszą mieć ten sam prio (i jeśli os wymaga, to trzeba mu skonfigurować ile ma trwać timeslice dla...
Albo stos, albo watchdog.
Przerwania, w odróżnieniu od starych ARMów są w całości zarządzane przez ARM'a czyli CortexMx. W dokumentacji ARM znajdziesz opisy rejestrów i jako to działa. Każdy producent, taki jak ST zmienia znaczenie linii przerwań, definiując je po swojemu za wyjątkiem kilku pierwszych zarezerwowanych przez ARM. Ponadto, Cortex'y mają możliwość nadania przerwaniom...
Damian w kwestii wyjaśnienia: Miej na uwadze to, że przez terminal na RAZ możesz wysłać tylko 8 bitów. Więc jeśli wysyłasz liczby jako znaki (a tak jak widzę jest) to nie ma znaczenia czy wpiszesz 2357932956793425607456792356735673457375 czy pojedynczo będziesz wysyłał 2 3 5 ... bo terminal i tak każdy znak będzie wysyłał pojedynczo. Przeanalizuj mój...
Czy w procesorach STM32 wiekszość rozkazów wykonuje się w 1 cyklu zegarowym? Nie wszystkie. Jeśli chcesz mieć bardzo dokładnie oszacowany czas w cyklach to musisz zdeasemblować program, zajrzeć do dokumentacji, żeby sprawdzić ile czasu się wykonuje jeden rozkaz i sprawdzać rozkaz po rozkazie. Jak zależy Ci na prędkości i oszczędności co do rozkazu,...
stm32 przerwa przerwa przerwa stm32 stm32 przerwa timer
laptop toshiba bateria brotje opinie ogrzewać kanałowy
Wymiana oleju w silniku benzynowym: kiedy? Podłączenie sterowania z kierownicy do radia Vordon HT76023060170 w Fordzie C-Max MK1 2010