(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]
Choć dopiero zaczynam przygodę z STM32 to po mojemu nadpisujesz strukturę i dlatego zawsze działa Ci ostatnie zdefiniowane przerwanie.
Od pewnego czasu walczę z chińską płytką (blue-pill) z STM32F103 na pokładzie Przeczytaj ten wątek i kup sobie inną płytkę. https://www.elektroda.pl/rtvforum/topic3... Jeśli koniecznie chcesz się męczyć z chińskimi podróbkami, to na mojej stronie ( http://www.freddiechopin.info/ > Download > ARM > Przykłady > stm32_blink_led) znajdziesz szablon...
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...
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ś...
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);...
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 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, 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, 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, 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...
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, 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...
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, 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);...
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...
Witam, jak w temacie zaaplikowałem następujący kod do ARM przycisk mam na PORTA pin 0 [syntax=c] #include"stm32f0xx.h" int main(void) { RCC->AHBENR |= RCC_AHBENR_GPIOAEN|RCC_AHBENR_GPIOCEN; SYSCFG->EXTICR[0] |= SYSCFG_EXTICR1_EXTI0_PA; GPIOC->MODER |= GPIO_MODER_MODER8_0; GPIOC->ODR |= GPIO_ODR_8; EXTI->IMR |= EXTI_IMR_MR0; EXTI->RTSR |= EXTI_RTSR_TR0;//Rissing...
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...
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():...
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, właśnie zacząłem przerabiać kurs ze strony http://forbot.pl/blog/artykuly/programow... układ na jakim pracuje to stm32f103c8t6 w środowisku Eclipse. Niestety moja nauka stanęła na przerwaniach od przycisku. Mianowicie mimo wciśnięcia przycisku przerwanie się nie wykonuje. Kod programu: http://obrazki.elektroda.pl/8705005600_1...
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...
Mój problem polega na tym że komunikacja z 2 czujnikami na i2c przebiega poprawnie dopóki nie odpalę przerwań od input capture z timerów. Komunikacja zawiesza się w losowo wybranych momentach, raz po 20 sekundach raz po 10 minutach. Gdy wyłączę przerwania to chodzi bez blednie. Mój procesor to stm32F103rb. Próbowałem już 3 sposobów na odczyt z i2c -...
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...
W pliku startup_xxxxx.s
Pokaż procedurę obsługi przerwania TIM2. Albo nie pokazuj, tylko sprawdź sam, którego źródła nie obsługujesz lub którego znacznika nie zerujesz w obsłudze.
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ęść...
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...
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...
A więc działa. Gratulacje :) Docelowo chcę zrobić co innego: Muszę próbkować 4 kanały ADC1 w przemiataniu i wysyłać wartości po USART do komputera. Tylko, że kanał 4 DMA zajmuje się USART1 TX a kanał 1 ADC więc jeszcze nie mam pomysłu jak to połączyć. Kolizja DMA nie występuje, bo są różne kanały. Po prostu jeden poczeka na drugi. Jak najbardziej sensowne...
Wywołanie `portEND_SWITCHING_ISR()` _KOŃCZY_ przerwanie i powoduje powrót do głównego programu (*). Jeśli wiec obsługę przerwania dałeś "za" tym makrem, to przerwanie nie jest obsługiwane. W efekcie wywołuje się w nieskończoność. Dla łatwiejszego debuggowania, po prostu ustaw oczekiwanie na semafor z timeoutem, a dodatkowo _MIGAJ_ diodami zamiast tylko...
Trzeba jeszcze włączyć przerwanie w NVIC. BTW - nie trzeba czyścić flagi ręcznie - wejście do przerwania kasuje ją. 4\/3!!
Tak jak pisze kolega wyżej musimy wiedzieć co włączasz. Do przerwań trzeba włączyć AFIO bo funkcja GPIO_EXTILineConfig() prawdopodobnie grzebie w rejestrach AFIO->EXTICR bo tam się ustawia, który port ma być wejściem dla danego przerwania EXTI. I to by wyjaśniało wszystko bo domyślnie ustawiony jest port A.
Heh, myślałem że to też pochodzi z SPL. No to może faktycznie na to przejdę. Dzięki. Nie, pochodzi z ARM i ze strony ARM możesz pobrać tą paczkę. Mimo, że ST twierdzi, że kładło na tym łapy, nie jest jakości ST.
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.
Załóż nowy to podyskutujemy (; 4\/3!!
Spróbuj mojego kodu do konfiguracji rcc na 72 MHz (u mnie działa na stm32f107 bez żadnych problemów), w przypadku wykorzystania kwarca 25 MHz [syntax=c] void rcc_conf(void) { RCC->CR |= RCC_CR_HSEON; while ((RCC->CR & RCC_CR_HSERDY) == 0); FLASH->ACR |= FLASH_ACR_PRFTBE; FLASH->ACR |= FLASH_ACR_LATENCY_2; RCC->CFGR2 = RCC_CFGR2_PREDIV1_DIV5 | RCC_CFGR2_PREDIV2_DIV5...
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,...
Z tą długością i negacją to nie mój pomysł, ale niezły. Właśnie tak to można traktować. Jeżeli kolejny bajt nie jest negacją poprzedniego, to przyjmujemy, że to nowa długość i czekamy, aż następny będzie negacją. Dodatkowo można narzucić ograniczenia na dozwolony zakres długości.
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!!
to chwyć zakładkę edytora i przesuń utworzysz nowy okno edytora.
typedef char t_Ramka[6] t_Ramka RamkaA[85] albo zdefiniuj jako unia
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...
Przesada, jeśli przycisk nie wisi na zakłócanym kablu - wystarczy porównywać stan bieżący z poprzednim w odstępach większych niż czas drgań (co 10..20 ms). Jeśli wisi na zakłócanym kablu - próbujemy z max. okresem zakłóceń/drgań (co większe) i patrzymy na trzy kolejne stany, "poprawiając" stany 101 na 111 i 010 na 000. Wykrywamy stany 011 i 100 jako...
Kolego andrzej_nied, Proponuję zastosować timer do generowania przerwań co około 2.5ms. W przerwaniu testujemy wejścia portów nie zawracając sobie głowy jakimiś 'drganiami styków'. Sprawdzone, pewne, proste. Czas 2.5ms dobrany jest tak aby zwykły enkoder 20-32imp./obrót obracany energicznie ręką nie zgubił impulsu (gdy czas pomiędzy przerwaniami za...
Na pierwszy rzut oka nie widzę włączonego zegara od AFIO.
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,...
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)....
Popularne stm32f103 lub wg. potrzeb może być coś mocniejszego z rodziny f2,f3,f4...
Zgadza się - tak właśnie się to robi.
Wskazówka: zostaw biblioteki. Wtedy będziesz wiedział, które bity wpływają na priorytet wywłaszczania. Być może wartości, które ustawiasz w polach PreemptionPriority, w ogóle nie wchodzą na najbardziej znaczące 3 bity priorytetu w rejestrach NVIC, a tylko te 3 bity decydują o wywłaszczaniu. Skąd wiesz, że nie ma wywłaszczania?
Zajrzyj do skryptu linkera, zobacz jaki jest rozmiar stosu. 4\/3!!
Będzie tak jak piszesz. Przerwanie po doliczeniu do 999 po czym zerowanie licznika i liczy od nowa
W tablicy wektorów zupełnie nic nie zmieniasz (jak zwykle) - system masz połączony ze sprzętem poprzez te 3 definicje: #define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler #define xPortSysTickHandler SysTick_Handler Mam nadzieje że masz je w jakimś pliku dołączonym do port.c, np FreeRTOSConfig.h 4\/3!!
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...
Profilaktycznie możesz spróbować procedury zatrzymywania DMA z układów STM32 mających bardziej rozbudowane DMA (np. F4). Sprowadza się ona do tego, że po wyzerowaniu EN musisz go w pętli odczytywać do momentu aż odczytasz tam faktycznie zero. Może coś pomoże, może nie. Zadbałbym też o czyszczenie wszystkich flag DMA przed uruchomieniem transferu (albo...
Domyślnie są wyłączone, a co robi z nimi SPL - to już tajemnica jej twórców. Rozsądni ludzie nie korzystają z bibliotek typu SPL, a jeśli korzystają - to nie używają nadmiarowych wywołań, które mają za zadanie wpisać do rejestru to samo, co już tam jest. Poprawne zainicjowanie UART bez SPL - to jakieś 4..5 linijek kodu. ClearITpendingBit jest bez sensu...
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.
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ć.
if( EXTI_GetITStatus( EXTI_Line5 != RESET ) ) Przyjrzyj się dobrze. 4\/3!!
Czytaj Reference Manual dla danego procesora. Czy masz ustawiony bit RXNEIE?
A włączyłeś taktowanie dla CAN2? Nie używam bibliotek HAL więc nie wiem czy one to robią automatycznie.
Sporo się namęczyłem, zanim ruszył mi slave transmitter w STM32F103. W 107 będzie tak samo. Po pierwsze zobacz do errat - tam między innymi napisali, że przerwanie i2c musi mieć najwyższy priorytet, bo inaczej się wiesza. Poza tym przykłady nie zadziałały mi od razu, a problemy mają też inni, o czym możesz poczytać na main.c // main.c main()...
Poczytaj w dokumentacji, sprawa jest tam poruszona. SysTick i PendSV mają być na najniższym, a inne przerwania - które używają funkcji RTOSa - nie mogą mieć wyższego priorytetu (niższego numerka) niż configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIO... lub configMAX_SYSCALL_INTERRUPT_PRIORITY. Obstawiam, że jedna z tych wartości nie jest używana i w ogóle jest...
Trzeba pewnie włączyć jeszcze globalne zezwolenie na przerwania, tylko nie mogę się tego doszukać w RM. Domyślnie przerwania są globalnie "odblokowane". W przeciwieństwie do poszczególnych przerwań, więc jest taka funkcja NVIC_EnableIRQ() czy jakoś tak. P.S.1. Nie musisz deklarować przerwania na górze, przed main(), bo i po co? P.S.2. W obsłudze przerwania...
przerwa stm32 stm32 przerwa stm32 przerwa timer
junkers przezbrojenie propan lumix serwis podwodna kamera
knights głośnik sterownik pieca
Silnik 7.5 kW a prądnica wiatrowa 30 kW - współpraca Whirlpool FWDG86148BPL – blokada drzwi, świeci kontrolka drzwiczek, nie działa pokrętło