powtarzam SYSCFG włączone poprawnie?
12 cykli - tyle zajmuje przejście do obsługi przerwania 6 cykli - tyle zajmuje przejście z przerwania do przerwania o wyższym priorytecie 6 cykli - tyle zajmuje przejście do przerwania o niższy priorytecie bezpośrednio po zakończeniu przerwania o wyższym priorytecie 12 cykli - tyle zajmuje wyjście z przerwania. Ta zasada tyczy się wszystkich przerwań
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ; Deklarujesz przerwanie na pin0 a oczekujesz go na pin9. Ustaw przerwanie na pin9 albo podepnij przycisk po pin0. Jaki to procesor? Niektóre STM32 mają łączone sygnały przerwań np.: STM32f100 ma pin9 na EXTI9_5_IRQn oczywiście mósisz wówczas zmienić również nagłówek: void EXTI0_IRQHandler(void) na: void...
Spróbuj tak: [syntax=c]//GPIO_EXTILineConfig(GPIO_Por... GPIO_PinSource13|GPIO_PinSource15); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC... GPIO_PinSource13); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC... GPIO_PinSource15);[/syntax]
Nie wiem czy to chciałeś osiągnąć, ale pin masz ustawiony na floating. Definicja w komentarzu była dobra, wartość liczbowa - zła. Przykłady znajdziesz w wyszukiwarce forum, w ostatnich tygodniach tematów o EXTI było kilka. 4\/3!!
Trzeba dodatkowo włączyć taktowanie bloku przerwań. Wstaw np. zaraz przed while(1) RCC_APB2PeriphClockCmd(RCC_APB2Perip... ENABLE); Jak dojdziesz do timera to też dodatkowo trzeba włączyć taktowanie RCC_APB2PeriphClockCmd(RCC_APB2Perip...
Choć dopiero zaczynam przygodę z STM32 to po mojemu nadpisujesz strukturę i dlatego zawsze działa Ci ostatnie zdefiniowane przerwanie.
Podłączenie przez kondensator faktycznie pomaga, jednak jest to sygnał który zmienia się ~200 razy na sekundę, dlatego niestety odpada. 200Hz? Przecież to prąd stały... Kondensator 100n z rezystorem 10k mają stałą czasową odpowiadającą częstotliwości 1kHz, z rezystorem 100R już jest 100kHz, więc gdzie tutaj jakiś problem? Tak jak już rb401 napisał...
Na pierwszy rzut oka w przerwaniu nie sprawdzasz flagi ani jej nie kasujesz... A także nie włączasz systemu NVIC i go nie konfigurujesz...
1. Pierwsze 14 wyjątków pochodzi z rdzenia (2+14 adresów w tablicy). Te z rdzenia mają numery ujemne lub 2..15, spoza rdzenia - nieujemne lub od 16 w górę. 2. Jw, ale część wyjątków rdzenia też ma ustawiany priorytet. 3. Najlepiej zapomnij o "grupowaniu". W praktyce nie ma żadnego sensu korzystanie z tego. Domyślnie po reset mamy zawsze konfigurację...
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);...
poza tym bardzo mi podpada to iz jesli wstawilem w f. obslugi przerwania taka mala 'pulapke' czyli while(1); lub for(;:wink:; to program tez sie w tym miejscu nie 'zawiesza' Nie zawiesza się, bo wykonywane jest kolejne przerwanie.. i kolejne.. i.. jeszcze jedno.. Probowalem dolozyc maly kondesator ale nic sie nie zmienilo w zasadzie Pomysł z kondensatorem...
a plik startowy masz dla dobrej lini STM? z tego co się orientuję i rozumiem to tak. Dlaczego głupia biblioteka do stm32 rządzi swiatem i wiecznie jest ktos, komu ona nie działa?... Ludzie, opamiętajcie się... Dlatego, że jest dość przejrzysta i dużo bardziej przystępna dla kogoś kto miał styczność z klasycznym, komputerowym C, a nie z mikrokontrolerami,...
Nawet jeżeli nie generuje jednego tylko więcej, to po jakimś czasie licznik powinien zliczyć do 5, w moim przypadku nic się nie dzieje, przerwanie się nie wywołuje.
A mógłbyś mi powiedzieć jak ustawić przerwania? Tzn nie wiem co wpisać i jak to wpływa na przerwania jak mam takie zmienne NVIC_IRQChannelPreemptionPriority oraz NVIC_IRQChannelSubPriority. Chcę użyć przerwań zewnętrznych z 4 pinów.
gaskoin- dwa PC817 są równie dobre, zwłaszcza jak się je ma w szufladzie. Inna sprawa- przebieg na wyjściu detektora zera jest taki sobie- żeby nie powiedzieć paskudny. No i podany jest na zwykłe przerwanie zewnętrzne a nie na żaden komparator. Pewnie ARM ma na wejściach jakąś histerezę- ale może trzeba ją w jakiś okropny sposób włączyć? Może sprawdzić...
Aajednak nie działa. Akurat trafiłem na dobrą passę, że działało;/ Źadnych przerwań zewnętrznych nie ma, w ogóle w sumie nie ma przerwań..
najpierw włącz SYSCFG potem ustaw który port potem reszta.
Niestety nie wiem, jak skonfigurować przerwanie zewnętrzne, gdyż nie mogę nigdzie znaleźć pod która linie EXTI jest ono podłączone. Manual, rozdział 26.5 RTC interrupts .
Wiem jak działają przerwania, nie wiem z kolei jak je konfigurować. W takiej sytuacji, najprostsza droga to HAL. Akurat konfigurowanie peryferii dobrze w nim działa. Podejrzysz co robi HAL i po robocie, chyba, ze chcesz na nowo wynajdować koło. Niby wiesz jak działają. Dlaczego więc pytasz o rejestr maski przerwań zewnętrznych? To pytanie nowicjusza...
Problem rozwiązało właśnie użycie przerwań zewnętrznych. Można w funkcji obsługi przerwania EXTI sprawdzać od którego wejścia pochodzi przerwanie i zliczać impulsy z tego wejścia. Dzięki za pomoc.
Przykłady jak ustawić timer i przerwania zewnętrzne również na forum były umieszczone.
Czy program składa się tylko z przerwań? Nic innego już nie ma? PS Oczywiście często tak się pisze że nie ma nic poza przerwaniami ale chyba to nie o to chodzi. No ja dopiero zaczynam z stm32, skoro chce zmienić napis w momencie wykonania jakiejś czynności zewnętrznej, to nie mam pojęcia jak to zrobić bez jakiegoś przerwania. Dlatego się pytam czy...
To co na wykresie jest zmierzone na końcu kabla BNC pochodzącego od urządzenia, którego impulsy chce wykrywać. Ja zrobiłem sobie jeszcze taką przejściówkę BNC - kabelki na goldpiny, może tam na lutach są jakieś pojemności. Jutro sprawdzę jak to wygląda. Edit: Chociaż przed lutowaniem przykładałem na styk bez lutowania i też nie działało.
Moim zdaniem konfiguracja DMA jest trochę niepełna, a ponadto brakuje obsługi przerwania od DMA. Przynajmniej w jednym miejscu wpisz jawnie wartość do rejestru sterującego (CR = ...). Na razie wszędzie masz |= lub &=. Zakładając, że pierwszy transfer poleci i przerzucisz 19200 słów, to później DMA się zatrzyma i nic więcej nie prześle. I jak to ma coś...
Witam wszystkich Tak jak w temacie, skonfigurowałem eclipse pod stm32. Używam makefile i linkera od Frediego. Wszystko pięknie działało(miganie diodą, obsługa klawiszy etc) do mementu, gdy postanowiłem przetestować przerwanie zewnętrzne. W tym momencie podczas odpalania program trafia do funkcji _Default_Handler w pliku vectors.c gdzie się zapętla (chyba...
:) Kto szuka nie (ten) błądzi. Dzięki za cierpliwość. Na chwilę obecną przyjmę to za pewnik. Temat jednak pozostawiam otwarty. Jeśli ktoś z czytelników rozumie mą rozterkę i potrafi mi wyjaśnić dlaczego tak a nie inaczej...to proszę się nie krępować :D PS Szczerze mówiąc dziwi mnie trochę to, że Ciebie jako fana logiki nie zastanawia pozorna bezsensowność...
Ale wciąż czekam na opinie! kogoś kto zrobil coś duzego na tych bibliotekach! Ale co według Ciebie znaczy "duże"? Ja robiłem może nie coś ogromnego w sensie objętości we Flashu, ale ze skomplikowanymi zależnościami czasowymi na STM32F103VD/VE. Używałem przerwań i robiłem rekonfigurację różnych bloków układu w tych przerwaniach. I to działało z użyciem...
Na początku upewnij się, że włączyłeś zegary we wszystkich wymaganych urządzeniach (albo załącz na forum cały program). Możesz też wymusić obsługę przerwania zewnętrznego używając funkcji bibliotecznej "EXTI_GenerateSWInterrupt". A poza tym proponuję zacząć od migania diodką a później napisz taki prosty program starając się powoli zastępować funkcje...
Witam, wiem, że temat stary, ale też używam Keila i przyszła mi potrzeba za alokować 2kB pamięci, żeby wczytać dane z zewnętrznego ramu i zapisać w zewnętrznym flashu i też malloc zwracał mi wskaźnik NULL i w moim przypadku wystarczyło w pliku *.s zmienić Heap_Size EQU 0x00000200 na Heap_Size EQU 0x00000F00
Ja na samym początku przerzucam wektory przerwań na początek pamięci RAM. A później wstrzykuję swoją funkcję w miejsce oryginalnego wektora. Po rozmyślaniu na ten temat doszedłem do następujących wniosków. 1. Możliwość dynamicznej rejestracji przerwań (najlepiej w wysoce abstrakcyjny sposób, tak aby funkcje nie musiały być publiczne) byłaby z pewnością...
Witam! Mam kłopot z uartem w stm32. Wysyła ok, wchodzi w przerwanie od rx uarta i odczytuje jego DR zapisując do tablicy i zwiększając wskaźnik do tablicy żeby był gotowy na następne przerwanie ale ono właśnie nie wystepuje pomimo, że następny bajt przychodzi uartem. Systick co 100ms inicjuje wysłanie zapytania do zewnętrznego urządzenia i urządzenie...
Streszczając teraz większość informacji: 1. Posiadam STM32 z jednym ADC 12-bitowym, z 16 kanałami (https://www.st.com/resource/en/datashee... 2. Częstotliwość próbkowania ok. 20 kHz na zewnętrznym ADC. 3. Komunikacja SPI DMA, po przerwaniu z Timera. ad. 1) Czy koncepcja użycia zewnętrznych ADC w celu uniknięcia przesunięcia fazy napięcia...
Co do spi to jest właśnie zewnętrzne z odroida, dlaczego mogą być z tym problemy? W procku spi i timer taktowane są z jednego źródła. Przy zewnętrznym spi nie będzie synchronizacji. Możesz zrobić prosty konwerter spi->ws na attiny o ile się wyrobi (taaaaaak wiem, tranzystor + kondensator, ne555 czy co tam jeszcze). Zegarem generujesz przerwanie, w...
Banialuki pleciecie, Koledzy (niektórzy). Praca krokowa w 8080 wygląda dokładniuśko tak samo, jak w Z80, 8085, 8088 i większości innych mikroprocesorów. Najprostszy system z 8080 właśnie konstruuję - składa się z 8080, 8224 i STM32. Będzie na nim działał również CP/M-80, który już działa na analogicznych maszynkach z Z80 i 8085. "Prawdziwy" komputerek...
No właśnie o priorytetach wiem, 15 top najniższy dlatego wszystkie przerwania mają Dodano po 2 Niestety zwiększenie do 4kB stosów (Stack Configuration i Heap Configuration) w niczym nie pomogło, program wchodzi do przerwania i zawiesza się przy sprawdzaniu flagi. Jak nie sprawdzam flagi to wszystko działa. Wychodzi na to, że musiałbym na te 4 klawisze...
Witam, próbuję skonfigurować licznik TIM2 w STM32L152RE, aby zliczał impulsy z pinu w trybie alternatywnym AF1 na PA0 i generował przerwanie po zliczeniu 10. Stan wysoki na linii w przerwaniu od SysTick. Niestety, TIM2 po zliczeniu impulsów nie generuje przerwania i nie ma żadnej reakcji od niego. Czy ktoś spotkał się z takim problemem? Funkcje do obsługi...
Witam, Eksperymentuję trochę z STM32 na płytce Nucleo F446RE i natknąłem się na pewien problem. Płytkę zasilam zasilaczem MeanWell RD-65B, który produkuje 24V oraz 5V. Oczywiście zasilanie Nucleo podłączam pod 5V. Na tym samym obwodzie, do którego podłączony jest zasilacz działa też kompresor. Jakiś tani chiński o mocy około 800W. Mój problem polega...
Witam, mam problem z przerwaniami zewnętrznymi. Otóż mam podłączone przyciski z napięciem od zestawu STM32 i pinami kolejno PD1, PD3, PD4, PD6, PD7. Napisałem proste przerwania ale one nie działają! Zadaniem każdego przerwania jest zapalenie innej diody na zestawie. Tzn. przerwanie w moim przypadku wykonuje sie samoczynnie (diody na płytce migają z...
(at)tmf - dziękuję za miłe słowa :) Właśnie takie było założenie co do grupy "docelowej". Myślę, że jeszcze długo ATmegi i ATtiny będą punktem startowym dla hobbystów ze względu na nawał informacji w Internecie i mocno zakorzeniony pogląd jakoby wszystko inne było drogie/trudne itd. W sumie chciałem, żeby w poradniku było trochę więcej nawiązań do...
Robię mierzenie częstotliwości za pomocą STM32. TIM1 ustawiony mam na taktowanie z zewnątrz przez TI2 (CCR2, TI2FP2). Co pewien okres (100ms) w innym liczniku, w przerwaniu odczytuję CCR2 żeby odczytać liczbę impulsów, zresetować i tak dalej. Wszystko ok, ale w przerwaniu innego timera, nie mogę zresetować CCR2, czyli wpisać 0 do tego rejestru. Próbowałem...
Powyższy przykład zaczerpnąłem z kursu o STM32 http://forbot.pl/blog/artykuly/programow... gdzie piszą program na F1 a ja próbowałem zamienić go na F4. To dziwne w takim razie, że u nich to działa a u mnie nie, jeżeli sam kod teoretycznie mam poprawny.
Chciałem zrobić przerwanie zewnętrzne (EXTI0), że jak naciśnie się guzik na płytce to tam lampki się zapalą inaczej. Tylko problem jest taki, ze jak nacisnę sobie guzik to niby program skacze do przerwania - tj. tak mi OpenOCD pokazuje: halt target state: halted target halted due to debug-request, current mode: Handler External Interrupt(6)...
Teraz mam problem z przerwaniami od końca konwersji ADC1. Działanie układu wygląda tak jakby mikrokontroler nie wchodził w obsługę uchwytu przerwania od przetwornika ADC 1,2. Konfiguracja przetwornika: void init_adc (void) { // Niezależny tryb pracy // Włączenie przerwań od końca przerwań - EOC ADC1->CR1 = ADC_CR1_EOCIE ; //Wybór czasu...
Witam Mam problem z przerwaniem zewnętrznym - procesor nie wchodzi do funkcji przerwania, przerwanie nie wykonuje się W przypadku sprawdzania stanu czujnika w pętli - wszystko działa jak należy w przerwaniu już nie. [syntax=c]void EXTI2_IRQHandler(void) { LED1_bb ^= 1; EXTI->PR |= EXTI_PR_PR6; } int main(void) { gpio_init(); pll_start(CRYSTAL, FREQUENCY);...
Czy dobrze rozumiem że ustawiając Update DMA i Update interrupt to po każdym przekręceniu się licznika zostanie wywołane przerwanie i DMA? Biorąc pod uwagę fakt, że kanał który miałby to DMA od timera obsłużyć nie jest włączone, to raczej niezbyt będzie wywoływane. Przerwanie to co innego, ale z tego co widziałem nigdzie go nie włączasz. W przypadku...
Cześć, Mam problem z uruchomieniem USB w Eclipse niestety mam również problem z debugowaniem pod OpenOCD więc na razie diody ;/.. Na razie chcę jedynie migać diodą i próbuję do tego dołączyć przerwania od USB. Wszystkie przerwania i konfigurację wziełem z programu który działał mi pod uVision jednak ze względu na ograniczenie w rozmiarze kodu postanowiłem...
Czemu dziwne, do ogarnięcia przerwan w sam raz a używanie timera do sprawdzania stanu to używałem A do rejestru PR wpisać 0 czy 1?
Mam program, który odczytuje dane z dwóch przerwań i zapisuje je na SD. Wszystko by było dobrze ale dane mi się gubią. Mam przerwanie nazwijmy je 'A' które jest częste i 'B' , rzadsze. Zgodnie z założeniami na kracie powinno pojawić się coś takiego 'dane z B' 'dane z A' 'dane z A' 'dane z A' 'dane z A' ....(razy 125) 'dane z B' czyli stała liczba A...
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...
Główne różnice to obecność "zanegowanych" sygnałów wyjściowych (OCxN) z opcjonalnym deadtime oraz wejście "hamulca" (BKIN). Właśnie dlatego go szkoda. Timery w STM32 są niesamowicie rozbudowane Tym bardziej szkoda takiego całego timera jako dzielnika /2. Ale udało się-wykombinowałem. Wymagało zewnętrznego połączenia wyjścia np ch3 na który mam wyprowadzony...
https://obrazki.elektroda.pl/3252078300_... Poniższy artykuł przedstawia – krok po kroku – wykonanie niewielkiego, kieszonkowego oscyloskopu cyfrowego. Nie jest on tak dobry jak zwykły warsztatowy oscyloskop, ale z drugiej strony można zabrać go niemalże wszędzie. Poza tym – nie wszystkie projekty DIY muszą mieć sens....
Miałbym jeszcze wątplwości (może niesłuszne, ale ja nie znam i nie używam bibliotek) co do tego: GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; Może to być też kwestia kolejności wywołań - spróbuj to ostatnie przemieścić wyżej. Ciekawe jakie znaczenie ma kolejność ustawienia pól w strukturze PRZED przekazaniem jej do funkcji która faktycznie coś robi......
Witam! Próbuje skonfigurować zewnętrzne przerwanie od przycisku dołączonego do PC0. Wciśnięcie przycisku ma powodować zaświecenie diody, co się nie dzieje. Dioda zaświeca się po machnięciu ręką nad płytką, a dokładniej nad goldpinem do którego dołączone jest PA0. Korzystam z ZL31ARM. Kod porównywałem z tematem http://www.elektroda.pl/rtvforum/topic20...
Algorytm w mikroprocesorach przeważnie ściśle związany jest z zasobami procka i przenoszenie bez poważnych przeróbek jest mało realne. Na przykład program korzystający z 8 zewnętrznych przerwań na program do procesora który ma tylko 2. Zgadzam się z tym że powinno być więcej książek do ARMów, a zwłaszcza bardziej sensownych niż to co do tej pory powstało.
Witam Urządzenie jest zasilanie z USB, ale to jest tylko procesor + jedna kości ramu, 500mA nie ma. Wziąłem nawet oryginalny program z STM, MassStorage, ale to samo. Tzn wszystko działa ale ciekawy jestem czy tak powinno być, że tyle razy mam sygnał reset z USB. Z tego co piszesz to chyba nie. Spróbuję zasilać z zewnętrznego zasilacza Co dziwne mam...
Udało mi się :) Próbowałem tym Eclipsem ale nie mogłem skonfigurować dla F7 tego Eclipsa. W każdym razie odpaliłem ST-Link Utility i przytrzymałem reset, jakoś go potem puściłem i zamiast connect dałem erase i ruszyło! Choć próbowałem różne takie kombinacje, w tym tę także, już wczoraj, ale nie szło. W każdym razie dzisiaj się udało i już się programuje....
A jak się ustawia zdarzenia i przerwania. Bardziej pytam w takim sensie aby nie przestawić przypadkiem przewiania na zdarzenie i potem dumać co jest nie tak, że nie działa. Dotyczy to tylko przerwań podłączonych do EXTI, wszystkie zewnętrzne, jakiś RTC, Comparatory. I rozdział o EXTI zalecam lekturze. tam jest wszystko. Zdarzenie włączasz rejestrem...
Może spróbować zamiast usypiać procesor to załadować jakąś pętle nieskończoną z kawałkiem kodu do pamięci ram i ją wykonać. Ja akurat i tak czy siak usypiam STM'a ze względu na oszczędność baterii (działa tylko GSM w trybie Sleep). Z tą pętlą w RAM to i może nie głupi pomysł ale co jak braknie RAM'u (a czekanie w nieskończoność na FIX'a mija się z...
Witam, odwróciłem 115200 ale to wychodzi na jedne bit a nie bajt czyli raz 10 czyli około 86us, to nie jest ważne... Teraz uruchamiam timer co 1ms i sprawdzam czy "były dane" chciałem użyć timer w trybie Slave mode: Reset mode, czyli ja podam mu zewnętrzny sygnał to zbocze narastające lub opadające od transmisji go wyzeruje, a jak nie ma transmisji...
Witam, Właśnie jestem w trakcie przenoszenia małego projekciku z doświadczalnej pajęczynki na pcb, i mam mały problem. Dotychczas używałem Timera 2 do pomiary sygnału zewnętrznego (z odbiornika modelarskiego). Wszystko było ok. Teraz musiałem użyć Timera 3 kanału 2 wyjście PC7 (procek STM32F103Vx)... no i zaczęły się problemy. Pomimo zrobienia full...
Witam kolegów po fachu. Od 3 dni walczę z problemem. Tłumaczę o co chodzi. Staram się odczytać za pomocą stm32f103 szerokość impulsów PWM pochodzących z 4 kanałów odbiornika RC. Skonfigurowałem 4 przerwania zewnętrzne EXTI, na 4 kanałach , wyzwalane zboczem opadające i rosnące. Ustawiony jest również TIMER4 z przerwaniem od przepełnienia który liczy...
Ale mam kilka operacji wykonywanych ciągle w tle realizowanych wywołaniem z przerwania natomiast główna część programu leci i mam miejsca gdzie muszę zrobić "postój" na czas 100ms-1000ms ze względu na inicjalizację pewnych urządzeń. W tej chwili robię to wystawianiem flagi z timera ale chciałbym poznać jakieś alternatywy. Bardzo ciekawą rzeczą jest...
http://obrazki.elektroda.pl/7258579400_1... Witam. Chciałem dzisiaj przedstawić kolejny projekt z cyklu "inni mają - mam i ja" ;) Tym razem jest to miniaturowy sterownik ethernetowy - " uWebServer ". Układ zbudowany został w oparciu o mikrokontroler Cortex-M3 - STM32F103C8T6, do tego kontroler ethernetu "znany i lubiany" - ENC28J60. Całość...
Tak, peryferia uC 32-bitowych są strasznie skomplikowane, tak strasznie, że nie da się ani przeczytać ich opisu, ani napisać kodu je obsługującego inaczej, niż biorąc gotowy przykład z HAL i modyfikując parametry. W takim prostym AVR do uruchomienia SPI potrzeba tylko trzech zapisów rejestrów, a w STM32 - aż trzech. To samo z UART, czyli tragedia po...
Dobrze mówisz Freddie przerwanie będzie w takim przypadku generować problemy, a wtedy będą powstawać błędy wielkości 0xFFFF a to jest nie dopuszczalne. No to biorę się za naukę obsługi przerwań zewnętrznych. Mam jeszcze jedno pytanie do Ciebie Freddie do którego nie będę zakładać nowego tematu. Czy wyrobi się procek STM32F103CB z: -obliczeniem położenia...
Zazwyczaj najwygodniej uczyć się języka C na desktopie, czyli swoim PC-cie. Programując STM32 lub AVR-ki używa się języka w ten sam sposób, ale zwykle nie mamy dostępu do pewnych bibliotek standardowych, które na desktopie są od razu, bo komputer ma monitor, klawiaturę, dysk twardy itp.. W mikrokontrolerach tego nie mamy, więc użycie printf(), getch()...
Aktualnie rozpracowuję przerwania zewnętrzne i mam takie dziwne zachowanie programu otóż na wbudowanym z zestaw nucleo przycisku przerwanie zapala mi diodę tak jak chcę (według schematu nucleo jest od podciągnięty do vcc) jednak jak chcę dodać swój przycisk na płytce stykowej podłączony do portu A0 to działa on wtedy kiedy fizycznie rezystorem podciągnę...
Witam. Mam następujący problem. Otóż, chcę w obsłudze przerwania od kanału 1 timera TIM1 ustawiać semafor, na podstawie którego wykonuje się jedno z zadań. Robię to w standardowy (chyba) sposób: // Obsluga przerwania od TIM1 void TIM1_CC_IRQHandler(void) { static portBASE_TYPE xHigherPriorityTaskWoken; xHigherPriorityTaskWoken = pdFALSE;...
Czy użycie pinu UART jako GPIO wymaga pewnych ustawień? Bezpośrednia odpowiedź: Tak, użycie pinu UART jako GPIO zazwyczaj wymaga pewnej konfiguracji. Wynika to z faktu, że piny UART są zwykle domyślnie skonfigurowane do komunikacji szeregowej i należy je ponownie skonfigurować, aby działały jako piny wejścia/wyjścia ogólnego przeznaczenia (GPIO). Szczegółowa...
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...
Coocox bardzo dobry na początek. Łatwy w konfiguracji, współpracuje z programatorami JTAG, ST_Link, nie ma ograniczeń, ma sporo ułatwień (automatyczne dołączanie potrzebnych plików, automatyczna konfiguracja stosu, zegara, przerwań (startup). A co do płytek z STM32 to najlepsze są serii discovery - tanie i posiadają wbudowany programator z ST_Link,...
http://obrazki.elektroda.pl/2247266700_1... Witam. W Internecie można znaleźć dużo przykładów, jak odtwarzać przez mikrokontroler dźwięk takimi sposobami, jak PWM czy DAC na interfejsie I²S. Niestety, ale jakość dźwięku PWM-a mnie nie zadowala, a zewnętrzny DAC nie wchodził w grę, ponieważ mój mikrokontroler nie ma wspomnianego...
Gdzie ustawiasz TIM_Clock_Division_CKD? Powinno być na TIM_CKD_DIV1 (0) - to są bity CKD w TIM1->CR1. Być może tutaj masz ustawione dzielenie przez dwa. Co do bitów CKD, to są domyślnie ustawione na 0x00 i takie pozostają, nie zmieniam ich. Natomiast Jeśli chodzi o CKD, czy to przypadkiem nie odnosi się do zewnętrznego wyzwalania timera? 1/ nadużywanie...
skąd wiadomo że wybranie zewnętrznego oscylatora domyślnie dzieli sygnał przez 8? W dokumentacji o tym nic nie jest napisane, a dowiedziałem się o tym dopiero z forum. Jak nie jest, jak jest? Ino tylko faktycznie rozpisane jest na dwa dokumenty... Na przykład w F1, nie wiem jak jest w innych: Bit 2 rejestru CSR mówi o wyborze zegara - zegar procesora...
Hej, mam trochę inny problem z takim modułem z transoptorem szczelinowym. Nie chcę zakładać tematu bo w tym układ został dobrze "rozgryziony". Odbieram sygnały za pomocą zewnętrznego przerwania i dostaje dużo więcej przerwań niż jest faktycznie impulsów - na tą chwilę robię to w Arduino, ale na STM32 było podobnie. U mnie opornik dla diody transoptora...
A może robić to poprzez machanie pinami w sposób ręczny? Nie mam siły już na to. Może problemem są też przerwania, wisi USB, 4 timery przerwania zewnętrzne itd. W sumie usb i 2 timery są dla mnie najważniejsze i muszą być obsłużone w pierwszych kolejnościach. Niestety detekcji nie mogę wykonać, jedyną detekcją to jest właśnie ACK z I2C. Nie mam pojęcia...
Hej, mam problem, z którym walczę od dłuższego czasu. Posiadam przetwornik A/C, z którego dane (słowa 16 bitowe) wypuszczane są w postaci szeregowej (bit za bitem). Próbuję zebrać te dane za pomocą przerwania od GPIO, które wyzwalane jest zegarem generowanym przez przetwornik (inna linia niż dane). I teraz problem jest następujący: przy zegarze większym...
Wiem, że ogarnięcie ARM i jednocześnie C może być trudne, ale ja chciałbym na początek zrozumieć chociaż miganie diodą, a tu się okazuje, że to nie takie proste;-) To jest bardzo proste. Po prostu w AVR by migać diodą robisz 1 include io.h (no dobra, 2, bo jeszcze util/delay.h), ustawiasz 1 flagę kompilatora (np. -mmcu=mega8) i definiujesz jedną wartość...
Koledzy proszę, wręcz błagam Was o pomoc...rozwaliłem swojego discovery F0. Tzn. chciałem pobawić się I2C, skapnąłem się, że mam na liniach I2C1 lcd hd44780 więc przestawiłem jego kabelki na portA...niestety również na SWD Pin PA13 i PA14. Nie skapnąłem się, co za destrukcyjne działanie wykonuję. Rozwaliłem chyba bootloader w płytce, nie mogę wcale...
pobralem najnowsza paczke Wersja? :> Wklejony przeze mnie kawałek pochodzi z core_cmFunc.h V4.30 (20 oct. 2015) z CMSIS 4.5. Makefile nie jest Ci potrzebny skoro wybrałeś wtyczkę do Eclipse'a. Opcje sobie "wyklikasz" wedle uznania w ustawieniach projektu. Modyfikacja skryptu linkera to najpewniej tylko zmiana wielkości pamięci zależnie od posiadanego...
W odpowiedniej paczce udostępniony jest szablon projektu.... Program na UC jest banalny, kręci się cały czas w pętli. Dodałem jedynie pomocniczo reakcję na przerwania zewnętrzne, które zapalają diody. Nieużywane wyprowadzenia konfiguruję jako wyjścia. Płytka drukowana jest 4 warstwowa. Ponieważ wykorzystuję dużo komponentów, nie mogłem poświęcić całej...
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef? Dziękuję bardzo za wytknięcie błędu. Jeszcze sporo nauki przede mną. Po zmianie wywołania z HAL_UART_Receive_IT(&huart2, &Received, 1); na HAL_UART_Receive_IT(&huart2, Received, 1); UART zaczął ładnie odbierać dane...
Hehe, chyba ślepnę powoli :P Masz dobrą tablicę wektorów? Tablicę wektorów oczywiście napisałem sam, na podstawie twoich projektów dla µC LPC11xx i STM32. No i faktycznie, w tablicy wektorów zapisane miałem: Nie powinieneś działać na rejestrze 0? Tak, dokładnie, jedynka była wynikiem moich poszukiwań niepowodzenia, wcześniej widniało tam zero....
Dzięki za rady :) Póki co sobie tylko sprawdzałem czy mi jakiekolwiek przerwanie zewnętrzne zadziała ;p jutro mam cały dzień wolny to zajmę się timerami ;p
Witam, prosił bym o pomoc. Potrzebuję robić 5 pomiarów napięć i chcę do tego wykorzystać 5 kanałów ADC1. O ile wydaje mi się że poprawnie wszystko konfiguruję, tak nie wiem w jaki sposób odbierać dane z ADC1->DR. Wiem, że przez DMA, lecz jeśli podaję do DMA adres źródłowy ADC1->DR i adres docelowy np. &do_adresu, to nie wiem z którego kanału...
Wysłałem wiadomość z adresem ponownie. Nie wiem czemu tak się stało że poprzednia wiadomość nie dotarła. Dzięki za informację bo już myślałem że ktoś uznał że miejsce tego tekturowego grata jest na śmietniku ;-) Co do publikacji softu to sam nie wiem, projekt kalkulatora się cały czas rozwija, obecnie jest w pełni sprawny (spełnia wszystkie wymogi pełnoprawnego...
Dalszy ciąg walk :-) Podłączyłem płytkę z DAC'em do STMF107, ale bez żadnej róznicy w działaniu - nadal to samo. Potem jednak przyszło mi do głowy, że karmienie I2S danymi z Timera może wnosić jakieś przesunięcia czasowe, itp... Przerzuciłem więc procedurę "karmiącą" do przerwania od I2S wyzwalanego bitem TXE. I jest poprawa - dźwięk jest już dużo bardziej...
Urządzenie wykonuje pomiary co kilkanaście minut i w zależności czy jest połączenie GPRS wysyła dane po sieci. Jeżeli z jakiegoś powodu nie ma połączenia to zapisuje wyniki pomiaru do pamięci flash mikrokontrolera. Urządzenie pełni rolę SLAVE a ja komunikuję się w dowolnej chwili z wykorzystaniem Modbus RTU przez RS485 i odczytuję bieżące wyniki, które...
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,...
Witam, Uruchomiłem komunikacje po porcie szeregowym za pomocą USART1. Wszystko niby działa, ale przy deklaracji BaudRate w programie np 57600, na terminalu (program REALTERM) komunikacja działa przy ustawieniu Baud: 115200. Ta sama sytuacja ma miejsce przy ustawieniach innych prędkości. Prędkość na terminalu musi być 2x większa niż ustawiona w programie...
Tomasz. Moglibyśmy w sumie na gg, ale to tak dla potomnych i zainteresowanych tematem. Otórz, po to wyświetlacz korzysta z interface FMSC, żeby nie wachlowac ręcznie bitami RD, WR, RS, CS i żeby timing był kontrolowany przez procesor, a nie software. Nawet się nie zastanawiam co ta funkcja robi, bo "z definicji" jest zła :) Może ma tą zaletę, że działa,...
Ale co jesli nie bede nadazal. Wszedłeś na wyższe warstwy abstrakcji. Jak zrobisz dobrze sprzęt i program to zadziała. Jeśli nie - to nie. No to musze poczytac, bo zastanawia mnie ich wyzszosc nad tym co robie zwykle - przerwanie, flaga, obsluga w petli glownej jakies inne rzeczy. Spróbuj w ten sposób obsłużyć cokolwiek "dużego" (stos TCP/IP, system...
Nie widzę żadnych przeszkód, aby wynik konwersji ADC leciał do pamięci przez DMA z częstotliwością 1 kHz. Jak potrzebujesz to 1 MHz też przejdzie. Nie widzę żadnych przeszkód, aby w połowie transferu i dla zakończonego transferu generować przerwanie DMA i obliczać średnią. Funkcja licząca średnią nie powinna zająć dużo czasu i dla zegara 180MHz, nawet...
Witam, próbuje od paru dni przypisać statycznej metodzie obsługę zewnętrznego przerwania. W przypadku gdy statyczna metodę umieszczę bezpośrednio w obsłudze przerwania wszystko działa poprawnie: [syntax=cpp] class GPIO { public: static void EXTI_0(void); private: }; void GPIO::EXTI_0() { } extern "C" void EXTI0_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line0)...
Witam, Temat: Program ma zrobić przerwanie na przycisku PC2 i PA0 tak aby zaświecić LED-ami na płytce. Zacząłem przygodę z STM32. Przerabiam poradnik ściągnięty z tego forum "Poradnik STM32 v1.9" . Bardzo interesująca lektura i bardzo wciągająca. Niestety napotkałem problem. Nie znalazłem odpowiedzi na forum więc piszę zapytanie tutaj. Chodzi o przerwanie...
W normalnym świecie SPI działa w ten sposób, że wysyłając jeden bajt, odbiera się jeden. Pisząc pewien ogromny program, używałem powyższego założenia implementując obsługę SPI1 z pomocą kanałów DMA (DMA1_Ch2 i DMA1_Ch3). Jeden kanał używany do transferu bloku z pamięci RAM do SPI1->DR, drugi kanał do transferu w drugą stronę. Wszystko działało bez najmniejszego...
Witam, z góry przepraszam za mój nikły poziom obeznania w świecie STM32. Myślę, że problem będzie błahy dla wielkich myślicieli elektrody :) Otóż skonfigurowałem sobie TIM7 do pracy tak: [syntax=c]TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_InitStructure.TIM_Period = 4; TIM_InitStructure.TIM_Prescaler = 999; TIM_TimeBaseInit(TIM7, &TIM_InitStructure);...
Mi także się udało uruchomić na F4 bez problemu normalnie I2C:) Chcę uruchomić te I2C z DMA bo myślałem, że przy odczycie z akcelerometru to będzie lepsze. A mógłby się ktoś z Was mi podpowiedzieć, jak najlepiej zorganizować odczyt takiego czujnika. Posiada on opcję zewnętrznego przerwania gdy dane na I2C są gotowe do odczytu. Na chwilę obecną ciągle...
-brak konieczności użycia kwarcu nawet przy projektach wymagających stabilności (RS232,RS485 a nawet USB) Ja na ATmegach nigdy nie musiałem kwarcu wpinać, mimo stosowania w systemie odpalającym UARTa i to w środowisku zakłóceń radiowych (proste moduły RF bez żadnych gadżetów podpięte pod UART, nie to co te nowe LORA itp.). Dodam tylko że system działał...
zewnętrzne przerwanie stm32 przerwanie przerwanie stm32
kondensator pobór prądu cewka pompa sonoff temperatura
Opel Vectra C 2.2 Direct 155 KM - Jaki olej wybrać? Kod błędu P0638 w Renault Modus - sterowanie przepustnicą