Rada praktyczna: ustaw preskaler tak, żeby podzielony zegar timera miał jakiś "okrągły" okres, np. 1, 10 lub 100 us, wtedy nie będziesz musiał pracowicie wyliczać wartości okresu timera, np. preskaler 7200 -> okres zegara 100 us; w celu uzyskania jednej sekundy ładujesz do ARR 10000-1. Twój problem, jak napisano wyżej, wynika z braku kasowania znacznika...
https://obrazki.elektroda.pl/7314526000_... Po co? Bo potrzebowałem zastąpić taki zestaw urządzeń: https://obrazki.elektroda.pl/2866172900_... Czyli switcha 100M, ładowarkę USB, rozdzielacz, dwa 3 portowe (używane 4 porty w sumie) "wstrzykiwacze" PoE (jednego nie ma na zdjęciu) jednym urządzeniem, bo schludniej. Poza...
https://obrazki.elektroda.pl/8760486500_... Po przygodach z matrycami zbudowanymi na max7219, przyszła pora na coś bardziej zaawansowanego. Miałem w planach zrobienie własnej matrycy z 1500 jednokolorowych ledów 0603, 3 rejestrów przesuwnych i paru elementów dyskretnych, ale jak już ją zaprojektowałem, to przypadkiem trafiłem na matryce...
https://obrazki.elektroda.pl/1837581700_... Cześć. Chciałbym zaprezentować konstrukcję zegara opartego na lampie VFD IV-18. Jest to moja własna konstrukcja, samodzielnie zaprojektowana, chociaż oczywiście w jakiejś części stanowi kompilację wielu stron o zegarach VFD, podam linki, które mnie zainspirowały szczególnie: - https://steemit.com/electronics/(at)gleb...
Globalne definicje przekazuje się przez kompilator, odpowiednimi parametrami. Powiem Ci w sekrecie, że wszelkie poszukiwania błędów w kompilatorze, szczególnie z takimi trywialnymi sprawami, są z góry skazane na śmieszność, tak więc to czy brnąć dalej w zaparte to już Twoja decyzja. Co z tego, że ty sobie w main.c zdefiniujesz, skoro pliki od UARTu...
https://obrazki.elektroda.pl/9151185000_... Autor poniższego zestawienia jest inżynierem i konsultantem wsparcia dla systemów wbudowanych. W swojej karierze poznał on szereg różnych architektur mikrokontrolerów, różniących się wydajnością, wyborem peryferii, poborem zasilania etc. Wybór odpowiedniego układu stanowi zawsze o sukcesie...
https://obrazki.elektroda.pl/9151185000_... Druga część artykułu o najtańszych nowych mikrokontrolerach z roku 2017. Ekosystem developerski Środowisko developerskie mikrokontrolera ma ogromny wpływ na jakość pracy z nim i w konsekwencji - na produktywność. Na to składają się różne czynniki – jakość IDE, dostępne biblioteki, płytki...
Oto kod: #include <stdint.h> #include "stm32c011xx.h" __IO uint32_t Tick; void SysTick_Handler(void) { Tick++; } void Delay(uint32_t Delay_ms) { uint32_t StartTime = Tick; while (Tick < (StartTime + Delay_ms)) { } } int main(void) { SysTick_Config(12000);...
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...
To nie jest kwestia 8 czy 32 bit. STM32 też ma wsparcie w Arduino, zresztą nowsze Arduino to też ARMowe ATSAM od microchipa. Ich nieco niższa popularność wynika główie z tego, że nie każdy soft napisany na np. arduino uno zadziała na leonardo. Niemniej ogromna część bibliotek ma swoją wersję dla ARM i pisze się zasadniczo tak samo. Jest to wygodniejsze...
poprawiona kalibracja ADC i konfiguracja zegara - pomiar bez zmian
A teraz to samo AVR Nie ma to jak porównywać kod pracujący bezpośrednio na rejestrach do kodu z wyższej warstwy abstrakcji i to w dodatku błędnego. Poniżej jest jak to można zrobić na w tym wypadku stm32. [syntax=c] // Przypięcie zegara do AHB1 RCC->AHB1ENR |= RCC_AHB1Periph_GPIOD; // Inicjalizacja portu GPIO GPIOD->MODER |= GPIO_Mode_OUT; GPIOD->OSPEEDR...
Witam, Niedawno przesiadłem się na programowanie STM32, z arduino, i już na samym początku spotkałem problemy. Aby nie było niedociągnięć że robię coś źle, opisze wszystko jak mam ustawione. Posiadam moduł STM32F103C8T6 ARM STM32 Cortex-M3 oraz programator ST-LINK STLINK V2. Piny podłączone następująco: ST-Link - Moduł 3.3V - 3V3 SWCLK - SWCLK GND -...
1. Rozłączenie openocd -> w widoku "Debug" w zakładce... "Debug" zaznaczasz OpnOCD i klikasz na ikonkę czerwonego prostokąta (albo PPM i coś tam z "Terminate" w nazwie). 2. Co do "automatyzacji" - nie wiem, nigdy nie próbowałem :) 3. Na pewno kompilator nie rozpoznaje definicji? Zakładka "Problems" nie ma nic wspólnego z kompilatorem i najlepiej o niej...
ale czy przypadkiem nie powinieneś jeszcze włączyć zegara w RCC dla timera oraz gpio? Jeśli autor tematu skorzystał z narzędza CubeMX do wygenerowania szablonu, to zegary do peryferiów powinnny być włączone. Tutaj masz link do kursu z przykładem obsługi enkodera z bibliotekami HAL: [url=https://forbot.pl/blog/kurs-stm32-f...
Tak średnio, bo równie dobrze przerwanie timera może wystąpić 1 cykl zegara po jego włączeniu, a chyba nie o to Ci chodzi... 4\/3!!
Witam, Pracuję nad projektem urządzenia, w którym po raz pierwszy zastosuję mikrkontroler STM32 zamiast dotychczasowych AVR. Zadecydowałem się użyć układ STM32F030K6T6 oraz środowisko programistyczne CooCox. Na poczatek napisałem prosty program w załaczniku. Mam takie pytanie, jak w programie zadeklarować, że uzywam zewnetrzny kwarc np: 12Mhz? [syntax=c]...
Witam, Zacząłem zabawę z STM32, kupiłem najtańszy moduł z procesorem STM32F103C8T6, programuje z użyciem STLink v2 w środowisku AC6 STM32 (eclipse) biblioteka StdPeriph. Prosta obsługa portów działa, kompiluje i debugguje poprawnie. Jednak jest problem z UARTem, ciągle łapie śmieci (realTherm pokazuje błąd ramki). Konfiguracja baudrate itd na PC i uC...
Po ponad tygodniowej przerwie STM32 znowu zagościł na moim biurku. Aktualnie walczę z Timerem, na szybko skonfigurowałem go tak aby odliczał do góry, teraz chciałbym aby było z niego wyzwalane przerwanie. Z tego co wyczytałem w przeróżnych manualach udsotępnianych przez STM trzeba to zrobić w rejestrze ISERx, pytanie tylko co podstawić za x i pod którym...
Tego zegara nie trzeba jakoś kosmicznie generować, wystarczy dobrze skonfigurować I2S. Generowanie zegara w jakichś przerwaniach to kosmos :D O to tajemna konfiguracja I2S: MUSI być skonfigurowany (i piny). Po takiej konfiguracji nic więcej z I2S już się nie robi, tylko się zastanawia co tu jeszcze nie działa :) Proponuję najpierw odpalić to wszystko...
Niby nie, a mamy szybszą drogę upewnienia się, że wszystko jest jak być powinno z tym zegarem? Niczego i tak nie możesz być pewny - przecież ta funkcja nie wylicza ani nie mierzy częstotliwości, tylko zapisuje do zmiennej to co wynika z definicji wygenerowanych w jakimś tam pliku przez CubeMX. Które mogą być błędne, w efekcie zmienna będzie miała wartość...
Z drugiej jednak strony naprawdę nie widzę tej wielkiej komplikacji przed którą się tak bronisz. Ot wpisanie zer do dwóch czy trzech rejestrów aby zresetować ustawienia zegara, a zresetowanie wszystkich układów peryferyjnych w STM32 jest równie banalne - wpisać 0xffffffff do wszystkich rejestrów typu RCC->...RSTR, a następnie wpisać tam zero. Wiem że...
Dzieki Panowie, udało mi sie uzyskać zamierzony efekt kierując sie zaleceniami kolegi Sareph , dobrze wiedzieć jak sie ustawia poszczególne bity rejestrów, jednak mam pytanko: https://obrazki.elektroda.pl/4282252600_... właśnie zrobiłem to w taki sposób jak powyżej, bo nie wiem jak ustawić bit25 jeżeli pod nazwą SWJ_CFG Piotrus_999...
Witam. Od niedawna staram się zapoznać z uC STM32 i chciałbym skorzystać z pinów PD0,PD1 uC stm32f100. Mój kod wygląda następująco: [syntax=c] GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;...
OSCCON= (1<<6)|(1<<5); // 0b01100000; przesunięcia bitowe, lub zapis binarny całego rejestru działa zgodnie z zamiarem- zegar 2MHz IRCF3=1; IRCF2=1; A to już nie, poniżej plik h tego procka z którego by wynikało że ustawiam odpowiednie bity (przynajmniej mi się tak wydaje) // Register: OSCCON // Oscillator Control Register volatile unsigned...
Mikrokontroler to STM32F439 Płytka samoróbka, bo niestety w discovery nie można wykorzystać do ETH. Jeśli chodzi o konfigurację zegara to wykorzystuję do tego program STM32CUBEMX. Tam jeśli coś wykracza poza jakiś zakres do jest zaznaczane na czerwono i nie można wygenerować kodu, dlatego wydaję mi się że konfiguracja raczej "ale nie na pewno" jest...
Korzystam z: Układ STM32 P103 (procesor STM32 F103 RBT6) Programator ARM-USB-OCD-H Środowisko CrossWorks v2.1.1 Problem: Pisząc własną obsługę USB wzorowałem się na przykładzie dla Keila (USB HID) i paczce z przykładowymi programami do USB ze strony Olimexa dla układu STM32 P103. Pierwszy (dla Keila) nie działał (operował na innych PINach itp.) ale...
Witam korzystam z modułu Mmnet1002 którego sercem jest AT91. Potrzebuje uzyskać sygnał 32kHz na jednym z pinów. Jeden z pinów PB30 to wyjście programowalnego zegara PCK0 z AT91.Z tego co wywnioskowałem z dokumentacji aby uzyskać owe 32kHz w rejestr PMC_PCK0 należy wpisać wartość 0x0 i uruchomić zegar w rejestrze PMC_SCER. I tu mam niestety problem bo...
Witam Od niedawna bawię się uC STM32 i krok po kroku próbuję nauczyć się ich obsługi. Słowem wstępu: Mam płytkę ZL31ARM, pewne doświadczenie z programowaniem w C/C++ i zupełny brak doświadczenia z mikrokontrolerami. Mam już za sobą mruganie diodami i proste pętle opóźniające; obecnie chcę nauczyć się obsługi przerwać przy wykorzystaniu EXTI i IO. Korzystam...
Witam, timery w stm'ach są bardzo rozbudowane i staram się zrozumieć koncepcje działania. Napisałem standardowy kod na miganie dwiema diodami: TIM_Period i TIM_Pulse . Przy takich wartościach diody są idelanie zsynchronizowane (jedna mruga dokladnie 2 razy szybciej niż pierwsza), ale gdy zmienie wartości TIM_Period na 60000 (ewentualnie 59999) i TIM_Pulse...
Witam, Mam problem z nawiązaniem komunikacji z czujnikiem ciśnienia "asdx001d44r-d0" po I2C. Używam mikro klocka stm32f103rbt6. Nie używam bibliotek. Do tej pory udało mi się coś takiego lecz nie działa: załączam i2c_1: [syntax=c]RCC->APB1ENR|=1<<21; //I2C1ENR - podłączam zegar do I2C1. GPIOB->CRL=0xFF333333; //PB6_I2C_SCL ustawiam na "11...
(...) 0,05us *7 =0,35us czyli najkrótszy potrzebny czas to 7 taktów zegara dla AVR z 20MHz zegarem czas bitu (1,05 do 1,4us) razy 24bit/led razy ilość diod plus 50us to czas odświeżania dla całego łańcucha Sporo pracy dla małego AVR'ka zdziwiła mnie więc Twoja propozycja rozwiązania problemu programowym UART'em: (...)a dla bardziej kapryśnych programowy...
Witam, mam problem z poprawną konfiguracją modułu Bluetooth. Chodzi o to, że na przetwornik ADC wyzwalany timer1 podaje sygnał z GPIOB i chcę próbkować go wg ustawień timera z częstotliwością co najmniej 500Hz. Dane pobierane są z rejestru ADC przez DMA do zadeklarowanego wcześniej buforADC (unsigned short int buforADC buforTx (unsigned char buforTx[4]={0};)...
Wiesz co ja dopiero zaczynam z programowaniem stm ale jedna sprawa rzuciła mnie się w oczy. twoja funkcja jest prawie funkcją z biblioteki której definicja i rozwinięcie znajduje się w pliku core_cm4.h [syntax=c] __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) { if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible...
Witaj :) Co do wgrania, jeżeli używasz System Workbench for STM32 to tam trzeba na projekcie w drzewku nacisnąć prawym myszy, wybrać "Debug As" -> "1 Ac6 STM32..." i po odpaleniu wybrać: Debug device: ST-Link-V2 Debug interface: SWD Tutaj masz obrazki: http://forbot.pl/blog/artykuly/programow...
a pamiętałeś żeby włączyć RCC dla tych portów w konfiguracji zegarów? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GP... ENABLE); Gdzie x to port.
Więc, doszedłem do tego, że mam źle skonfigurowany Timer. Jak wrzuciłem kod z użyciem bibliotek to ruszyło, zaczął przesyłać w nieskończoność jakieś losowe wartości. Po pierwsze w NVICu muszę odblokować przerwanie od Timera: Tak na początek - rejestr danych USART ma 8 bitów, nie 16. Zaprogramuj transfer DMA 8 bajtów, a nie czterech słów. Liczby transmitowanych...
0. Na początek postaraj się zapomnieć o SPL. To już nie jest rozwijane i nigdy nie powinno było się pojawić. 1. Środowisko definiuje startup, a ten może konfigurować PLL. Poszukaj pliku startup.c, albo startup.s oraz wywołań funkcji System_Init czy jakoś tak. Poszukaj też definicji zewnętrznego kwarcu, pewnie będzie 25MHz, a wtedy zegar jest ustawiony...
No, przestawienie zegara na 24 MHz z PLL to całe 4 linijki kodu - któż byłby w stanie napisać to sam...
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,...
Czy ktoś wie gdzie może być problem? Na pewno w tym, że nie czekasz ani na ustabilizowanie się zegara HSE, ani na ustabilizowanie się pętli PLL. Te operacje są obowiązkowe zarówno przed użyciem HSE jako źródła dla PLL jak i przed użyciem PLLa jako źródła dla rdzenia. https://github.com/DISTORTEC/distortos/b...
Czy właściwą praktyka jest wyłączanie zegara RCC danego peryferium np. ADC w trakcie działania programu w celu rekonfiguracji ADC w trakcie działania programu? Jeżeli wyłaczysz zegar to niczego nie skonfigurujesz bo nie da się niczego zapisać do rejestrów (abstrahuję od uK, które mają dwa zegary ADC). Aby zmienić konfigurację trzeba ADC wyłączyć ....
Ponieważ np. I2C komunikuje się z urządzeniem zewnętrznym przez piny GPIO ustawionymi jako alternatywna funkcja pinu AFIO i dlatego trzeba te bloki włączyć ..najoględniej mówiąc.
Czyli w poniższym artykule są błędy? [url=link]https://forbot.pl/blog/kurs-st... Jest tam wzór: INT_FREQ = TIM_CLK/(ARR+1)(PSC+1)(CKD+1) Tak jest TIM_CLOCKDIVISION_DIV w CubeMX zdefiniowany:[syntax=c]#define TIM_CLOCKDIVISION_DIV1 0x00000000U #define TIM_CLOCKDIVISION_DIV2 (TIM_CR1_CKD_0) #define TIM_CLOCKDIVISION_DIV4...
Na bazie jednego z przykładów od STM zrobiłem transfer DMA z urządzenia zewnętrznego i drugi układ z transferem do urządzenia zewnętrznego. W każdym przypadku miałem zewnętrzny sygnał taktujący (zegar) danych równoległych w takt którego dane są wysyłane/odbierane. W przykładzie był do tego zaprzęgnięty któryś timer, ale nie pracował jako licznik tylko...
Próbowałem juz wszystkiego, dodałem funkcję opóźniającą i dalej nic. Taktowanie zegara masz równieź ustawione na 72MHz?
Witam, Ostatnio z kolegą zastanawialiśmy się czy kolejność konfiguracji peryferiów w STM32 ma znaczenie ? Wiadomo, że zegary muszą być ustawiane w pierwszej kolejności, a następnie inne peryferia. Ale np. przy konfiguracji SPI, bądź ADC najpierw powinno zainicjować się GPIO, czy na odwrót, czy może kolejność nie ma znaczenia ??
A gdzie masz konfigurację procesora, jak wygląda u Ciebie plik dla linkera? Gdzie jest konfiguracja zegara? Na początek proponuję zapoznać się z tym [url=http://www.elektroda.pl/rtvforum/to... projekty dla ARMów W pierwszym poście znajdziesz też odnośnik do strony, na której są przykłady, między innymi dla STM32. Miłej lektury...
Ale przecież kod obsługi to już Twoja działka (my nawet nie wiemy co on ma robić). A to co trzeba na razie zrobić żeby to działało, to tylko konfiguracja. A to piszesz że umiesz zrobić.
Rozumiem, chodzi mi tutaj bardziej o "dobre" praktyki programistów. Powiedzmy konfiguracja RCC w STM32. Są STD i HAL, można to zrobić. Wykonuje się to miliardy taktów zegara, można prościej. Makra, odpowiednie funkcje... jak? Jakieś przykłady?
Wszystkie płytki które ja uruchamiam, mają w procesorach pin boot0 ściągnięty do masy przez 10k lub 0R - praca z pamięci flash (używam zewnętrznego programatora). Konfiguracja boot[1:0] = 01 spowoduje uruchamianie bootloadera po każdym resecie. Pytanie, czy używasz bootloadera czy zewnętrznego programatora? Jeśli używasz wbudowanego bootloadera, sprawdź,...
Wywal timeout i sprawdź w debugerze czy program przechodzi za konwersję z ADC. Jeśli nie to musi być błąd w konfiguracji gdzieś albo zegara albo samego adc.
konfiguracja stm32 stm32 konfiguracja stm32 konfiguracja bibliotek
whirlpool pompa myjąca funai instrukcja obsługi lutownica solomon termopara
regulacja częstotliwości agregatu rozdzielacz impulsów
Opel Vivaro A – regulacja drzwi kierowcy, zawiasy, zaczep, szczeliny, tuleje Delphi Indy klient-serwer przez WiFi i router – konfiguracja, porty, dostęp z Internetu