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ć...
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...
(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 !
KEELOQ + rolling code można wykorzystać w swoim projekcie DIY bez przeszkód? Oczywiście. Dodano po 33 Mogę zainteresowanym podać kod KEELOQ dla pilota i odbioru , oczywiście z innymi danymi pilota ;). PILOT: Dodano po 10 Bardzo ciekawy i użyteczny projekt, właściwie to prototyp, który może przekształcić się w produkt. A czego mu brakuje żeby już nie...
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...
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...
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...
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...
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>
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
...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? Analog watchdog wystawia przerwanie gdy poziom napięcia będzie wyższy od progu HTR lub niższy od progu LTR. Ja natomiast potrzebuje sytuacji odwrotnej, czyli gdy wartość napięcia znajduje się...
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()...
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...
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...
https://obrazki.elektroda.pl/4768835200_... Introduction to the course In order to understand what kind of device we will be designing today, let's first briefly recall what soldering stations generally are, and how they differ from each other. The entire lower price segment of such equipment, as you might guess, is captured by Chinese...
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:...
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...
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/...
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...
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...
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
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!!
Moze nastepuje reset µkontrolera od watchdog-a?
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...
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...
Dzięki freedi miałeś racje. Patrzyłem na kolejność przerwań w tabeli f0 ale nie na adresy. Aby zapełnić luki i poprzesuwać adresy dodałem brakujące reserved handler Dodano po 11 Teraz tylko muszę rozwiązać skąd mi przerwań multum nadchodzi i w nierównych odstępach od timera. Bo pwm wyprowadzone jest na jedną diodę a przerwanie zmienia stan innej diody....
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...
W STM32 można ustawić przerwanie po przekroczeniu pewnego zadanego napięcia na ADC - popatrz na opis trybu "analog watchdog". 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).
Co to są za brednie? Watchdog reset nie powoduje wyjątku HardFault , tylko SYSRESETREQ (sygnal wewnetrzny resetujący procesor). Po raz setny napiszę, kiedy hardfault wystepuje najczęsciej: - zapis nieprawidlowego adresu (instrukcje STR,STRB,STRH,STREX,STM...) - niedozwolone kombinacje przy PSR - wykrzaczenie się stosu lub źle wyrównany stos - użycie...
#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...
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...
Nie używam watchdog'ów. Upewnij się że na pewno są wyłączone. I że nic do nich nie wpisujesz. Jest to częsty problem.
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ą...
Jak zweryfikować jedno lub drugie? Mógłbyś nieco rozszerzyć/nakierować? W konfiguracji jest tyle różnego rodzaju zmiennych, że dla początkującego trudno jest od razu wszystko objąć. Stąd niestety mogą się pojawić dość trywialne problemy. EDIT: Wygląda na to, że udało się znaleźć i wyeliminować problem. Reset był powodowany przez hardware'owego watchdoga....
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.
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ć....
Wyłącz watchdoga [; 4\/3!!
Witam cytat z noty : Note: If any other bit in this register apart from ADON is changed at the same time, then conversion is not triggered. This is to prevent triggering an erroneous conversion. Powinieneś bit ADON ustawiać na samym końcu, a ty jeszcze zmieniasz JEXTSEL potem i wyzwalanie ADC zostaje wyłączone, Pozdrawiam, Łukasz W nocie również napisano:...
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...
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...
Ź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?
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...
(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...
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...
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...
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?
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
Tylko najpierw sprawdź jaka jest maksymalna wartość rejestru IWDG->RLR (Reload register) i czy aby na pewno wartość 10000 się tam mieści.
Sprawdzam to przy odłączonym układzie od programatora. Dlatego pytam, czy po resecie (watchdog-owym) wszystko startuje od zera, włącznie ze stosem? Nie potrafię znaleźć innego wytłumaczenia, że ten sam kod działa poprawnie, a po zadziałaniu watchdoga wysypuje się.
stm32 watchdog mikroprocesor watchdog opcja watchdog
instalacja elektryczny ciągnik beben drukarka spryskiwacz schemat peugeot
palnik multiolejowy palnik multiolejowy
Jak zdemontować drugi rząd siedzeń w Kia Carnival 2007? Napięcie na pompę paliwa: kiedy jest podawane?