Struktura zawiera pola dla czasu i daty więc zmiana dnia z pewnością sama się nie zrobi. Jak dla mnie najmniej upierdliwą metodą jest trzymanie alarmu w programie w formie timestampa a przy programowaniu alarmu jego przeliczanie do HALowskiej struktury przy użyciu time.h
https://obrazki.elektroda.pl/1982238900_... Tym razem chciałbym zaprezentować zasilacz warsztatowy mojego projektu. Troszkę czasu nad nim spędziłem, aż osiągnąłem zakładany efekt. Obecna rewizja płytki to 18, więc trochę wersji przetestowałem :D Ale do rzeczy. Jest to zasilacz z torem analogowym i sterowaniem cyfrowym. Parametry zasilacza...
https://obrazki.elektroda.pl/2479002500_... Cześć, W nawiązaniu do projektów : Stacja lutownicza RT PRO 3 (grot Weller RT) by Slawek K. https://www.elektroda.pl/rtvforum/topic3... Stacja lutownicza/rozlutownicza RT PRO 3 by Slawek K. https://www.elektroda.pl/rtvforum/topic3... zrobiłem kolejną wersję stacji lutowniczej,...
http://obrazki.elektroda.pl/8034957300_1... Z racji iż były święta i było kilka dni luzu postanowiłem w ramach rozruszania szarych komórek pobawić się płytką HY-MiniSTM3V. Znawcy procesorów ARM doskonale znają tę płytkę więc znają jej możliwości. Samo mruganie diodą mnie nudzi, więc wymyśliłem projekt bardziej ambitny :D i tak powstał...
Witam , Wracam do tematu . Zegar skończony i przetestowany . Podziękowania dla autora za pomoc . Kilka krótkich filmów z pracy zegara wykonane telefonem . https://filmy.elektroda.pl/11_1551555088... https://filmy.elektroda.pl/90_1551555174... https://filmy.elektroda.pl/15_1551555225... https://filmy.elektroda.pl/89_1551555287... Jedna z dwóch gier...
U mnie w kodzie nie ma ...... /* * sterownik dla Margas * wersja dla NUCLEO STM32F446RE * działa dzieki życzliwości i zaangarzowaniu członków forum ELEKTRODA * wspomagających moją skromną wiedzą programistyczną * za co jestem im bardzo a to bardzo wdzęczny * data xx-xx-2024 */ #include "STM32TimerInterrupt.h" #include "STM32_ISR_Timer.h"...
Spróbowałem maski, ale też wspomniałem, że dokładnie takim samym błędem kończy się poszczególne ustawianie bitów jak robię to na całej reszcie rejestrów. Salmona widziałem, z tym, że on korzystał z STM32 C031, co prawda dokumentacja z której korzystał jak na razie pokrywa się, tak jemu sterowanie diodą zadziałało od razu, tak mi już nie działa. Inna...
Witam serdecznie. Mój problem wygląda następująco: Próbuję wykonać sterownie czasowe włącz wyłącz o określonej godzinie. Wszystko jest ok jeśli przedział czasowy w którym ma działać urządzenie zamyka się w godzinach 00:00 do 23:59. W takim przypadku sprawę załatwiają warunki >= na włączenie i == na wyłączenie. Co w przypadku kiedy urządzenie ma działać...
Witam, Mam problem z uzyskaniem dokładnego czasu z timera. To mój kod: [syntax=c] #include "stm32f407xx.h" int main(void){ // flash //FLASH -> ACR |= FLASH_ACR_DCRST | FLASH_ACR_ICRST; FLASH -> ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS; //while((FLASH -> ACR & FLASH_ACR_LATENCY) != FLASH_ACR_LATENCY_5WS);...
Witam, Próbuje skonfigurować zegar czasu rzeczywistego na mikrokontrolerze STM32L476RG. Kod programu znajduje się poniżej, przeczytałem już chyba wszystko co jest w dokumentacji (RMie) na temat uruchomienia RTC, lecz nie chce mi on ruszyć. Czy czegoś brakuje lub coś jest źle w konfiguracji? [syntax=c]#include "stm32l4xx.h" #include <stdlib.h>...
Witam, RTC taktowany jest z LSE. Inicjalizacja przebiega pomyślnie,RTC działa poprawnia. Funkcją GetTime mogę bez problemu odczytać aktualny czas. Problem polega na jego aktualizacji. Cel to wpisanie RTC danych wysłanych po USB. Oto kod: [syntax=c] if (Buf[0] == 'R' && Buf[1] == 'T' && Buf[2] == 'C') { RTC_TimeTypeDef RTC_TimeStructureUSB; char error;...
Wykorzystując timer 16-bitowy oraz preskaler 65535 chciałbym wywołać przerwanie co 1 minute(59,6 sekundy) i w efekcie naprzemiennie zapalać i gasić diodę: [syntax=cpp] void Clock_init(void); void GPIO_init(void); void Tim1_init(void); int main(void) { Clock_init() ; GPIO_init(); Tim1_init(); while(1){;} } void Tim1_init(void) { TIM_TimeBaseInitTypeDef...
Chciałbym poprosić o informację w jakim dokumencie znajdę opis jak zmienić ustawienia w skonfigurowanym i działającym RTC w STM32F103ZE? Dodam że RTC działa i odlicza czas. Chciałbym teraz po konfiguracji RTC zapewnić możliwość zmiany daty i godziny. Dziękuję i pozdrawiam
Przyzwyczaiłem się, ze CubeMX ma różne niedociągnięcia ale jest wygodny jak Arduino :-) Używając CubeMX skonfigurowałem RTC https://obrazki.elektroda.pl/2158734800_... Czas odczytuję kodem https://obrazki.elektroda.pl/1620026400_... do daje 19,98 godziny. Wynika z tego, że data nie jest zapisywana przez funkcję HAL_RTC_SetDate...
Witam, Mam dziwny problem związany z RTC procesora STM32F4. Używam CubeMX i gdy chcę ustawić czas i datę przez: [syntax=c]RTC_Time.Hours = 5; RTC_Time.Minutes = 10; if (HAL_RTC_SetTime(&hrtc, &RTCTime, RTC_FORMAT_BIN) != HAL_OK) { Error_Handler(); } RTC_Date.Year = 20; RTC_Date.Month = 6; RTC_Date.Date = 3; HAL_RTC_SetDate(&hrtc, &RTCDate, RTC_FORMAT_BIN);[/syntax]...
Cześć. Mam uruchomiony RTC i przerwanie do niego co 1 DEBUG Error GetTime co świadczy o tym, że przerwanie działa, ale niestety do odczytu czasu nie dochodzi i nie wiem dlaczego. Wiem, że mogę wykorzystać HAL_GetTick() i zliczać tę 1[s] programowo, ale chyba nie o to chodzi... Poproszę o naprowadzenie na właściwą ścieżkę. [/code]
Chciałbym wykonać pomiar czasów pomiędzy zboczami sygnału. Zbocza przyszłościowo będę konfigurował przez UART. Przykładowo mikrokontroler miałby zmierzyć czas pomiędzy zboczem narastającym i opadającym. Konieczna będzie jednak możliwość wyboru dowolnej konfiguracji. Wyniki pomiarów też będą przesyłane UART'em. Zastanawiam się nad wyborem Timera do tego...
Witam. Od dłuższego czasu mam problem z precyzyjnym obliczaniem czasu generowanego z timerów. Przejrzałem sporo forów i innych poradników, ale co temat to inne obliczenia. Na początku trafiłem na taki schemat. Że częstotliwość z zegara w przypadku tim2 jest to 86Mhz jest dzielona przez TIM_ClockDivision, następnie przez Prescaler, a potem dobiera się...
Witam.Mam problem z funkcjami w dwu kanałowym zegarze sterującym gdzie muszę porównywać czas bieżący z ustawionym czasem włączenia i czasem wyłączenia niezależnie jednego i drugiego kanału. Napisałem coś takiego opierając się na warunkach if ale nie chodziło to prawidłowo bo raz zadziałało a raz nie a i kodu było sporo. Mam z tym duży kłopot bo to ostatni...
Zrobiłem zegarek na uC STM32F0 dokładnie na płytce Discovery. Wszystko fajnie działa, ale źle odmierza czas. Mianowicie liczy tak: 0 1 2 3 6 7 8 9 11 itd. - co 4s dodaje gratis sekundę więcej. Nie wiem co może być powodem takiego stanu rzeczy. Może dlatego że odlicza mi bez kwarcu 32k tylko na tym wbudowanym w uC. Moja konfiguracja RTC: [syntax=c]RCC->APB1ENR...
Witam, napisałem taki kod na procka stm8l152C6: [syntax=c] CLK_DeInit(); CLK_LSEConfig(CLK_LSE_ON); CLK_PeripheralClockConfig(CLK_Peripheral... ENABLE); CLK_LSICmd(ENABLE); // Ustawienie timera4 TIM4_DeInit(); //TIM4_TimeBaseInit(TIM4_Prescaler_1024, 224);// Mruga prawie jak 1s TIM4_TimeBaseInit(TIM4_Prescaler_1024, 32);// Mruga bardzo bardzo szybko...
Witam! Mam w swoim programie chciałbym wykorzystać timer w trybie one pulse do odmierzania czasu, ale w taki sposób, żeby można było wyłączyć timer w przerwaniu od wartości CCR. Do tego celu wykorzystuje TIM2 (general purpose). Niestety timer nieprawidłowo odmierza czas kiedy chcę go wyłączyć bitem CEN(np wpisuję ze ma się wyłączyć po 100us a wyłącza...
Witam, Uruchomiłem RTC w mikrokontrolerze STM32L071. Zegar i kalendarz pracują poprawnie z jednym małym "ale", a mianowicie: zmiana daty, która powinna się odbyć równo o północy, odbywa się z kilko-sekundowym opóźnieniem (zaobserwowałem od 2 do 8 sekund). Poniżej ilustracja problemu (data zmieniła się dopiero o 00:00:05): RTC: (1514851195)...
Witam wszystkich serdecznie. Wraz z kolegą od kilku dni głowimy się nad pewnym problemem i nie potrafimy znaleźć idealnego rozwiązania. Naszym zadaniem jest zaprogramować układ STM32F4 Discovery tak, aby działał jak alarm. Otóż wymyślona przez nas zasada działania mówi, że po wykryciu ruchu (wciśnięciu przycisku) układ powinien odliczać 10 sekund dając...
Witam, Chciałem zrealizować zegar czasu rzeczywistego, w oparciu o wbudowany w STM32f103 RTC. W chwili obecnej uruchomione mam 1s przerwanie właśnie od RTC w obsłudze którego zajmuję się zwiększaniem sekund, minut, godzin, dni itd oraz również w przerwaniu zapisuje sobie te wartości do rejestrów chronionych (a grupy BACKUP DOMAIN ). Teraz chciałem się...
Witam, Otóż od pewnego czasu męczę się nad poprawnym ustawieniem wbudowanego zegara RTC w STM32f401re. Korzystam z płytki Nucelo więc podejrzewam z dość dokładnych oględzin płytki i ścieżek, że część hardware'owa jest OK. Jednakże pomimo tego i ustawień błędy występują przy odliczaniu czasu. Przede wszysktkim sekundy odlicza następująco 1,2..9,16,17,19,21...
Jesli ostatni próbuje się wykonać memcpy, to na 99% jest to zapisz danych pod zero lub inna pamięc RO. Dowiedz się ile wynosi parametr pxQueue->pcWriteTo. Jeśli ta liczba to nie jest adres RAMu (0x20000000+ wskaznikiem , z ktorego korzysta RTOS. Skoro ten wskaznik u ciebie ==0, no to krzaki gotowe...
Tak mnie uczyli różnej maści "starzy wyjadacze" programiści... Pewnie każdy zauważył już, że niektóre rzeczy są w informatyce robione na zasadzie "tak, bo tak". IMO po prostu kiedyś ktoś tak zrobił i stało się to pewnym standardem, bez zastanowienia czy tak jest lepiej, gorzej czy bez różnicy. 4\/3!!
Skrypt linkera z Cube'a "działa" tak, że na początku pamięci ram ląduje sekcja data (zmienne inicjalizowane przy starcie programu - lokalne statyczne i globalne), potem jest bss (zmienne zerowane przy starcie programu - nie inicjalizowane statyczne i globalne). Następny kawałek to _user_heap_stack - czyli sterta i stos "w jednym". Rozmiar data i bss...
Pytanie perspektywiczne, nie realizuję obecnie nic takiego Kilka nóg mikrokontrolera (np 3, albo 4,5) ustawione w wyjście, i traktowane jako jedno "słowo". Ale nie 8. Ustawiane jednym rozkazem a nie trzema. Sąsiednie spełniają inne role. Czy jest takie coś i jak to się nazywa po angielsku Rodzina AVR (w tym duże Attiny) ale/i STM32
Krótko mówiąc - masz wybrany dobry proc? ;) Ja nie używam CCS tylko Eclipse+GCC [przerobiłem pod LM4 migacz Freddiego na STM32] i muszę ustawiać to ręcznie, nie wiem jak jest tu. Zresztą pod CCS dla MSP430 też trzeba odpowiedni model wybrać, także nie do końca łapię w czym problem... Pzdr.
Odczyt rejestru DR przez debugger jest odczytem, a więc resetuje flagę RXNE w rejestrze SR. Wyłącz podgląd rejestru DR to powinno być lepiej.
OK, ale chcę zmieniać liniowo wartość prądu odcięcia, a przy stałych Vref raczej się tak nie da. Czy można w STM32 ustawiać liniowo wartość napięcia reakcji?
No bo wciąż ustawiasz rejestr IMR "odwrotnie" - zajrzyj do manuala co oznacza 0, a co oznacza 1. I w ramach testów zrezygnuj z ustawiania jakichkolwiek priorytetów przerwań czy czegokolwiek z nimi związanego. 4\/3!!
Czy po uruchomieniu/restarcie STM32 porty ustawiają się od razu na domyślne wartości rejestrów ? Tak.
kod nie ma nic do rzeczy, bo działał be zarzutu potrzebowałem wyprowadzić 32 kHz na zewnątrz i ten problem wyszedł niejako w praniu. Ale to przecież ustawia się właśnie kodem.
Proponuję Ci zerknąć na ten kod - https://github.com/DISTORTEC/distortos/b... - robi dokładnie to co chcesz osiągnąć i w dokładnie ten sam sposób. Tutaj kod przerwania - https://github.com/DISTORTEC/distortos/b...
Nie jestem do końca pewien czy to może sprawiać problemy, ale ja ustawiam pin RX jako "Input_PullUp" a nie "floating". A poza tym jaki sterownik linii stosujesz (TJA czy coś innego)? Może nie zezwoliłeś na transmisję na poziomie sterownika?
W reference manual każdego stm32 masz coś takiego: https://obrazki.elektroda.pl/4063716400_... W tej tabelce bierzesz tryb który cię interesuje i ustawiasz te bity z danego wiersza jakie są w nim napisane.
Dla licznika TIM1 trzeba dodatkowo dodać polecenie: [syntax=c]TIM_CtrlPWMOutputs(TIM1, ENABLE);[/syntax] Ustawia ono bit MOE w rejestrze BDTR, polecenie dotyczy liczników 1, 8, 15, 16 i 17 .
Zapewne nie masz wpisanych ścieżek do folderów z plikami *.h. Ustawia się je we właściwościach projektu w "User Include Directories". Zwróć uwagę czy wpisujesz je dla właściwej "Configuration".
Czyli RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2... ENABLE) też mam ustawiać?
Jeśli dobrze rozumie to nawet jeśli w programie ustawiałbym całą linie danych za jednym razem to i tak port STM32 jest ustawiany bit po bicie. Natomiast w AVR może być ustawiany 8 bitów jednocześnie? Wprowadzę wyżej wymienioną zmianę i zobaczymy co z tego wyjdzie.
No dobra, czas tWC musi w moim przypadku trwać minimum 70ns. Na wejściu WE musi pojawić się stan niski po czasie minimum 0ns (czyli w tym wypadku nawet od razu?) po zmianie adresu, ale nie później niż na 60ns przed.. no właśnie, przed czym? Przed kolejną zmianą adresu? Skoro tHA ma minumum 0ns? Szczerze powiem że nie rozumiem o co Ci chodzi. Tu raczej...
Konfiguruję ADC do pracy w STM32L152. Tradycyjnie, problem jest taki, że nie działa. Kod programu wygląda następująco: [syntax=c] int main(void) { RCC->AHBENR = RCC_AHBENR_GPIOAEN;//taktowanie portu A RCC->APB2ENR = RCC_APB2ENR_ADC1EN;//taktowanie ADC GPIOA->MODER |= GPIO_MODER_MODER0;//PA0 jako wejscie analogowe ADC1->CR2 = ADC_CR2_ADON;//wybudzenie...
mozesz zrobic tak: masz menu -> wybierasz jakas opcje z menu-> w kazdej z opcji wykonujesz zwyklego while(1) z warunkiem po wykonaniu petli na jakas flage, ktora ustawiasz w przerwaniu. Teraz w przerwaniu ustawasz zwykly powrot do menu (czyli w przerwaniu np. od nacisniecia przycisku czy od czegokolwiek co Ci bedzie pasowac ustawiasz tylko jakas flage...
(at)piterbuchcic1990 Dla twojego procesora poprawna opcja jaka powinna pojawić się w linii komend przy kompilacji to: (at)Freddie Chopin Dziwie się, że jeszcze nie polecano keila i nie wyśmiano odpalania make z linii komend.
Alternative function da się tylko ustawić dla wyjść. Jako wejście można ustawić pływające, z pullup/downem albo analogowe. Tabelki z opisami jakie piny jak mają być ustawione są zaraz nad opisem rejestrów w RM0008 między innymi ta, którą Ci wkleiłem i nimi należy się kierować przy ustawianiu GPIO.
Witam, Niestety natrafiłeś na ogólnie znany problem :-) I2C w stm32f103 jest po prostu ... nie działa najlepiej. Jeżeli dobrze pamiętam przy próbie odczytu nie ustawia mu flagi IV5 i można tak czekać i czekać. Jeżeli masz nowe biblioteki to spróbuj zmienić prędkość transmisji na 50kB. Jeżeli to nie pomoże to zostaje ci bitbanging :)
Problem nadal występuje. W wersji 5.0.1 Cube jako nakładka do Eclipse (Neon.3 release 4.6.3) nie można już edytować pola LSE (nie dziwne, bo nie ma po co - mikrokontrolery akceptują tylko klasyczne kwarce zegarkowe 32768 Hz). Jednakże problem dzielenia wartości w polu LSE przy każdym wejściu w Clock Configuration nadal występuje. Po zmianie wartości...
Przedstaw sobie parametry w logic to ci zdekoduje. Wszystko działa. Zbocze i polaryzacja - to się w parametrach transmisji ustawia.
mozesz tez przy wiekszym nieco udziale rdzenia (ale wtedy bedzie już w pełni automatyczne i jedyne co musisz liczyć to co ile transmisja do ADC ma być wyzwalana). Czas ten musi być większy niż czas transmisji + 210ns. Zauważ że w przypadku 100k I2C ta częstotliwosc nie może być wieksza niż ~590Hz a w przypadku 400k 2370Hz. Jezeli potrzebujesz większej...
OK, dzieki użyłem gotowca Nie używaj gotowców w takiej banalnej sytuacji. Doczytaj co to jest ten Systick. W dużym skrócie to licznik 24 bitowy - to ważna informacja, może zliczyć maksymalnie do ok. 16 mln (2 do 24). Po doliczeniu do zaprogramowanej wartości zgłasza przerwanie. Do ustawiania wartości można użyć funkcji Systick_Config(), ale najlepiej...
W czwartym poście w tym wątku napisałem, że tak działa timer w STM32 - na początku okresu ustawiane są znaczniki porównanie dla kanałów, których reejstry porównania mają wartość większą niż ARR.
Nie możesz jeden po drugim, bez żadnego czekania odczytywać czy wysyłać kolejnych bajtów przez I2C. Pomiędzy każdym wysłaniem lub odebraniem muszą być sprawdzane stosowne flagi wskazujące czy transmisja danego bajtu się już skończyła. Początek każdej transmisji musi zaczynać się warunkiem startu, a kończyć warunkiem stopu. Razem z adresem urządzenia...
W tym temacie napisałem już co najmniej 2x gdzie się to ustawia. 4\/3!!
Ktoś ci pomoże, jak olejesz w cholere durną bibliotekę FWlib. Nikt, kto zawodowo pracuje z STM32 nie bawi się w to :] Dlaczego twój init SPI nie wygląda mniej więcej tak: wejścia ? To zakrawa o przestępstwo z karą do 5 lat więzienia...:/
No ale wyzwalanie nowego transferu nadal musi być w IFie. Albo wywal ustawianie bitu HTIE.
No bo pomyśl. Najpierw ustawiasz wyjście push-pull a potem dajesz mu stan wysoki. A zastanów się co się dzieje w czasie gdy ustawisz wyjście push-pull i program przechodzi do ustawiania stanu wysokiego? Na wyjściu jest 0 bo jest to domyślna wartość. A więc najpierw daj tą super funkcję GPIO_SetBits a dopiero potem tą jeszcze bardziej super funkcję GPIO_Init.
Czy wyjście ECHO z SR04 nie jest przypadkiem OC(OD)?
Nie ma tutorialu C do ARM. Jest po prostu C i musisz sie nauczyc nowej architektury (np ARM), i jak sie pewne rzeczy ustawia, stosuje.
a reklamy wcale nie wyskakuja czesto, mi sie zdarza raz na 1h moze nawet rzadziej A jak klikniesz debug? podgladu rejestrow nie ma ale zawsze mozna to ominac w taki sposob ze sobie dane z rejestru do zmiennej przypisujesz i w zakladce veriables masz to do podgladu Nie próbowałem. Ale w Keilu w podglądzie rejestrów możesz sobie w trakcie debugowania...
Ogólnie dobrze kombinujesz. Wyrzuć ustawienie VTOR z aplkikacji - niech ustawia go bootloader. W bootloaderze zawołaj procedurę spod adresu pobranego z adresu 4 aplikacji, czyli o 4 dalej niż wartość VTOR. Jedyna potrzebna zmiana w skrypcie konsolidatora - to adres startowy (no i zmniejszony rozmiar dostępnej pamięci ROM)
1. Przykładowy projekt dla STM32 (kompletny dla gcc i Eclipse) znajdziesz tu http://www.elektroda.pl/rtvforum/topic13... 2. Moje zdanie na temat tych bibliotek jest takie: Skoro zamiast: STH->REG1 = COMPLICATED_MODE_4; STH->REG2 = PRESCALE_64; STH->REG3 = DO_MAGIC_4_TIMES; można napisać: STH_InitStruct_t STH_InitStruct = {COMPLICATED_MODE_4,...
Skąd wiesz, że ustawia się na 4800 skoro nie wiesz czy nadajesz? Ta magiczna funkcja UsartInit skądś musi wiedzieć na jakiej częstotliwości chodzi jego APB. Sprawdź czy nie ma tam definicji od RCC. U Ciebie powinno być 8MHz bo nie konfigurujesz nigdzie HSE ani PLL.
Te define'y ustawiają pin mikrokontrolera, do którego podłączona jest linia SDA magistrali I2C na wejście (SDA_IN) lub wyjście (SDA_OUT). Ma to na celu odbieranie/wysyłanie danych z/do urządzenia na magistrali. Linia SDA jest dwukierunkowa (w przeciwieństwie do SCL).
Czy czas działania DMA dla PWM, ADC i UART nie będzie kolidować ze sobą? Gdyby np. ustawić wolniejszą prędkość transmisji na 19kb/s (powtarzanego 5 razy/sek) to czas transmisji kolidowałby z czasem obliczeń danych pobranych z ADC i ustawiania PWM.
1. Dla SysTicka nie włączasz NVIC, bo to przerwanie jest w NVIC zawsze włączone (w ogóle nie da się go wyłączyć inaczej niż wyłączając globalne zezwolenie na jakiekolwiek przerwania). 2. Generowanie przerwania włączasz w SysTicku [; Reasumując: - SysTick->LOAD - wartość "przeładowania" - SysTick->CTRL - dla takiego działania jak chcesz ustawiasz tam...
a napisz jeszcze, gdzie zmieniasz stan portu na przeciwny, bo jak dla mnie, to instrukcja Bit_SET tylko go ustawia na 1.
zgemma ustawianie czasu ustawianie czasu pcf8583 ustawianie czasu bascom
wymiana pompa sprząc peugeot kasowanie check wyjąć bęben pralka
Podłączenie kostki stacyjki Audi A3 do Skody Octavia III Warystor 20K371 - Dane techniczne i zastosowania