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...
Poradnik dla początkujących, ale jedyne czego w nim brakuje to opisu jak z konfigurować środowisko do pisania na rejestrach. W sumie to masz już środowisko i tak naprawdę nic nie musisz konfigurować aby programować używając rejestrów. W CubeIDE masz przynajmniej pewność, że wszystkie pliki CMSIS są aktualne. Jak zrobić projekt bez HAL: 1. Wygenetuj...
gdzie znajdę plik który ma zdefiniowane adresy rejestrów, przerwań itp. Masz w środowisku: stm32f10x.h ale miało problem zrozumieć zapis: GPIOA->CLR ^= 1<<MODE2 Ja także mam problem :) W pliku stm32f10x.h masz definicje: Próbowałem Atollic TrueSTUDIO wybrałem sobie Embedded C Project naładował mi tyle syfu, że kompilacja trwała dość długo,...
Cześć jakiś czas temu spotkałem się z takim zapisem mapowania rejestrów: C gives no guarantee of the ordering of fields within machine words , więc może być problem z portowaniem. Nie mam zamiaru "wynajdywać koła na nowo" tak pytam się z ciekawości o wasze opinie. Ewentualnie tak myślę że dałoby rade to zrobić też w C++ z template w taki sposób żeby...
Witam, Zagłebiam się powoli w procesor STM32F107 i widzę, że nie będzie łatwo :-) Pamiętam wcześniejszą dyskusję o nieużywaniu biblioteki "Standard Peripherals Library". OK To jak w takim razie zrealizować cos takiego, znanego z innych procesorów: np. GPIOA_CRL = 0x44444444; W pliku STM32F1x.h nie widzę adresów poszczególnych rejestrów np. GPIOA-G,...
Witam. Przeglądając dokumentację uC STM32F10x natrafiłem na rejestr: AFIO_EVCR (Event control register) Zastanawia mnie do czego on dokładnie służy. Według dokumentacji jest to rejestr kontrolny zdarzeń (lub jakoś podobnie). Ustawia się w nim bit "EVOE", oraz poszczególne porty i piny. Czy ma on jakiś związek z przerwaniami EXTI? Dlaczego znajduje się...
Piszę program do sterowania wyświetlaczem LCD cyfrowym i muszę ustawić 0 i 1 bezpośrednio na rejestrach. Mikrokontroler jest taktowany z 1MHz żeby obniżyć pobór energii i ustawiając poszczególne bity w bibliotece HAL poleceniem: [syntax=c]HAL_GPIO_WritePin (A1_GPIO_Port, A1_Pin, GPIO_PIN_SET);[/syntax] powoduje to takie opóźnienie że zamiast prostokąta...
Witam! To znowu ja. Uczyli w szkole o generale, co się kulom nie kłaniał, a ja mam rejestry, co się resetu nie słuchają, ani sprzętowego z pinu, ani z jtag-a. Jak to rozumieć? Timer i dma też nic sobie z resetu nie robią. Teoretycznie po resecie powinienem mieć w rejestrach reset value, ale przynajmniej w wymienionych tak nie mam. Pomaga dopiero wyłączenie...
Witam Nie mogę porodzić sobie z banalnym problemem. Jak elegancko zapisywać bez biblioteki spl rejestry FSMC. metoda: [syntax=c] FSMC->BTR1 = (0x5<<8) | // DATAST = 0x5 (1<<0) ; // ADDSET = 0x1 [/syntax] nie działa no i nie może bo w stm32f10x.h są tylko definicję dostępu bitowego: [syntax=c] /****************** Bit definition for FSMC_BTR1...
Witam, Mam problem z programem. Otóż, po wejściu do funkcji rejestry zrzucane są w nieodpowiednie miejsce. W moim przypadku jest to bufor LCD, co powoduje wyświetlenie kompletnych bzdur na moim wyświetlaczu. Przed wejściem do funkcji: http://img36.imageshack.us/img36/6918/st... Po wejściu do funkcji: http://img27.imageshack.us/img27/196/bez...
Witam, Były tematy o bootloader ale mój problem jest trochę inny. Mam sobie soft, który standardowo jest wgrany pod adres 0x08000000. W pewnym momencie, pobieram sobie nowy plik HEX przez UART. Mój interpreter Hex dekoduje go do surowych danych. Olewam adres bazowy nowego Hexa (który również wynosi 0x0800000) i wgrywam go do 5 sektora pd adres 0x08020000,...
Witam, zwracam się do Was o pomoc, w jaki sposób zrealizować taki problem: Mam dwa pliki z oprogramowaniem na zewnętrzny układ. Zewnętrzny układ trzeba zaprogramować tymi firmware'ami za pomocą SPI podczas każdorazowego uruchomienia urządzenia. Docelowo będzie mikrokontroler np. STM32F103RCT6 ze względu na 256 kB pamięci FLASH. Czyli algorytm będzie...
Witam jakim programatorem odczytać i zapisać ten układzik st62t30bb6.
Witam. Od niedawna uczę się pracy na STM32. Programy piszę bez wykorzystania bibliotek, opieram się na poradnika tutaj z elektrody. Zauwazyłem, ze w sieci istnieje wiele bibliotek np. do LCD HD44780. Biblioteki te są pisane z wykorzystaniem biblioteki StdPeriph. Chciałbym zapytać jak to pogodzić, zeby móc pisać dalej na rejestrach ale wykorzystywać...
Do wyprowadzeń CAN L i CAN H nie można podłączać nic oprócz rezystorów terminujących, sygnalizację za pomocą diod LED można zrobić odczytując programowo znaczniki odebrania ramki CAN, każda transmisja na magistrali CAN uruchamia flagi w rejestrach procesora. Programowo można uruchamiać przez port procesora diody Led w zależności o odebranych danych,
te 2 pliki musze zmienić oraz dane w makefile i linkerze tak ?? W Makefile to za dużo zmian nie będzie (może jakieś nazwy plików), więc głównie linker i tablica wektorów. O to jaki kompilator będzie użyty chodziło mi że w includes są scieżki do g++ i jeśli będzie kompilować się w edge to nie będzie żadnych komplikacji ?? Te ścieżki są wykrywane automatycznie...
Nie sądzę żeby tak było... Jedyne co, to czasem warto układ po programowaniu z jakimiś dużymi zmianami porządnie zresetować <: Ale jest ciekawy hint dla Ciebie: 1. Połącz się z OpenOCD przez telnet. 2. komenda "reg" 3. Komenda mdw <adres> 8, przy czym <adres> to wartość rejestru PSP a potem MSP (w sensie dwa razy). 4. W jednym z tych...
Witajcie, właśnie się bawię pamięcią Flash w STM32F0DISCOVERY (chcę się nauczyć obsługi). Efekt? Chyba zablokowałem możliwość zapisu... Kod (dopiero się uczę, więc komentarze mogą zawierać błędy): [syntax=c]#include "stm32f0xx.h" #include "stm32f0_discovery.h" int main(void) { RCC -> AHBENR |= RCC_AHBENR_GPIOCEN;//LEDY GPIOC -> MODER |= GPIO_MODER_MODER8_0...
Mam płytkę ZL27ARM oraz STM32F0Discovery. Chcę za pomocą ZL27ARM i komunikacji SPI sterować jasnością diody na płytce discovery. Wartość od 0 do 100 ma "przychodzić" poprzez SPI i ma być wpisywana do licznika TIM3, który za pomocą PWM steruje jasnością diody LED. Program się kompiluje, ale płytka discovery nie reaguje na dane z SPI. Przy debugowaniu...
Bez bibliotek zajmuje to jedną linię z jedną instrukcją - zapis wartości do rejestru AIRCR.
Znacznik EOC jest kasowany programowo lub przez odczyt rejestru ADC_DR, co jest opisane w p. 11.12.1 Reference Manual. Wygląda na to, że odczytanie danej z ADC przez DMA kasuje znacznik, nim Twój program zdąży zauważyć jego zmianę.
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...
To napisz może jak ustawiasz Option Bytes. Istnieje tutaj widoczna zależność - utrata komunikacji następuje chwilę po zaprogramowanie Option Bytes. Wartości z tych rejestrów ładowane są przy okazji resetu. Nie włączyłeś przypadkiem RDP?
Dodajmy, że jak już ktoś musi zmieniać stan portu programowo, to w STM32 służą do tego raczej rejestry BSRR i BRR, a w innych uC albo analogiczne rejestry pod innymi nazwami (np. FIOSET, FIOCLR w LPC17xx) albo zapisu maskowany (np. w LPC11xx). W każdym razie nie robi się tego przez programowe operacje logiczne na portach.
Mamy rozumieć że ty przy starcie programu inicjalizujesz wszystkie rejestry procesora na domyślną wartość po resecie ?
Oczekiwanie na flagę powinno być PRZED działaniem na rejestrze. 4\/3!!
1. Ja się uczyłem z tej książki: https://helion.pl/ksiazki/jezyk-c-szkola... Dobrze opisane podstawy języka. 2 i 3. Cóż chyba najlepiej zacząć od podstaw, które arduino bezczelnie omija. Musisz zapoznać się z wszystkim co było "pod spodem" funkcji na arduino. Czyli co to są rejestry, jak je obsługiwać...
Ta procedura jest po prostu błedna. Po każdym zapisie trzeba flash odczytać. Tu tego nie ma. Napisałem teraz dla F3 co prawda taką na kolanie i bez zamykania, i sprawdzania innych problemów - ale rejestry wyglądają podobnie [syntax=c]int ProgramFLASH(uint16_t *buff, uint32_t addr, uint32_t len) { int result = 0; if(addr & 1) return -1; while(FLASH...
(at)Karaczan - to nie kwestia tworzenia średnio optymalnego kodu - bierzesz mbed, spl, hal do ARM i głupie miganie diodą jest w stanie zeżreć 1k RAM i FLASH ;) A jedziesz bezpośrednio na dokładnie tych i tylko tych rejestrach peryferiów, których w projekcie używasz i masz 10x mniej kodu. To kwestia inicjalizacji/konfiguracji wielu rzeczy, które Arduino...
Kod jest prawie taki sam. Widzę że jedną z różnic jest to że w Twoim kodzie nie ma inicjalizacji rejestrów kalibracji ani oczekiwania na jej zakończenie. Tak sobie myśle czy rejestr "JSWSTART" służy na pewno do wyzwalania programowego , czy może powinno się nim startować tryb ciągły?
PS. Jak załadować program za pomocą BootLoadera po RS232? Szukam i szukam w necie i nie widzę. Dokładnie to chodzi mi o to jakim programem. Program nazywa się Flash Magic http://www.flashmagictool.com/ Jak by jakiś pin był podłączony do GND a ja na nim bym wymuszał stan niski (a raczej próbował wymusić) i procesor by się palił to bym zrozumiał. Akurat...
Taki HAL od ST, może i wśród ludzi bardzo nielubiany (bo faktycznie ma swoje chore rozwiązania), ale u mnie spełnił swoje zadanie, gdy przesiadałem się z stm32F334 na nową STM32G4 to dzięki ich HAL miałem bardzo uproszczoną pracę, a różnicę między peryferiami niestety były znaczące, ale opis jaki dostarcza sam HAL po prostu robotę ułatwił. To co mogę...
1. Sprawdź flagi statusowe I2C czy nie ma tam jakiegoś błędu 2. Jeśli jest, to po inicjalizacj I2C zresetuj programowo ten układ peryferyjny (jest gdzieś jakiś bit w rejestrach I2C do tego - I2Cx_CR1_SWRST). 4\/3!!
Odpal sobie debuger, nawet programowy i zobacz jak będzie zmieniał się bit w bajcie/słowie Nie musi do tego nawet mieć uC, czy używac crosskompilatora
Witam, Timery w tych prockach mają tyle opcji, że się w tym wszystkim pogubiłem. Jak można wygenerować na jakimś wyjściu przebieg prostokątny o programowo określonej częstotliwości? Pewnie będzie to tryb Compare z zerowaniem rejestru licznika i zmiany wyjścia na stan przeciwny. Nie mam jednak pojęcia co i gdzie poustawiać w rejestrach.
Zastanawiam się tylko po co sprawdzać to: [syntax=c]USART3 -> CR1 & USART_CR1_TCIE[/syntax] nie rozumiem powodu. Przecież to jest "This bit is set and cleared by software." Programista nie wie czy ustawił to przerwanie czy nie? Dodatkowo ten zapis: [syntax=c]if(( USART3 -> CR1 & USART_CR1_TCIE) && (USART3 -> SR & USART_SR_TC ))[/syntax] wygląda dość...
Jeżeli w odmętach internetu nie znajdziesz prawidłowego wsadu to raczej marne widoki. ...changing the level of RDP protection is only peritted when the current prottection level is 1 Changing the protection level from 1 to 0 will automaticaly erase the entire user flash memory SRAM2 and backup register." Nie przeczytasz pamieci o ile jest zabezpieczona,...
Ale wtedy sprzętowo nie zrealizuję zmiany stanu na pinie wyjściowym i zostają mi tylko przerwania i programowa zmiana stanu, tak? Czyli nie ma odpowiednika CTC w STM? Wybacz może głupie pytania, ale w porównaniu do AVR jest tego sporo, a siedzę 3 dzień dopiero. Albo jakbym wpisywał jednocześnie do rejestru ARR i CCR te same wartości, zadziałało by to?...
A może lepiej zmieńcie kontroler. środowiska atmela nie da się używać. w wersji 6 programowy symulator nie pokazuje stanu rejestrów wejścia wyjścia......... i ma tyle błędów że lepiej używać STM32. nie wspomnę, iż STM jest już tańszy od atmela na dodatek jest 32bitowy ma znacznie więcej pamięci i jest dużo szybszy.
J3 masz zwarte żeby wprowadzić w tryb programowania po uart? No oczywiście. W końcu układ wchodzi w tryb programowania. Ale problem już nieaktualny. Zapomniałem odpisać bo porzuciłem te procki z powodu problemów i zapomniałem nawet że założyłem taki temat :D Problemem były chyba jakieś pozostałości po poprzedniej wersji Flash Loader Demonstratora (mimo...
żeby była jasność bo może nie sprecyzowałem: nie szukam wynalazków typu visual studio... itp... bo to wszystko sprowadza się generalnie do straty czasu podczas konfiguracji oraz późniejszej pracy ... (chociaż coś czuje że bez tego sie chyba nie obejdzie) Dziwie sie w ogóle - że cały ten dramat pod postacią "mozliwości" instalacji OPENOCD, C/C++ SDK...
Zbyt wczesna euforia. Na skutek tego, że w debugerze ręcznie wyłączyłem FSMC i tego nie zauważyłem obsługa EEPROM była prawidłowa. Nie potrafię ustawić tego bitu FSMC_NADV w rejestrze MAPR2 ani programowo ani w debugerze. Zegar do AFIO włączony. Czy jest na to jakaś "sztuczka" gdzieś opisana. W necie znalazłem tylko jeden podobny przypadek https://my.st.com/public/STe2ecommunitie...
http://obrazki.elektroda.pl/9377221800_1... W dziale mikrokontrolery ARM znajdziecie bezpłatny (do osobistego użytku edukacyjnego) poradnik STM32 przygotowany przez szczywronek . Materiał dostępny jest w temacie: techekspert: Do kogo kierowany jest poradnik, jakie podstawy powinien mieć opanowane czytelnik? Czy znajomość określonej...
Tzn, że program może działać dalej poprawnie a debuger wskazuje na to, że jesteśmy w np HardFaultHandlerze ? Mógłbyś nieco rozwinąć myśl ? Czasem może być jakiś problem sprzętowy/programowy/systemowy, który może spowodować wywalenie się debuggera, który będzie np. uparcie twierdził, że jesteśmy wciąż w jakiejś linii, choć mikrokontroler sobie wtedy...
Głownie na bibliotekach HAL, bo to jest najłatwiejsze do przyswojenia dla początkujących. Ale rozpoczął cykl kursów na rejestrach w formie webinarów na yt. W ofercie są kursy języka C, STM32 i RTOS. Jeśli chodzi o mirka, to dawno temu zaczynałem od bluebooka, książka fajna ale nie zachęciłem się wtedy do AVR, trochę ciężko było z kontaktem na forum,...
jaki sprzęt oraz język programowania jest najbardziej przyszłościowy? Krótka odpowiedź: żaden. Po prostu rynek się zmienia baaardzo dynamicznie. To nie są lata 80-90 gdzie 8051 i długo, długo nic. Teraz na topie wydają się STM32*(czyli ARM), z chińskich to masz ESP32, 82*, zaczyna być coraz więcej kości z RISC-V. Języki programowania to wiadomo 1....
Witam wszystkich, Przez pewien okres czasu zdarzyło mi się programować przy dużym wsparciu bibliotek ST. Jak jednak powszechnie wiadomo, korzystanie z owego rozwiązania nie jest optymalnym podejściem. Postanowiłem zatem przejść do operacji na rejestrach mikrokontrolera. GPIO, Timery, DMA - wszystko poszło w miarę gładko, zdziwiłem się dopiero przy ADC....
Postanowiłem przerzucić się na rejestry. Programowanie na bibliotece std_periph_lib ponoć jest mało efektowne i nie wydajne. Co do zaprogramowania CAN na STM32F103RBT6 powinienem korzystać z refference_manual.pdf i z czegoś jeszcze? Jakie materiał są jeszcze niezbędne albo przydatne do tego? Dodam że to moje w sumie pierwsze programowanie na rejestrach...
Zauważ że w funkcji rejestry są konfigurowane w innej kolejności niż w Twoim kodzie "na chama", no i oczywiście jeszcze w kodzie "na chama" konfigurujesz na raz obydwa piny. Obstawiam że konfiguracja przez funkcje powoduje wejście interfejsu w jakiś dziwny tryb z którego nie chce już łatwo wyjść. Rzeczy do sprawdzenia: 1. Skonfigurować "na chama" rejestry...
Na I2C może być JEDEN (słownie: 1) master i JEDEN (słownie: 1) slave aktywny jednocześnie. To co chcesz zrobić nie jest żadnym monitorem, tylko aberracją i nawet jeśli zadziała to tylko przypadkiem i tylko w specyficznych warunkach. Innymi słowy - Twój "monitor" aktywnie wpływa na transmisję pomiędzy układami. Już zupełnie inną rzeczą jest fakt, że...
Ale TYLKO tą flagę czy jeszcze jakieś inne? I2C resetuje po włączeniu zegara. Jak rozumiem chodzi Ci o programowy reset przez rejestry I2C? U siebie robiłem to samo, ale u mnie była taka kwestia że pojawiał się framing error czy tam jakiś inny error. 4\/3!!
Dlaczego włączasz SSOE, skoro chcesz sterować programowo linią SS? Oczekiwanie na wyzerowanie BSY jest potrzebne tylko przed deaktywacją SS. Nie włączaj funkcji SS dla linii PE3, bo w ten sposób nie możesz już sterować tą linią przez GPIO - jest sterowane sprzętowo przez SPI i to nie tak, jak potrzbujesz.
Problem stanowi mikrokontroler STM32F051C8 który po wgraniu kilkadziesiąt razy programu zaczął się samoistnie resetować co 400ms. Pin reset nie był podciągnięty pod 3.3V, ale po podłączeniu pull-upa nic to nie zmieniło. Dało się go programować za pomocą ST-Link Utility (connect under reset). Pin BOOT0 podciągnięty pod masę, za pomocą zworki, którą można...
Spoko... Poczekamy 2-3 tygodnie, autor napisze temat pt. "Nie wiem jak skonfigurować DMA w trybie circular Peripherial2Memory SPI - Bez Bibliotek" :D Kod z użyciem samych rejestrów jest mało czytelny, trudny do ewentualnej migracji pomiędzy mikrokontrolerami itp, itd... Sam jakiś czas temu musiałem wprowadzić pewne poprawki w złożonym kodzie pisanym...
No a przez bootloader? Istnieje szansa, że w jakiś sposób się uszkodził rejestr podający ilość dostępnej pamięci flash - chyba wszystkie programy używają tego rejestru do poznania tego rozmiaru. W OpenOCD na pewno da się jednak wymusić rozmiar pamięci - wtedy program nie używa tego rejestru i programowanie powinno pójść. Chodzi o podanie rozmiaru pamięci...
Czytam właśnie RM0008. Rozumiem że ODR daje możliwość zapisu całymi słowami a GSRR bitowo. Dopiero się wgryzam w st32 wcześniej dużo zajmowałem się avr i dokumenty st wydają mi się nieco nie jasne pojawiają się małe nieścisłości. Nadal nie rozumiem SPI realizuje sprzętowo to co trzeba by robić programowo na gpio. Nie moge uchwycić analogi . Tu mamy...
Witam! Po przyjściu danych do UARTU, są one prawidłowo zapisywane w rejestrze DR, ustawiana jest wtedy również flaga RXNE znajdująca się w rejestrze SR. (według debugera) Niestety, kiedy próbuję programowo sprawdzić stan flagi RXNE, okazuje się ,że nie została ona ustawiona, wartość rejestru SR ma wartość sprzed przyjścia danych(przerwania) Spróbowałem...
RCC_APB1PeriphClockCmd(RCC_APB2Periph_TI... ENABLE);//timer1 taktowany z APB1 Tim1 jest podłączony do APB2 i programowo nie da się tego zmienić. Lepiej korzystać z RM i operować bezpośrednio na rejestrach wówczas RCC dla TIM1 wygląda po prostu tak: RCC->APB2ENR |= RCC_APB2Periph_TIM1;
https://obrazki.elektroda.pl/9462291700_... Chciałbym zaprezentować rozwinięcie eksperymentalnego odbiornika SDR, jaki opisałem ostatnio: https://obrazki.elektroda.pl/6947080100_... https://obrazki.elektroda.pl/7046555300_... Najbardziej w tym momencie interesującym fragmentem płyty jest głowica: https://obrazki.elektroda.pl/9911930900_...
No ale jakie znaczenie ma architektura pamięci flash dla programu obsługującego bootloader USART? Przecież takiemu bootloaderowi wydajesz standardowe polecenia - wyczyść, wgraj, sprawdź. To czy realizuje się to przy użyciu rejestru A czy rejestru B nie ma znaczenia, bo tym zajmuje się bootloader, a nie program go obsługujący... No chyba że źle do sprawy...
Witam. JTAG jest domyślnie włączony po resecie, można go potem programowo wyłączyć. Wydaje mi się że zrobi się to ustawiając bit 0 rejestru AFIO_MAPR, albo korzystając z funkcji GPIO_PinRemapConfig(GPIO_Remap_SPI1, ENABLE) z biblioteki od ST. Pamiętaj tylko żeby wcześniej włączyć zegar dla AFIO bo inaczej przemapowanie pinów nie będzie działać. Pozdrawiam
rejestr stm32 stm32 rejestr programowa stm32
obudowa bandit ariston blokada drzwi pralki sprawdzić mondeo pasek rozrządu
pralka electrolux pralka electrolux
Ocieranie bębna w pralce Whirlpool CS1A300HFA1 - przyczyny i rozwiązania Moc startowa kotłów Termet - regulacja i znaczenie