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,
Jeżeli zadajesz pytanie, to zamykanie tematu uniemożliwia uzyskanie odpowiedzi. Odblokowałem. Źródło taktowania po zwolnieniu sygnału reset jest określone sprzętowo. W przypadku STM32F302 jest to opisane w sekcji 9.2.6 w [url=https://www.st.com/content/st_com/e...
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ć...
Bez bibliotek zajmuje to jedną linię z jedną instrukcją - zapis wartości do rejestru AIRCR.
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,...
Jestem pełen podziwu dla Twojego zapału i naprawdę szanuję Twoją wolę walki. Rozumiem, że wybrałeś już kontroler, nośniki danych i akcelerometr (3-osiowy) a teraz zastanawiasz się jak to oprogramować aby dało dobre wyniki. Masz też przygotowanie i wsparcie merytoryczne w postaci pracownika naukowego, który powiedział, że to wszystko da się policzyć...
Poza tym to, co chcesz definiować samemu, jest już od dawna zdefiniowane w plikach nagłówkowych mikrokontrolera. Z kolei programowanie SysTick znajdziesz w pliku nagłówkowym rdzenia - wystarczy przepisać treść nibyfunkcji SysTick_Config. Zmianę priorytetu przerwania, która w tej funkcji jest, możesz pominąć. No i zapis: (uint32_t) 0x00000007 to to samo,...
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...
Z mojego doświadczenia i opisanych objawów wynika, że Twój program zmienia konfigurację pinów PA13 i PA14. NIe spodziewałbym sie błędu po stronie ST. Najbardziej prawdopodobny jest zapis do rejestrów GPIOA bez wykonania maskowania. Może też być błąd w przesunięciach bitowych jeżeli używasz magic numbers zamiast definicji z pliku stm32l010xx.h. Inna...
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.
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...
Jeszcze dokładnie nie rozumiem dlaczego nie mogło być tak jak pisałem wcześniej Bez obrazy, ale to są podstawy programowania w C na mikrokontroler. chodziło o to że musiałem jakby zdefiniować że czekam na bit CAL dokładnie dla ADC1? Dlatego wymagało to użycia w instrukcji iloczynu logicznego z ADC1->CR2? Przecież już ze 3x dostałeś informację, że ADC_CR2_RSTCAL...
Nie wiem, dlaczego działa w Keil - na moje oko nie ma prawa. Wyłączasz SPI w czasie trwania transmisji ostatniej ramki. Zaprogramuj drugi kanał DMA na odbiór do stałej lokalizacji w pamięci i obsługuj przerwanie od tego kanału, a nie od nadawania. Czy możesz jaśniej wytłumaczyć?jestem że tak powiem amatorem programowania. W momencie mam ustawiony kanał...
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...
Mamy rozumieć że ty przy starcie programu inicjalizujesz wszystkie rejestry procesora na domyślną wartość po resecie ?
Mnie tym razem forma i treści od Kolegi Piotra nie satysfakcjonuje - szczególnie w kontekście innych wpisów na elektrodzie. Nie mogę zrozumieć czemu ta prezentacja miałaby służyć. Brakuje ewidentnie konkretnych walorów edukacyjnych, na pewno dla takiego amatora jak ja, być może jest to dobra inspiracja zaawansowanych użytkowników, ale szczerze wątpię....
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ść...
Wszystko zależy od tego czy zaczynasz programować procesory i się uczysz czy tylko zaczynasz ARM'ami jako nową grupą urządzeń cyfrowych. Bootloader nadaje się w 2 przypadkach : przy kopiach gotowego softu (np. jak trzeba zrobić upgrade "wyjazdowy"), i przy pisaniu oprogramowanie z dużą wiedzą inżynierską (jeżeli nie potrzebujesz oglądać rejestrów, robić...
Oczekiwanie na flagę powinno być PRZED działaniem na rejestrze. 4\/3!!
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? (read out protection) RDP =AA = LEvel 0, no protection - nic nie włączałem - ale sprawdziłem i nie ma żadnego write/read...
Pobierznie sprawdziłem współpracę JLinka + Keil z tym zestawem poprzez SWD. Oto moje obserwacje: - Większą funkcjonalność widać już od samej konfiguracji (ustawianie prędkości działania, trace event'y, periodic trace itd). - Opcja "Download Code" działa prawidłowo (we wbudowanym ST-Linku nie działała wcale i jedynym sposobem było przejście do sesji...
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?
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!!
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...
Tak prawą ręką przez lewą nogę zrobiłem koledze projekt do AC6 bez HAL-a (zajęlo to 4 minuty wliczając ładowanie AC6 i CubeMx) (załacznik na dole tego postu). W ac6 import project <ciach> Post raportowany. Takie sprawy proszę załatwiać przez PW, gdyż dla moderatora obsługującego raport powstaje niezręczna sytuacja, że post dot. sposobu moderacji...
1 kHz to praktycznie nic. Nie rozumiem, dlaczego proste ładowanie rejestru CCR zastąpiłeś wywołaniem funkcji, która wykonuje mnóstwo dziwnych czynności. Zmiana współczynnika wypełnienia wymaga wyłącznie zapisu rejestru CCR. Timer programuje się tylko raz na początku - potem tylko ładujesz wypełnienie i ew. okres. Prawdopodobnie to każdorazowe zbędne...
Dzięki za sugestie. Znalazłem błąd. Błędna była ustawiona kolejność portów. W moim przypadku największym utrudnieniem w programowaniu jestem na tym etapie sam ja. Przesunięcie bitowe, które wskazał Freddie Chopin również było błednie przeze mnie ustawione, zmieniłem i wszystko funkcjonuje jak powinno.
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
(at)tadzik85 , od czegoś trzeba zacząć. Ciekawszego podejścia zawsze można nauczyć się w domu i starać się wdrażać je gdzie tylko można :) Tak? W mojej firmie było podobnie. Keil + SPLa. A ja wprowadziłem i GCC i programowanie na rejestrach. A jak ludzie zobaczyli, że SPL to 2x większy kod, kilka uA więcej prądu dyskusja ucichła.
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.
(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...
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.
To jest stary cod z Atmegi której funkcjonalności nie nie rozbuduje bo nie pozwala na to PCB. Po drugie przy większym obciążeniu obliczeniami pomiarów prądów i napiec stabilność odczytów pozostawia trochę do życzenia. Soory ja potrzebuje sterownik a nie kurs migania diodą. !(at) lat to sporo więc wiedza już wyparowała i się zdezaktualizowała. Dlaczego...
Temat rozwiązany. Problemem było to, że były zworki w Nucleo i programowałem Nucleo a nie docelowy STM32.
2 zmiennych dokładnie w tym samym czasie ( A nie prościej wyłaczyć przerwania na te 4 takty zegara. Zamiast systicka zastosuj inny timer np 32 bitowy. Wtedy przepełnienie będzie następować przy 72MHz co ok 60 sekund. Powinno wystarczyć. Masz tez specjalny rejestr co liczy cykle zegara przy wykonaniu programu (proponuję zapoznać się z DWT). Dlatego...
Witam Mam problem z zaprogramowaniem uC STM32F103RBT6. Układ wcześniej bez problemu chodził i się programował. Problem pojawił się gdy zmieniłem wartość rejestru FLASH->ACR z 2 na 0. Od tej pory H-JTAG widzi procka ale nie mogę wgrać flasha :( Otrzymuje taki komunikat: http://obrazki.elektroda.net/81_12461006... Czy można coś z tym zrobić ?
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ę...
ż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...
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...
Jak piszesz w zespole to musisz miec wspólną platformę. Jak robisz to sam to nie. Dlaczego niby w zespole trzeba się decydować na biblioteki od ST (SPL, HAL). Teraz jest sporo alternatyw do wyporu i nie trzeba się ograniczać tylko do STM32. Nie wyobrazam sobie programowania uC bez znajomości sprzętu i siedzenia nad RM-em. Tyle że z cięzkimi bibliotekami...
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,...
Wektory można przemapować (rejestr VTOR). Ja robię bootloader w sektorze 0 a reszta dla aplikacji. Właśnie znalazłem przykładowy bootloader ze strony ST i faktycznie to lepsze rozwiązanie. Pierwsze sektory na bootloader'a, a dalej isr_vector aplikacji + aplikacja. Bootloader w linkerze ma start FLASH na 0x0800 0000 Applikacja w linkerze ma start FLASH...
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...
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...
Spróbuj może też debuggowania przez samo OpenOCD i telnet - sprawdź czy wszystkie typowe operacje (podgląd pamięci, instrukcji, rejestrów, step, halt, resume, reset, programowanie, ...) działają jak należy. 4\/3!! Sprawdziłem już wcześniej kilka komend i wszystko działa. Teraz spróbiwałem zaprogramować i oto co dostałem (przez telnet): Open On-Chip...
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?...
Teraz moje pytania którą bibliotekę lepiej poznawać czy może one są praktycznie takie same? "Biblioteki" te lekko się od siebie różnią, ale obydwie są równie beznadziejne (; Czy na armach mogę sobie programować tak jak na avr?tzn dodam sobie jakiś plik nagłówkowy jak to tam było avr/ io.h z definicjami rejestrów wejść/wyjść i mogę operować bezpośrednio...
ARMy są równie dobre dla starych wyjadaczy, jak i dla początkujących Tak samo jak rachunek różniczkowy jest równie dobrych dla starych wyjadaczy po studiach matematycznych, jak i dla pierwszoklasistów w gimnazjum. Dodano po 1 A może to nie "kretyni" tylko inteligentni ludzie, którzy korzystają z bardziej efektywnej drogi pozyskiwania potrzebnych w...
1. Uruchomienie timera z nazwami symbolicznymi bitów: TIM3->CR1 = TIM_CR1_ARPE | TIM_CR1_CEN; Popatrz w plik stm32f05xx.h - masz tam definicje bitów dla każdego rejestru, m.in. TIM_DIER_UIF i całe mnóstwo innych. Nazwy bitów są poprzedzone nazwami rejestrów. 3. Do kasowania znacznika przerwania wystarczy podstawienie - nie potrzeba &=. Np. TIM3->SR...
Hmm wiem wiem, akurat ten kod był przerabiany z 5 razy i w kilku miejscach nie poprawiłem komentarzy faktycznie, i też wolę wersję z widocznymi nazwami, i pierwotnie taką miałem wszędzie jednak w trakcie szukania problemu zacząłem wątpić, czy tam na pewno odpowiednie bity są poustawiane i powstawiałem maski wszędzie ... ale naprawdę mój problem polega...
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...
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...
Mieszanie do tej dyskusji bitbandingu nie ma sensu. Operacja "tylko-zapis" jest atomowa jeśli tylko zmienna którą zapisujesz ma "rozmiar natywny" (lub mniejszy), czyli na ARMach generalnie 32 bity lub mniej. Wszelkie operacje zdradzające cechy "read-modify-write" (a więc "a^= b", "++a", "a += b", "a |= b" itd) NIE są atomowe. To czy akurat "celem" danej...
Zaczynam zabawę z STM32F0 Discovery. Zacząłem od manuala i analizy różnych przykładów z sieci. Niestety każdy konstruuje projekty na swój sposób i przebrnięcie przez niektóre przykłady doprowadza niemal do szału. Każdy gdzie indziej obsługuje przerwania, konfiguruje przerwania i peryferia,... Do tego jedne przykłady są z użyciem SPL, inne bez, inne...
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;
mam płytkę stm32f0discovery ale czy jest ona dobra na start z stmami Dobra jak i inne, tym bardziej jeśli zaczynasz od prostych rzeczy typu miganie LED, port szeregowy itp. . Doświadczenie z jednej rodziny przydaje się w drugiej. A już szczególnie jeśli się używa bibliotek (SPL czy HAL). Ale w zasadzie sedno problemu tkwi w materiałach do nauki. Jeśli...
Goldpiny przy zworce jednej są krzywe, jedyne co to psuje, to wrażenie estetyczne. Czekałem na to 5 dni. Gdy zamawiałem drugą, czekałem 6 dni. Było to wysyłane pocztą lotniczą, jednak mieszkam w Warszawie, więc musisz liczyć czas, który potrzebuje poczta polska na dostarczenie płytki z Warszawy do Ciebie. Zamawiałem u dwóch różnych sprzedawców z ebaya....
Przycisk mode to zwykły przycisk podpięty do masy. Więc do zrobienia tego zadania wystarczy, żebyś ogarnął sterowanie GPIO. PC13 (przycisk MODE) ustawiasz jako Input, PC8 (dioda) ustawiasz jako Output i piszesz obsługę przyciska. Jeśli korzystasz z HALA to odczyt stanu na pinie to HAL_GPIO_ReadPin(port, pin), a ustawianie stanu na pinie HAL_GPIO_WritePin(port,...
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....
Wadzą w redukcji powierzchni płytki, a w niczym nie pomagają. Dlaczego mam na płytce umieścić tylko dwa zbędne elementy? Może powinienem dać ich ze 20? Zauważ, że w tym fragmencie manuala jest mowa o przycisku RESET - to uzasadnia użycie kondensatora. Jakoś jednak na wklejonym przez Ciebie firmowym obrazku ST nie widać rezystora, który tak rekomendujesz....
Dzięki, dobrze wiedzieć, jak coś to zgłoszę się do Ciebie po najnowsze OpenOCD. Na razie spróbuje na tym starociu co mam - 0.6.1. Przeglądnąłem sekcję RCC. Znalazłem tam jakieś różnice w rejestrach do włączania zegarów dla poszczególnych peryferiów i ich resetowania. Co do samego ustawiania SYS_CLK nie znalazłem różnic, czyli wszystkie funkcje w projekcie...
Wiec kupiłem ksiązki i zacząłem się uczyć ale na bibliotekach SPL. Nie sądzę aby ktokolwiek Cię do tego namawiał na tym forum. Sam zabrnąłeś w ślepą uliczkę. Do tego niczego się nie uczysz - bo nie poznajesz procesotów, tylko jakieś biblioteki. Co z tego że wywołasz magiczną funkcję "HAL_ADC_Start_DMA" ale stawiam dukaty przeciw kamyczkom, że to DMA...
http://obrazki.elektroda.pl/5020904800_1... Witam Tym razem chciałbym zaprezentować programowy projekt zegarka i datownika uruchomionego na sprzęcie: STM32F4Discovery oraz LCD TFT DEM240320E TMH-PW-N(A-Touch) na sterowniku Renesas R61580 (kupiony swego czasu w TME. Obecnie nie mają na stanie, można próbować kupić go tutaj:http://www.soselectronic.pl/?str=3...
CoIDE jest martwe od kilku lat, a strona grupy studentów, która to rozwijała to teraz gniazdo spamu i wirusów. Naprawdę nie ma powodu, by z tego korzystać. Poza tym, ostatnia wersja CoIDE wcale nie była lekka, a błędów miała całkiem sporo. ATS lub SW4STM są dzisiaj zdecydowanie bardziej dopracowane i da się z nich bez problemu korzystać pisząc bezpośrednio...
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....
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...
Witam Niedawno przyszła do mnie płytka NUCLEO F103RB. Chciałbym nauczyć sie programowania na STM32 na rejestrach, dlatego tez zacząłem przeglądać reference manual dla STM32 https://obrazki.elektroda.pl/4062980900_... Dowiedziałem sie, że w przeciwieństwie do Atmeg, tutaj najpierw należy doprowadzić zegar do portów aby je uaktywnić....
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...
Dla jednolitego interfejsu. Nie wydaje mi się że można zrobić uniwersalny interfejs dla wszystkich zastosowań. Wolę dopasowywać rozwiązania do każdej sytuacji optymalnie. Dla zasady. Jeżeli jest to zasada, to niesłuszna. (kto tworzy takie zasady?) Dla poprawności. Czego? Interfejs jednokierunkowy bez odczytu działa poprawnie. Dla zwykłej ciekawości...
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...
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...
O właśnie, a u mnie taka sytuacja w pewnych miejscach występuje. Niektóre elementy tej tablicy służą do określenia czy została ona zaprogramowania czy nie. Wartość zaprogramowanej ma być równa 1. Niezaprogramowania będzie miała 0xFF. Albo teraz 0x00 po użyciu domyślnego inicjalizatora. Co do buforowania w rejestrach to oczywiście wiem że zabraknie...
Co do tłumaczenia not i korzystania z bibliotek to moje zdanie jest takie że początkującemu programiście takie podejście bardzo odpowiada. Ponadto wpajanie nawyku używania standardowych funkcji przygotowuje taką osobę do współpracy z innymi programistami. Zdarzyło mi się kilkukrotnie pisać kod z drugim programista i nie wyobrażam sobie żeby każdy z...
Swoją drogą, to chyba tylko my tutaj na Elektrodzie tak nisko oceniamy SPL...jak się popatrzy po zagranicznych forach, to tam bezkrytycznie je stosują. Stąd prawie całkowity brak przykładów bez użycia SPL w internecie i literaturze. I pomyśleć że opiera się to na demie Kiedyś założyłem wątek na forum ST o to link: https://my.st.com/public/STe2ecommunitie...
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...
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.
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!!
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...
Dziękuję Wam za odpowiedzi! Mam sporo umiejętności (zbudowałem sobie laser wraz ze sterowaniem np.) ale w temacie Arduino dopiero raczkuję. Wiem, że dzwoni ale często nie wiem gdzie - jeszcze nic nie programowałem, choć obsługuję i rozbudowuję płytkę od CNC. Niedawno kupiłem Ard. Nano na próbę, żeby się czegoś nauczyć i rozważałem, czy to maleństwo...
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
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...
Pamiętaj że każdy procek będzie miał inaczej zrealizowane przerwania, cortex-m zrzuca do rejestry automagicznie, cortex-A wymaga już zrobienia tego ręcznie. C51 nie znam, ale możliwe że tam tez przerwanie mogło być szybkie bez zrzucania rejestrów na stos. Tylko kilka rejestrów jest odkładanych na stos automatycznie; reszta - jeśli jest to konieczne...
To może być użyteczne, dziękuję, popatrzę, ale już nie dziś - niedziela, więc nie dzień na robotę. Z przeglądu dokumentacji, jaką znalazłem, mam wrażenie, że wielu istotnych informacji na temat sprzętu w niej nie ma - w szczególności, jak się programuje urządzenia peryferyjne. Coś o tym jest w komentarzach programów i plików nagłówkowych, ale bez dokładniejszej...
Moje pytanie dotyczy możliwości dodania do Atollica obsługi nowych procesorów STM np. serii G030. Wersja 9.3.0 jest ostatnią oficjalną, ale nie wspiera nowych procesorów. Za to STM promuje teraz kombajn STM32CubeIDE - ale w nim nie umiem utworzyć czystego projektu pod programowanie tylko na rejestrach. Czy ktoś podpowie jak można dokonać aktualizacji?...
odhaczyłem reset i halt i wpisałem monitor reset halt monitor reset init Wystarczy tylko to drugie i zaznaczyłem, żeby sam ładował obraz (pewnie tutaj nie powinien tego robić) i symbole potem break point at main i zahaczyłem Resume. Jak będziesz mieć nowe Eclipse i nową wtyczkę GDB to nie ma siły aby te konfiguracje nie były widoczne - wtedy zobaczysz...
Chcesz mieć kłopoty i długi kod, wydaje Ci się, że można programować mikrokontroler nic o nim nie wiedząc, a program, który piszesz, ma tylko błyskać diodą - używaj bibliotek. Chcesz, żeby działało i chcesz wiedzieć, jak działa - pisz kod działający na rejestrach. Oczywiście bez przesady. Pewnie nie ma sensu pisać własnego stosu USB czy TCP/IP, ale...
Z zasady w obsłudze zdarzeń nie ma oczekiwania. Obsługa z oczekiwaniem musi być rozbita na dwa zdarzenia. Nie ma się o co spierać. Piszemy w C, bo tak jest łatwiej i wygodniej (a na ARM - pewnie i kod lepszy, ale na PIC16 czy 51 żaden kompilator nie wygeneruje kodu lepszego niż średnio dobry programista). Piszemy pod RTOS, bo łatwiej i wygodniej, chociaż...
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,...
Tak, peryferia uC 32-bitowych są strasznie skomplikowane, tak strasznie, że nie da się ani przeczytać ich opisu, ani napisać kodu je obsługującego inaczej, niż biorąc gotowy przykład z HAL i modyfikując parametry. W takim prostym AVR do uruchomienia SPI potrzeba tylko trzech zapisów rejestrów, a w STM32 - aż trzech. To samo z UART, czyli tragedia po...
Witam, Potrzebuje pomysł na zgrabne programowanie zewnętrznej kości EEPROM podpiętej przez I2C z STM32F103RB. Chcę żeby to się odbywało mniej więcej jak to ma miejsce w AVR, czyli jeżeli programuje procesor to i EEPROM. W STM na początku programu mam funkcję która programuje mi EEPROM domyślnymi wartościami, ale wiadomo że tak nie może zostać na stałe,...
Od rejestracji w 2013 roku często tutaj jestem. Wcześniej tylko sporadycznie szukałem informacji na tym Forum. Pewnie nie wiem jak to wcześniej wyglądało, ale to chyba taki znak czasów - millenialsi, wychowani bez stresu, nie chcą czytać, nie chcą się uczyć, nie mają czasu. Oni potrzebują rozwiązać problem, którego sami nie rozumieją i nie potrafią...
Witam Wykorzystuję bibliotekę stm32f10x_bkp i mam problem z podtrzymywaniem na baterii wartości BackupRegisters. Bateria jest podpięta do PIN1, napięcie na pewno dochodzi do nóżki PIN1 bo sprawdzałem niestety wartości wszystkich rejestrów, które powinny być podtrzymywane są resetowane. Na początku myślałem, że to problem natury programowej chociaż przykłady...
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...
Skoro wcześniej już miałeś do czynienia z programowaniem mikrokontrolerów, to rozpoczęcie programowania ARM'ów nie będzie już taką straszną przeprawą przez tą tematykę, jak dla zwykłego nowicjusza. Ja bym na Twoim miejscu w wyborze książki kierował się tym, której treść bardziej Ci podejdzie. Pozycji o CORTEX'ach jest znacznie więcej w języku polskim,...
Witam Zmagam się z akcelerometrem ADXL345 + STM32F103. Połączenie po SPI. Otrzymuję na wyjściu wartość przyśpieszenia w kodzie U2. Zapisana jest na 13 bitach, w dwóch rejestrach 8 bitowych. Po odebraniu najbardziej znaczące przesuwam << 8 i łączę z mniej znaczącymi. Problem polega na tym, że wciąż otrzymuję wartość dodatnią, mimo że na najbardziej...
Cześć, Jestem jeszcze w piaskownicy jeśli chodzi o STM, a moje programowanie staram się opierać na samodzielną walkę z rejestrami :) Niestety nie chce mi zadziałać sterowanie diodą LED przez PWM. Moglibyście rzucić okiem na ustawienie rejestrów bo już siedzę nad tym którąś godzinę i za bardzo nie mogę wpaść na pomysł. uC taktowany przez wew. zegar 8MHz,...
Kiedy używać resetowania? Wtedy, kiedy chcesz przywrócić peryferium do "reset state", czyli takiego jak po resecie mikrokontrolera. Czyli jeżeli dobrze rozumiem to w przypadku resetowania powinienem ustawić bit RST. Następnie włączyć zegar RCC (ponieważ w konfiguracji po restarcie jest on wyłączony) i skasować nit RST? RST jest ustawiamy i kasowany...
Dyrektywy - zwykłe #define. Ale jak korzystasz z jakiegoś środowiska programistycznego to zapewne definiuje ono to za Ciebie odpowiednim argumentem kompilatora. Np. w tutorialu Freddiego dla STM32F1 jest w Makefile'u definicja ("-DSTM32F10X_xD"). Wyboru zegara dokonujesz programowo poprzez konfigurację odpowiedniego rejestru (np. RCC w STM32F10x). Jeśli...
No ten dziwaczny twór jest z książki Paprockiego:) Po prostu jeszcze nie odróżniam funkcji bibliotecznych od bezpośrednich rozkazów C odwołujących sie do nazw rejestrów. Gdzieś na 'najniższym' poziomie dobrze jest odwoływać się do ujednoliconych nazw (jak np. GPIOE) a nie bezpośrednich adresów w hex, bo o ile liczby ośmio czy szesnastobitowe jakoś względnie...
rejestr stm32 stm32 rejestr programowa stm32
pomiar prędkości indukcyjnym wodomierz magnes mercedes stacyjki sprinter
brother zacięcie papieru obudowa transformatora
Epson XP-635 nie drukuje niebieskiego i żółtego - przyczyny i rozwiązania Bezpieczne usuwanie kamienia kotłowego: kwas octowy vs. kwas siarkowy