Moze nastepuje reset µkontrolera od watchdog-a?
Poza tym sprzętowy I2C potrafi uwiesić procesor 'na amen':) tak że nawet watchdog nie potrafi zresetować procesora Możesz, proszę rozwinąć myśl, bo trudno mi sobie to wyobrazić. Zawsze myślałem, że watchdog resetuje rdzeń jak się przepełni i nie da się tak zawiesić STM32 żeby watchdog nie był w stanie zresetować procka, nawet, a zwłaszcza jak ten utknie...
Trzeba cyklicznie mierzyć napięcie za pomocą ADC i porównywać wartości. Niektóre mikrokontrolery potrafią to realizować automatycznie („ADC analog watchdog” w STM32). Jeśli to mają być dwa progi dla tego samego sygnału, to można też zmieniać napięcie progowe, np. poprzez przełączanie dzielnika. Poniżej przykład dla 1/3 i 2/3 Vcc. http://obrazki.elektroda.pl/9762146100_1...
Nie mówimy o watchdogu programowym ani zewnętrznym, a o programowym inicjowaniu watchdoga sprzętowego. Zgadza się, w niektórych zastosowaniach to odpada, bo wymagany jest samoczynny start watchdoga bez pomocy oprogramowanie. Watchdog nie powinien startować w trybie bootowania - nie wiem, jak to jest zrobione w uC, którego używasz, ale to podpowiada...
(at)osctest1 To jest odpowiedź do mojego postu czy innego? Nie pytałem się o procesor tylko zewnętrzego watchdog-a. Nawet nie chciało Ci się zajrzeć do PDF TPL5010 ( 35 nA ). Więcej prądu pobierze watchdog w STM32 niż ten układ, a procesor do tego układu to na pewno nie będzie STM32. I dodatkowo czas do 2 godzin. Ale punkty zaliczone !
W STM32 można ustawić przerwanie po przekroczeniu pewnego zadanego napięcia na ADC - popatrz na opis trybu "analog watchdog". 4\/3!!
Albo stos, albo watchdog.
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!!
Funkcja SystemInit zawiera ustawienia, które powinny być wykonane przed zainicjowaniem (często czasochłonnym) środowiska dla programu. Zwykle umieszcza się w niej programowanie źródła zegara, parametrów pamięci i watchdoga. Wzorcową funkcję SystemInit znajdziesz np. w CMSIS core dla Twojego mikrokontrolera. W środowisku Keil istnieje sprytny mechanizm...
Hard fault praktycznie zawsze pojawia się gdy załączymy przerwanie, dla którego nie zdefiniujemy handlera. Sprawdź kod pod tym względem, szczególnie przerwanie watchdoga.
IWDG ma timeout dopiero po 1,6s, a jest resetowany w tasku FreeRTOSa, który pstryka co 1ms, oraz w innym, który pstryka co 1s lub częściej, jeśli ma coś w kolejce... Jeśli używasz w ten sposób watchdoga, to w sumie możesz go nie używać wcale. Nie zabezpieczy Cię to wcale przed tym, że zawiesi się jakikolwiek inny task, a nawet jeśli zawiesi się jeden...
OpenOCD zaktualizowanie tak jak kompilator wcześniej. Przerabiam przykład od początku teraz na bazie tego o którym mówiłeś LPC Będe wklejał tutaj co dokładnie przerabiam. Jeśli coś robię źle to mam nadzieje że mnie poprawicie. Jeśli dobrze to mam nadzieje że komuś się przyda. 1.Import projektu lpc1114_blink_led i rename na stm32f0_blink_led 2. Zmiany...
Masz debugger. Sprawdź konfigurację watchdoga, w sensie - wyłącz go.
Jest jakiś powód dla którego używasz WWDG (okienkowego watchdoga) a nie IWDG? WWDG zresetuje układ jeśli wartość licznika spadnie poniżej 0x40 lub kiedy uaktualniasz licznik, ale jego wartość podczas aktualizacji jest większa niż to co zapisałeś do CFR. Do CFR zapisałeś 1. Więc masz "wieczny reset". Zainteresuj się IWDG lub zapisz do CFR jakąś sensowną...
Tego jeszcze nie grali ;) Wstawiłem tą funkcję do przerwania od Timera TIM3_IRQHandler i procek stawał. Potem wstawiłem tą funkcję do funkcji main i było OK. Wstawiłem tą funkcję z powrotem do przerwania i odpiąłem JTAGa i cyka. Hmm ciekawe. Więc w sumie procek się resetuje ale jest to rozwiązanie trochę pośrednie do tego, które chciałem wykorzystać....
#include "stm32f10.x" int test=0; int main(void) { while(1) { test++; } } Źle dobieram parametr przy IWDG_SetReload? Wnioskuję, że uważasz, że watchdog dzięki tej konfiguracji sam się przeładowuje/odświeża, tak? Tak na szybko coś w internetach znalazłem http://ele-tech.com/html/use-of-stm32-iw...
1. Miejsce na konfigurację punktów końcowych USB i bufory dla USB i CAN. 2b. CSS monitoruje HSE, nie SYSCLK, więc nie. No chyba, że wszystko się wysypie i program nie zresetuje watchdoga, o ile był włączony.
Nie wiem czy to co napiszę coś pomoże Koledze, ale mam pewne przemyślenia. Podobny problem też na początku swojej drogi miałem, tzn. problemy przy programowaniu klonem ST-Link do płytki z STM32F103C8T . Objaw polegał na tym, że musiałem ustawiać w STlink Utility opcję Connect Under Reset i co gorsza w odpowiednim momencie musiałem nacisnąć przycisk...
...w takiej sytuacji będę musiał pomyśleć nad innym sposobie monitorowania napięcia. Może użyj funkcji analog watchdog, opisanej w p. 11.3.7 Reference Manual?
Chyba tak jest, tutaj plik startup_stm32f10x_md.c [syntax=c]/** ****************************************... * (at)file startup_stm32f10x_md.c * (at)author Coocox * (at)version V1.0 * (at)date 12/23/2009 * (at)brief STM32F10x Medium Density Devices Startup code. * This module performs: * - Set the initial SP * - Set...
Blue Draco: 1. Debugger twierdzi, że jestem we flashu. Programu do RAM-u nie ładuję. Nie wiem dlaczego wyświetl mi w oknie OpenOCD adres z RAM-u. 2. Wpisywanie wartości domyślnych na pewno nie zaszkodzi. Widziałem już takie kwiatki, że rejestr jest po resecie inny niż deklarowany przez producenta (co prawda nieczęsto, ale nawyk mi pozostał). 3. memset...
Witam, mam problem z STM32F101CB, nie wiem dlaczego się tak dzieje ale teoretycznie działają program, który wgrywam na płytkę, to w trybie debug'a ciągle się resetuje. Możliwe jest że się resetuje płytka jednak robi to tak szybko że ja na wyjściu cały czas dostaje poprawne dane. Ale do meritum, ustawiam breakpoint'a na samym początku main'a, zapuszczam...
A nie masz tam czasem włączonego jakiegoś Watchdoga czy czegoś takiego co Ci resetuje procka? :)
Ja bym na przykład nie zrealizował watchdoga w systemie awaryjnego gaszenia pożarów na ARM-ie... Za duże prawdopodobieństwo f.u.c.k.-upu w jakiejś krytycznej sytuacji. A czy to nie jest tak, że właśnie między innymi ARMy mają dwa niezależne watchdogi żeby spełniać bardziej restrykcyjne normy bezpieczeństwa? Dondu: Dzięki za rzeczowe argumenty na rzecz...
W STM32 timery chodzą nawet jak układ stoi - da się to przestawić rejestrem DBGMCU->CR. Pewnie z watchdogiem jest tak samo. Wtyczka GDB Hardware Debugging jest do znalezienia w "standardowym" repozytorium wtyczek dostępnym do wybrania zaraz po instalacji - http://download.eclipse.org/releases/ind... 4\/3!!
Włączył Ci się "hardware watchdog". Zrób "mass erase" a następnie albo wyłącz "hardware watchdog", albo skasuj też obszar "option bytes" (lub przywróć tam wartości domyślne).
Jeśli chodzi o RPi i Domoticza to powinien dać radę jeśli chodzi o ilość czujników. Co najwyżej pomyślał bym aby podpiąć do niego dysk HDD po USB na którym będą zbierane dane. Dzięki temu nie obciążysz karty SD dużą ilością zapisów i zapewne podziała znacznie dłużej. Co do podłączeń czujników to musisz się zastanowić czy będą one działały analogowo...
Zmieniłem : 2. change The initial stack pointer in the vector table: (void *)&pulStack[STACK_SIZE-1]... to (void (*)(void))((... long)pulStack + sizeof(pulStack)), w startup_stm32f10x_md_vl.c Dalej to samo. [syntax=c]/** ****************************************...
Raz uruchomionego watchdoga nie da się zatrzymać :) Dla trybów uśpienia trzeba użyć WWDG i jest tam taka opcja jak wywołanie przerwania od WWDG na krótki czas przed resetem przez niego systemu. W przerwaniu resetujesz watchdoga i tyle.
Dla F4 niestety tak - errata sheet, str. 16 pkt 2.3.2 - najbardziej denerwujący bug nie został w żaden sposób poprawiony w stosunku do F1. W F2 - to samo. Wszędzie gdzie jest ten zonk będą działy się cyrki gdy magistrala zostanie jakkolwiek zakłócona, w tym: - stop w trakcie trwania transferu bajtu (nie wazne czy adres czy dane) - stop w ack slocie...
Dzieki wielkie na pomoc, kurcze nie wiem czy to dobrze robie ale probuje to wyslac w main-ie i jakies dziwne liczby czasem odbieram, wiec mozliwe ze to drgania lub cos pokrecilem w ustawieniach? Gdy debuguje kod w pracy krokowej widze ze co pewna liczbe pustych skokow (petla nieskonczona while(1); ) program zaczyna sie od nowa a zgaszone diody (sa wysterowywane...
Witam, mam problem ze skonfigurowaniem ADC. Chcę czytać 3 kanały: (ADC1_IN01, ADC1_IN11 i ADC1_IN12) bez każdorazowego wyzwalania (najlepiej, żeby w jakichś rejestrach była zawsze najbardziej aktualna wartość). O ile dobrze rozumiem DS, muszę użyć: trybu injected - dane zapiszą mi się oddzielnie dla każdego kanału, w rejestrach ADC_JDRx. Coś muszę robić...
[syntax=armasm]g_pfnVectors: .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler .word MemManage_Handler .word BusFault_Handler .word UsageFault_Handler .word 0 .word 0 .word 0 .word 0 .word SVC_Handler .word DebugMon_Handler .word 0 .word PendSV_Handler .word SysTick_Handler /* External Interrupts */ .word WWDG_IRQHandler /*...
Źle się wyraziłem. Nie wiedziałem jak watchdog zlicza te liczniki i czy można je od tak sobie odczytać, czy kasują się po resecie. Nadale nie bardzo wiem? Czy chodzi o licznik watchdoga czy o licznik zrobiony programowo w backupdomain?
Ja próbowałem wyłączać zegar, resetować rejestry i nic się nie udało standardowymi metodami. Więc napisałem protezę WG: - SysTick z najniższym priorytetem, - funkcja typu: void COMMON_softwareWatchdogReload()&... g_watchdogCount = 0; } - w przerwaniu od SysTick jest coś takiego: if(g_watchdogCount>WATCHDOG_RELOA...
Oczywiście - można. Ja stosowałem podobne rozwiązanie z lpc11xx, budzony z trybu power down rozwiązaniem w postaci timera taktowanego zegarem watchdoga z ultraniskim poborem prądu. I ładnie mi to działało. Coś podobnego realizuję też w STM32, tyle że wykorzystując wewnętrzny RTC i resetowanie rdzenia na RTC Alarm. Mając dobrze dostosowany do projektu...
Nie wiem czy dobrze operuje na tych rejestrach więc proszę o pomoc. Oto część kodu konfiguracji Rejestru CR1 ADC http://obrazki.elektroda.pl/5186998600_1... Poniżej konfiguracja bitów najpierw nazwa bitów, w nawiasie kwadratowym jego numer i opis jak go rozumiem, co do niektórych nie jestem pewny np: JAUTO, AWDSGL, AWDIE itp. [31...24]...
Zaczynałem na AVRach, później przesiadłem się na STR7xx, ugryzłem LPC, a teraz tworze projekty na STM32 i są to naprawdę świetne uC. Łatwo zacząć, bo jest dobre darmowe środowisko bez konieczności godzinnych konfiguracji, tutaj instalujemy i jest gotowe do pisania programu dla STM32 lub odpalenia przykładów zawartych w IDE. Na początek dobra też jest...
(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...
No tak, skoro z biblioteką masz problemy ze skonfigurowaniem watchdoga i już tyle czekasz aż ktoś Ci pomoże, to nie wiem jak Ty uruchomisz np. timer. Peryferia jakie wymieniłeś nie są trudne w konfiguracji. Pisałem większe projekty bez tej biblioteki i działały od kopa. Ona nie przyspiesza programowania tylko spowalnia, nie wiem czy szybciej napisać...
No to nie mam pojęcia. Zrób jeszcze test na pin PA0, np. klawisz wciśnięty - led świeci, puszczony - nie świeci itp. W kodzie jest wszystko co trzeba, to musi być jakiś 'głupi' błąd. Mogę jeszcze wrzucić ten kod na STM32F103ZET, ale wątpię żeby była jakaś różnica. Możesz jeszcze spróbować czy wybudza się np. z watchdoga. Zapuść watchdoga z jakimś dłuższym...
Biorąc pod uwagę fakt, że w dalszej cześci opisu nie ma ani słowa o czymkolwiek związanym z GPIO to raczej nie da się portów sprzęgnąć z DMA "bezpośrednio" - zostaje więc tylko metoda przez timer. Wcześniej pewnie im się coś pomieszało - miałem manuala w rewizji 11 i w nim też nie było nic o GPIO, teraz jest 14 i znów nic o tym nie ma <: Ewentualnie...
Czy plik ten się komplikuje? Masz to w logu kompilacji w konsoli Dodano po 2 Jak zcleanujesz projekt to nie oznacza że zadziała. Spowoduje to że zacznie kompilowac wszystkie pliki z projektu. Zobacz czy tm_stm32f4_watchdog.c się kompliluje. podejrzyj plik objects.list i zobacz czy tam jest tm_stm32f4_watchdog.o - to bedzie chyba najprostsza metoda
Potem po takiej funkcji należy zresetować procesor, a można tego dokonać na przykład konfigurując wathdog IWDG i walnąć po tej funkcji pętelką while(1); żeby watchdog się nie odświeżył i aby nastąpił reset. Na Cortexach możesz wykorzystać specjalny rejestr, który umożliwi Ci reset procka. W CMSIS jest do tego udostępniona funkcja NVIC_SystemReset()...
Analog watchdog. Polecam. Mam coś takiego w swojej zabawce na STM32F103 i wyzwala bardzo dobrze. Poziom wyzwalania "reguluje się" wpisem do ADC1->HTRi ADC1->LTR
Nie kojarzę jak to jest w STM ale w AVR po resecie zrealizowanym przez WD rejestry konfiguracyjne WD nie są kasowane - tj. watchdog od momentu startu kodu działa tak jak został zaprogramowany przed resetem i czeka na komendę WDR albo wyłączenie. Jeśli ktoś tego nie uwzględni w kodzie to po resecie od WD mikrokontroler potrafi wpaść w pętlę resetowania...
Do bootloader'a wracam przez reset watchdog'a. Czyli SCB->VTOR lepiej dawać przed skokiem do aplikacji? W sumie dobry pomysł. Chodzi Ci o ten temat? http://www.elektroda.pl/rtvforum/topic24... Czytam ale nic nie mogę wygrzebać z niego co by pomogło w moim problemie. Dodano po 15 Odczytałem rejestr NVIC->IABR[1] i okazuje się że w aplikacji widnieje...
Tylko najpierw sprawdź jaka jest maksymalna wartość rejestru IWDG->RLR (Reload register) i czy aby na pewno wartość 10000 się tam mieści.
Oczywiscie tak. Dodam ze uzywam programu System Workbench [syntax=c] /** ****************************************... * (at)file startup_stm32.s dedicated to STM32F103C8Tx device * (at)author Ac6 * (at)version V1.0.0 * (at)date 2018-04-06 ****************************************...
Tak, to DIY. Ustawianie czegokolwiek w debuggerze nic nie da skoro openocd nie łączy się i kończy działanie. W plikach nic nie zmieniałem, oto one: stlink-v2.cfg stm32f4.cfg Only debugging on evaluation boards is allowed. Debugging on custom hardware is not supported and not allowed
Poruszony do głębi ostatnimi tematami na forum napisałem drugi (i ostatni mikroporadnik) Druga część mikroporadnika. Co zrobić jak nie mam debuggera? Najlepiej sobie kupić - można kupić taki z Chin (nie polecam albo za trochę więcej pieniędzy Jlink Edu - i to polecam jak ktoś zamierza na poważnie rozwijać to hobby. BluePill można łatwo przekształcić...
http://obrazki.elektroda.pl/6093026600_1... Witam wszystkich chciałbym zaprezentować układ sterujący przekształtnikiem energoelektronicznym DC/AC (tzw. falownik), który zbudowałem w ramach swojej pracy magisterskiej. Układ przeznaczony jest do sterowania trójfazowym silnikiem indukcyjnym za pośrednictwem falownika. W pracy zaimplantowałem...
Witam Usypiam mikrokontroler w pewnym newralgicznym miejscu programu: Dodano po 2 Czyżby jedyną opcją było wybudzanie mikrokontrolera co np. mniej niż te 13 sekund i resetowanie watchdoga? Dodano po 1 Wygląda na to, że jedyny sposób to uruchomienie timera o nazwie LPTIM, który działa gdy procesor jest uśpiony. Więcej informacji o nim w nocie AN4865...
Cześć, mam pytanie odnośnie Timerów w uC ATmega. Potrzebuję następujących opcji: - zliczanie impulsów z dwóch enkoderów - generowanie dwóch przebiegów PWM - generowanie przerwania co kilka ms. W ATmedze 32 mam 2 timery 8-bitowe i 1 16-bitowy. Wymyśliłem tak, że za pomocą timerów 0 i 2, zliczam impulsy. I teraz pierwsze pytanie: czy da się zliczać impulsy...
GPIOA->BSRR |= GPIO_BSRR_BS5; To nie źródło problemu ale tak się tego rejestru nie używa. To jest write only rejestr czyli tylko samo przypisanie Zgadza się, dzięki :) Co do głównego problemu, punkt 1. Użyj debugera okazał się bardzo pomocny :) Założyłem, że skopałem coś w Makefile (np. brakuje jakiejś flagi) i podczas debugowania nic ciekawego...
Mam program, w którym większość czasu STM32 przebywa w trybie standby. Co pewien okres czasu budzi się. Chciałem wykorzystać IWDG do kontroli pracy w momencie kiedy kontroler przebywa w stanie aktywnym. Okazało się jednak, że nie da się wyłączyć tego raz włączonego watchdoga. Moje pytanie brzmi, czy podobnie jest z WWDG ?
Witam. Autor repozytorium i filmiku o Linuxie na tym sprzęcie tutaj. Jakoś trafiłem na tą dyskusję i pomyślałem, że podzielę się z doświadczeniami jak pracowałem właśnie nad tym coś koło 3 lata temu, bo może jakieś info się przyda. Fajnie zobaczyć kontynuacje tego co samemu mi się udało kiedyś ogarnąć. Generalnie powiem tak: z punktu widzenia dla Linuxa...
No może to jest to (a nawet chyba na pewno), choć rozumiałem to inaczej - ustawienie bitu START powoduje wygenerowanie sekwencji Start (dla mastera), więc logiczne że używa się go w programie obsługi a nie konfiguracji. Bit ACKEN nie powoduje żadnej reakcji 'natychmiast', informuje tylko że układ ma wysyłać potwierdzenia w czasie pracy. To zdanie "cleared...
https://obrazki.elektroda.pl/2759406900_... 8-bitowe mikrokontrolery nadal można znaleźć w wielu projektach, ale dzięki nowemu, niedrogiemu 32-bitowemu z rdzeniem AMR Cortex-M0+ taktowanym 48 MHz — STM32C0 — firma STMicroelectronics dąży do wyparcia 8-bitowych jednostek. Co może się odbyć wskutek: „ograniczonego wpływu...
Teraz porównaj ten przykład ze swoim. I wszystko będzie jasne Spróbowałem z CubeMXa wygenerować bardziej rozbudowany przykład i problem się powtórzył - teraz nie ma dopisanego przeze mnie żadnego kodu. W załączniku konfiguracja z CubeMX - co tam może być nie tak? EDIT - wywaliłem watchdoga (IWDG) i chyba ruszyło... czemu?
Witam. Po ogarnięciu portów i/o chciałem przejść do konwersji ADC. Początkowo zakładam, że nie korzystam z przerwań, nie korzystam z DMA. Screeny z Cube: http://obrazki.elektroda.pl/6506556500_1... http://obrazki.elektroda.pl/5974943000_1... http://obrazki.elektroda.pl/2033015600_1... Plik main: /** ****************************************...
WWDG -> watchdog? Ze znakiem zapytania, bo rzadko piszę na STM, to nie znam wszystkiego na pamięć. Na stosie nie widzę hard fault-a.
Gdzie tablca jest zdefiniowana zależy od toolchaina. Możesz mieć np coś takiego w pliku vectors..... [syntax=c]__attribute__ ((section(".isr_vector"),used)) pHandler __isr_vectors[] = { // Cortex-M Core Handlers (pHandler) &_estack, // The initial stack pointer Reset_Handler, // The reset handler NMI_Handler, // The NMI handler HardFault_Handler, //...
A ja nie mogę dojść ile to ciągnie prądu. Taki Cortex vs ATtiny. Cortex-Mx to rdzenie stworzone z myślą o minimalizacji poboru, zresztą rdzenie ARM znane są z tego, że pomimo gigantycznej wydajności mają mało tranzystorów = mało ciągną prądu. Niech będzie o STM32 (Cortex-M3): The MCU is placed under the following conditions: ● All I/O pins are...
Może być wszystko. Na tym etapie - złe podłaczenie kabelków, brak wspólnej masy, zły plik konfiguracyjny (np jeżeli używasz st-linka z nucleo to jest to v2-1 itd itd proponuje na początek: odpal cmd zmień katalog na taki gdzie masz openOCD (at)simw ST-link z płytek jtag-a nie ma <edytowałem>
nie używam watchdoga. W załączniku umieszczam wykres wielkosci całka i sterowanie które nie powinny w ten sposob spadac prawie do 0.
Funkcja SystemInit jest wywoływana w obu przypadkach na początku main. Podałem ją w kodzie. Może tutaj faktycznie jest problem. Pliki startup.s Keila i Cube się różnią. Zauważyłem, że funkcja SystemInit jest wywołana w pliku dla Cube. Niestety te pliki to dla mnie czarna magia. Czytałem o nim artykuł waszego kolegi z elektrody. https://www.elektroda.pl/rtvforum/topic3...
Witam, Wracam do pisania obsługi peryferiów na wyżej wymienionym ARMie i mam problem z odpaleniem ADC. Chcę go uruchomić na pinie PC0 - czyli kanał 10 ADC. Napisałem taką oto funkcję inicjalizującą: [syntax=c] void ADC_Init() { gpio_pin_cfg(GPIOC, 0, GPIO_CRx_MODE_CNF_IN_ANALOG_value); //PC0 jako analogowe RCC_APB2ENR_ADC1EN_bb = 1; //clock ADC1->CR2...
https://obrazki.elektroda.pl/8071235800_... Firma STMicro zaprezentowała właśnie swój pierwszy mikrokontroler z linii STM32 wyposażony w interfejs bezprzewodowy. STM32WB to rodzina dwurdzeniowych procesorów z rdzeniami ARM (M4 i M0+) wyposażona w transceivery Bluetooth 5 i 802.15.4. Producent tych mikrokontrolerów mówił już o nich...
No może bardzo nie urośnie, ale mi jest łatwiej po prostu zresetować przez AIRCR albo watchdogiem i nie muszę się zastanawiać, co mam indywidualnie poresetować, bo resetuje się samo i wszystko w każdym mikrokontrolerze każdego producenta.
Dodano po 3 I aby w razie czego nie płakał że nie ma: Możesz to zrobić w C też oczywiście: [syntax=armasm] .weak NMI_Handler .thumb_set NMI_Handler,Default_Handler .weak HardFault_Handler .thumb_set HardFault_Handler,Default_Handler .weak MemManage_Handler .thumb_set MemManage_Handler,Default_Handler .weak BusFault_Handler .thumb_set BusFault_Handler,Default_Handler...
Dajemy 'reset' a program nie uruchamia się z bootloader-a i co wtedy? A nie uruchamia się ponieważ: włączony jest remap, przeniesiona tablica wektorów, zawiera 'byle co', nieustawiona 'power domain' itp. Mieszasz sprawy. Reset to reset. Skoro Twój układ uruchamia się po podaniu zasilania, to po resecie tez się uruchomi. Jeśli po resecie się nie uruchomi,...
Witam !!! Uruchamiam projekt https://hackaday.io/project/158256-hover... https://github.com/isabellesimova/Hoverb... Projekt jest napisany na STM 32 W swojej desce mam GD32. Po uruchomieniu błąd systemu zgłasza watchdog /* IWDG init function */ static void MX_IWDG_Init(void) { __HAL_RCC_WWDG_CLK_ENABLE(); hiwdg.Instance = IWDG; hiwdg.Init.Prescaler...
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....
No wiec tak, te dwie rzeczy są takie same w obu twoich przykładach i ich nie zmieniałem: __main_stack_size = 0; __process_stack_size = 1024; Przedstawiam poniżej to co teraz mam w moim projekcie: STM32F103RC_rom.ld [syntax=c]/*****************************... * author: Freddie Chopin, http://www.freddiechopin.info/...
Cześć, Zastanawiam się czy można zmienić miejsce w które skacze program po zliczeniu do 0 przez iwdg. Domyślnie wraca do pamięci o adresie 0x08000000 a ja chcę skoczyć do 0x08004000. Jest to gdzieś zdefiniowane?
Napięcie zasilania mam około 3V3 , z tego wynika że wyłączony WDG powodował reset? To ciekawe. Doczytaj opis. WDG_SW nie służy do włączenia bądź wyłączenia watchdoga, tylko wyboru między tym czy możesz sobie go włączyć ręcznie w swoim programie (tak powinno być domyślnie), a tym czy watchdog jest zawsze sprzętowo uruchamiany po resecie układu. 20.3.1...
Ok. A czym w takim razie różnią się od siebie te dwa zapisy ? ADC1->SR &= ~(1<<0); ADC1->SR &= ~ADC_SR_AWD; gdzie ADC_SR_AWD jest równe 0x01 a zresztą nie działa mi kasowanie przerwania w żadnym z tych przypadków, dodając również opóźnienie czasowe o różnych wartościach aby dać mu czas na reakcję. Wchodzi mi w przerwanie nawet jeśli...
Witam rozpoczynam przygodę z PIC32. Napotkałem na problem z inicjalizacją systemu (zegar, pll, wdt, etc.). Może ktoś mi wyjaśnić jaka jest idea sekcji PRAGMA? Dlaczego tak? Czy trzeba osobno konfigurować drzewo zegarowe dla poszczególnych peryferiów, np. GPIO? Jakie rejestry są przez to konfigurowane i na jakim etapie pracy CPU - fuse bity, specjalny...
Nie wpisałeś tam przypadkiem 0 (aczkolwiek nic to nie powinno zmieniać)? Popatrz że najpierw używasz operacji bitowych &, a potem przypisujesz wprost do rejestru. Dwa - nie bruździ Ci tutaj watchdog (odpaliłeś chyba tym wpisem hardware'owego watchdoga)? Trzy - jeszcze ustawiłeś write protect. EDIT - nie wiem jak w STVP to wygląda, tam jest rozróżniona...
Dlaczego chcesz użyć układu nadzorującego na zakres 5V dla układu pracującego przy zasilaniu 3.3V? Przecież ten układ zawsze będzie wstrzymany w resecie z braku napięcia 5V. On się przełącza przy 4.65V. Jaki sens pakować na płytkę osobny układ resetu z wyjściem typu OD, jeżeli dokładnie to samo masz już wbudowane w uC? Zobacz rysunek 20. na stronie...
Skąd mam mieć informację kiedy zacząć zbierać próbki a kiedy skończyć? Zależy jak masz zrealizowane wejście sygnału. Najprościej jakbyś miał sprzętowe wykrywanie przejścia przez zero, do tego przerwanie i różnicowy ADC. Wtedy dla każdej fazy liczysz wyniki w przerwaniu aktywowanym zboczem rosnącym albo opadającym i problem z głowy, bo cały okres zawiera...
Cześć, Projekt zaraz będę konfigurował od początku. Fakt, podałem za mało danych, wybaczcie, skrajna nerwica mnie na to wzięła. Od początku: Używam SW4STM32, ale chciałbym od tego odejść mocno, bo za dużo automatów i za mało szczegółów, może dlatego, że nie potrafię tego wszystkiego ogarnąć. Kompilatora używałem poprzez naciśnięcie "build". W ustawieniach...
(at)pikarel Być może Cię niewłaściwie oceniłem, za co przepraszam. Wracając do tematu krytyki, to tak, masz absolutnie rację, że jest to miejsce również do krytykowania projektów i jak najbardziej taką krytykę przyjmuję. Chciałbym za to zwrócić uwagę na pierwszy wers mojego posta, w którym zaznaczam, że nie mam zamiaru stosować gotowych rozwiązań, a...
Cześć, Mam dziwny problem z obsługą karty SD w trybie SPI przy użyciu DMA (bez DMA problem był identyczny). Mam sterownik swojej konstrukcji, który co kilka minut odtwarza przy pomocy FatFS komunikaty audio z plików WAV nagranych na karte SD. Losowo co jakiś czas komunikacja z kartą urywa się i ponieważ nie mam jeszcze obsługi timeotów, program zawiesza...
Chciałbym zrobić przerwanie od Analog Watchdog, które będzie wywoływane gdy napięcie na kanale 10 przetwornika ADC1 wyjdzie poza zakres 1V-2V. No i cóż, przerwanie nie chce występować... Sprawdzałem w debuggerze i w ogólę nie wchodzi do przerwania, więc problem jest zapewne w konfiguracji. Sam ADC1 oczywiście działa i mierzy napięcie. Konfiguracja ADC1...
Wydaje mi się że mnie plik wygląda okay [syntax=c] /** ****************************************... * (at)file startup_stm32f030xc.s * (at)author MCD Application Team * (at)version V2.3.0 * (at)date 27-May-2016 * (at)brief STM32F030xc/STM32F030xb devices vector table for Atollic TrueSTUDIO toolchain. * This module performs:...
Magic :-) Problem rozwiązany!!! Wykonałem takie polecenie: ST-LINK_CLI.exe -OB IWDG_SW=1 IWDG_SW=<Value>: The <Value> should be 0 or 1: 0 : Hardware independent watchdog 1 : Software independent watchdog ... i wszystko cudownie ożyło. Czy wiecie może co to konkretnie oznacza?
Ja bym na start podmienił kwarc, albo chociaż obmierzył go oscyloskopem. STM32 niby poradzi sobie w przypadku usterki kwarcu, ale nie wiadomo, co ma robić procesor, gdy ów kwarc nie wystartuje (zachowanie zależy od tego, co producent napisał w software). Resetowanie się układu może świadczyć o problemie z zasilaniem, ale też może być wynikiem działania...
Tablice wektorów mam z przykładów ze strony [url=http://www.freddiechopin.info/]http... Nic w niej nie zmieniałem i wersja 6.1.1 działa dobrze a 7.1.0 wiadomo Tak wygląda tablica wektorów: [syntax=cpp]void (* const vectors[])(void) __attribute__ ((section(".vectors"))) = { (void (*)(void))&__main_stack_end,// Main stack end address...
https://obrazki.elektroda.pl/5077182400_... MICROS to niezależny dystrybutor praktycznie wszystkich bardziej i mniej popularnych mikrokontrolerów. Dzięki swojej pozycji nie koncentruje się na promocji żadnej wybranej marki i jest w stanie zaoferować optymalny produkt do wskazanego zastosowania. Mnogość dostępnych na rynku architektur...
Korzystam z przykładowych projektów dostarczonych przez ST w programie IAR. Po lewej stronie okna programu znajduje się okienko z drzewem folderów i pośród nich znajdują się dwa pliki ze 'startup' w nazwie: startup_stm32f10x_md.o i startup_stm32f10x_md.s (zawartość plików znajduje się poniżej). To o te pliki chodziło? Zawartość dość znacznie się różni....
https://obrazki.elektroda.pl/2451334200_... Rozpocznijmy odpowiedź na to pytanie od spojrzenia wstecz na epokę programowania "bare-metal". Czym jest tego rodzaju programowanie? W informatyce "gołe urządzenie" odnosi się do procesora wykonującego instrukcje bezpośrednio na fizycznym sprzęcie logicznym bez interweniującego systemu operacyjnego....
Witam W jednej wersji elektroniki zdarza mi się, że dostaję ramki z PHY z błędnym CRC. Generalnie kiedy elektronika i kabel są ok to błędów CRC nie miałem więc dla mnie ten problem to nowość. Ramki z błędnym CRC widzę w rejestrze: Ethernet MMC received frames with CRC error counter register (ETH_MMCRFCECR) W momencie jak przychodzi taka 'uszkodzona'...
Ok sprawa się nieco wyjaśniła. Mikroklocek nie idzie spać po użyciu WFE ale za to robi to po wywołaniu WFI. Ostatecznie mój kod, który wprowadza rdzeń w uśpienie wygląda tak jak poniżej i w tej formie to działa [syntax=c] /** * Entering STOP2 power save mode. In this mode all clocks except LSI and LSE are disabled. StaticRAM content * is preserved,...
Tutaj nawet nie chodzi o to jakie konkretne mikrokontrolery są używane do nauki, ale o brak podejścia do techniki tworzenia oprogramowania na urządzenia wbudowane. Jak optymalnie pisać drivery, na co zwracać uwagę w C, po co volatile, jak projektować maszynę stanów, podejście algorytmiki, bufory kołowe, FIFO, stosy, podejście pseudo-obiektowe i tak...
https://obrazki.elektroda.pl/5694434400_... Moduły zasilaczy warsztatowych, takie jak DPS5005, dostępne są od dłuższego czasum.in. na AliExpress. Doczekały się wielu recenzji, w większości pozytywnych. Jednakże często wskazywanym problemem z tymi modułami jest kiepskiej jakości oprogramowanie – interfejs użytkownika pozostawia...
Witam, Bazuje na projekcie ze strony Freddie Chopin dla stma F4 z dodanymi bibliotekami STM32F4xx_StdPeriph_Driver. Zdefiniowałem sobie konfigurację timer'a w następujący sposób: [syntax=c]void Timers_Config(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_TI... ENABLE); NVIC_InitTypeDef NVIC_InitStruct; NVIC_InitStruct.NVIC_IRQChannel = TIM1_CC_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptio...
Hej Freddie, tym razem to już mam poważny problem i proszę Cię o pomoc. Problem mam cały czas z przerwaniami. Nigdy mi w sumie tak naprawde nie zadziałaly na tym projekcie od stm. Przerobiłem Twoją tablice wektorów przerwań: /** \file vectors.c * \brief STM32 (STM32F101 - STM32F103) vector table and __Default_Handler() * \details STM32...
Poradę powyżej zignoruj. Możesz mierzyć wartość VREFINT, który jest dostępny na kanale 17. Jest to wewnętrzne napięcie odniesienia o wartości 1.2 V. Możesz go użyć do określenia że napięcie zasilania układu spada. Jeśli układ jest zasilany normalnie z 3.3 V, to powinieneś na tym kanale zmierzyć wartość około 1490 (4095 * 1.2 / 3.3). Jeśli napięcie zasilania...
watchdog stm32 mikroprocesor watchdog zresetować watchdog
blokada poczty kospel schemat podłączenia taśma zerwana
samsung ic401 mikrokomputer cobra1
Moment dokręcania przewodów paliwa w różnych pojazdach Indesit IWSD61051 nie rusza, pomarańczowa lampka, migająca czerwona kłódka