Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 22 gru 2024, o 23:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 57 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 8 lut 2020, o 02:05 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Witam. Mając już jakieś doświadczenie z uC AVR postanowiłem "przesiąść się" na ARMy, a dokładnie mikrokontrolery z serii STM32. Chcę zacząć od pisania kodu bez bibliotek tz. za pomocą rejestrów. W tym miejscu jest problem. Nie wiem jak poprawnie zainstalować środowisko programistyczne, aby wszystko poprawnie działało. Próbowałem zainstalować środowisko wg poradnika Freddiego Chopina (niestety stare linki do pobrania w większości nie działają) oraz ze strony ucgosu.pl (niestety po 3 krotnym instalowaniu wszystkiego od nowa wyskakuje mi błąd, że nie widzi bibliotek, zainstalowałem biblioteki STM oraz ARM). Ktoś instalował ostatnio środowisko pod ARM, bądź wie jak to zrobić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 09:28 
Offline
Nowy

Dołączył(a): 08 maja 2019
Posty: 17
Pomógł: 1

Pobierasz Atollica, generujesz projekt na uC bez HALa i piszesz na rejestrach - nie ma żadnego problemu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 10:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2014
Posty: 164
Pomógł: 3

Atollic działa u mnie bez problemu - instalacja standardowa.
System Workbench for STM32 jest środowiskiem polecanym do tych mikrokontrolerów (też go mam), ale Atollic też działa w porządku.

I jak kolega wyżej napisał - ogarnij rejestry i będzie ok.

_________________
::::::: C ::::::::::
:::::: C++ :::::::::



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 11:28 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Obecnie Attolica( przejętego przez ST) zastąpił STM32CubeIDE. Śmiało można używać Segger IDE, czy Microsoft Visual studio z pluginem, Visual Studio Code...

Środowisko ma tu drugorzędne znaczenie. To, że do projektu jakieś środowisko na siłę podpina biblioteki Hal, nie oznacza, że trzeba ich uzywać. Programujesz, jak Ci wygodniej...

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 11:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

Ja szanownemu koledze mogę ze swojej strony polecić środowisko SEGGERA https://www.segger.com/downloads/embedded-studio/ do programowania STM32 i nie tylko.
Tutaj masz świeży wpis jak zainstalować to środowisko http://strefapic.blogspot.com/2020/02/atsaml10e-mini-board-pierwsze.html na przykładzie ATSAM-a ale to bez znaczenia. Mogę też pomóc w razie jakichkolwiek problemów .

Pozdrawiam


Autor postu otrzymał pochwałę

_________________
http://strefapic.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 15:36 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

wat1970 napisał(a):
Ja szanownemu koledze mogę ze swojej strony polecić środowisko SEGGERA https://www.segger.com/downloads/embedded-studio/ do programowania STM32 i nie tylko.
Tutaj masz świeży wpis jak zainstalować to środowisko http://strefapic.blogspot.com/2020/02/atsaml10e-mini-board-pierwsze.html na przykładzie ATSAM-a ale to bez znaczenia. Mogę też pomóc w razie jakichkolwiek problemów .


Postanowiłem zainstalować SEGGERA tylko mam pewnien problem. Mianowicie chodzi o skomunikowanie się St-linka v2 (na płytce Nucleo) ze środowiskiem. Autor artykułu pokazuje w jaki sposób skomunikować J-linka. Proszę o pomoc. Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2020, o 15:42 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Na płytkę Nucleo w miejsce ST-Link wrzuć sobie J-Link-a. To kwestia wymiany firmware w zintegorowanym programatorze. Segger to umożliwia. Opis znajdziesz na stronie Segger-a https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

Będziesz dużo bardziej zadowolony z pracy pod J-Link. Co prawda od niedawna środowisko Seggera umożliwia obsługę innych programatorów, ale nie wiem jak to działa. W przypadku J-Linka wybierasz tylko J-Link i wszystko działa od palca.


Autor postu otrzymał pochwałę

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 14:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

Czy kolega matteo9999111 poradził sobie z przerobieniem STLinka na J-Linka zgodnie z linkiem od kolegi gizmo5418 ? Ja przerobiłem STLinka na J-Linka w płytce Nucleo L152RE i wszystko pięknie śmiga w IDE SEGGERA.
Pamiętaj tylko dołączyć paczki dla konkretnej rodziny MCU od STM32 , z menu Tools --> PackageManager. Przy pierwszym Build projektu zobaczysz dołączone pliki nagłówkowe i już możesz działać i dziergać wpisy do rejestrów.
Piękna sprawa.

Obrazek

Miłej zabawy.
Pozdrawiam

_________________
http://strefapic.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 19:19 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Tak udało mi się zainstalować program.
Tylko nwm czy nie potrafię obsługiwać porgramu czy mam źle napisany kod. Po wykonaniu programu naciskam przycisk build, a potem START WITHOUT DEBUGGING. Nwm czy muszę jeszcze "startnąć" program czy coś podobnego. Ewentualnie kod jest niepoprawnie napisany (migająca dioda na PA5-podciągnięte napięcie także open drain).Widzi J-linka (po zainstalowaniu wsadu do programatora stale świeci się zielona dioda nawet przy wgrywaniu programu) Od wczoraj cały czas to męczę niestety bez efektów.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 20:15 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Wybrałeś, w IDE w projekcie programator J-Link-a ? Sprawdź, czy czasami nie jest aktywny symulator.
Informację powinieneś widzieć na dolnej belce IDE. Dla aktywnego symulatora jest:
Obrazek

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 21:02 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

gizmo5418 napisał(a):
Wybrałeś, w IDE w projekcie programator J-Link-a ? Sprawdź, czy czasami nie jest aktywny symulator.
Informację powinieneś widzieć na dolnej belce IDE. Dla aktywnego symulatora jest:


Nie w tamtym miejscu pisze CortexM4 on J-Link



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 21:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

Spokojnie do wszystkiego dojdziesz małymi kroczkami. Skróć ten program do niezbędnego minimum tak jak u mnie w przykładzie dla Cortex M3, program zapala diodę na pinie PA5 i robi to . Sprawdź na schemacie swojej płytki na którym pinie masz LED użytkownika. Build (F7) i ikonka wykrzyknika, nic więcej nie trzeba robić, wsad powinien być już w MCU. Jeśli nie widzisz efektu, sprawdź dokładnie w datasheet czy zegar dla IO w dobrym rejestrze ustawiasz u mnie jest to rejestr AHBENR

A tak swoja drogą to wywal z pętli volatile uint32_t delay; i wstaw to przed wejściem w pętle. Ale to potem , najpierw zrób jak piszę zminimalizuj program tak jak u mnie i daj znać czy ci się LED zapala po wgraniu softu.

Obrazek

Pozdrawiam

_________________
http://strefapic.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 22:11 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

matteo9999111, wrzuciłem Twój kod na Nucleo STM32F446RB i działa poprawnie.

------------------------ [ Dodano po: 23 minutach ]

Tak, jeżeli IDE nie jest połączone z J-Link - jest w trybie dissconect. Łączy się automatycznie przy wgrywaniu wsadu do STM-a.
Można oczywiście się połączyć ręcznie i ręcznie wgrać wsad. Służy do tego opcje z górnego menu Target.
Connect J-Link (Ctrl+T,C), Download nazwa_projektu (Ctrl+T,L)

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 22:43 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

gizmo5418 napisał(a):
matteo9999111, wrzuciłem Twój kod na Nucleo STM32F446RB i działa poprawnie.


Ciekawa sprawa. Wgrałem orginalny firmware do st-linka napisałem program w CUBEIDE i działą bez zarzutu także płytka jest zdrowa.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 22:46 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Robisz coś nie tak w samym środowisku IDE Seggera . Pokaż jakiś zrzut ekranu po kompilacji lub uruchomieniu debuggera ( klawisz F5)
Obrazek

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 22:52 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 23:02 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

Coś zrobiłeś nie tak przy zakładaniu projektu....
Z logów widać, że polączenie z J-Linkiem jest.

U mnie jest tak:
Obrazek
Jedynie ostatnia informacja w logu - jej nie powinno być. Zapauzuj ( Ctrl+.) debugger i zobacz, w którym miejscu stoi procek.

Pokaż, czy masz doinstalowane wsparcie dla swojej rodziny procków.
Obrazek

Jak nie masz doinstalowanego wsparcia, tylko używasz domyślnego, to doinstaluj, utwórz projekt na nowo i powinno ruszyć

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2020, o 23:27 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Zainstalowałem wszystkie paczki wsparcia dla STMów. Zrobiłem również nowy projekt (wszystko skasowałem i zacząłem jakby od nowa), niestety dalej tak samo bez zmian.
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 09:42 
Offline
Użytkownik

Dołączył(a): 11 mar 2019
Posty: 44
Zbananowany użytkownik

Pomógł: 5

Zainstaluj sobie Atollica w wersji 9.3 (ostatnie true studio, następne to juz po integracji z cube mx) i zacznij kodzić. Bo tracisz czas na coś tak bezsensownego jak zestawienie środowiska.

https://atollic.com/resources/download/windows/

wypełnij jakieś fejkowe dane jak nie chcesz swoich podawać i tyle.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 12:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 gru 2013
Posty: 121
Pomógł: 16

Szanowny kolega matteo9999111, nie poddawaj się . To nie jest stracony czas , ale nauka jak każda inna. Przez rozwiązywanie problemów uczymy się najszybciej a ta wiedza może ci się kiedyś przydać.
Masz ludzi dobrej woli w tym wątku, którzy mają chęci ci pomóc . "Pokodz" sobie w IDE Seggera i w IDE STM-a lub w czymkolwiek innym i sam wyciągnij wnoski gdzie się najlepiej czujesz. Kolega gizmo5418 bardzo dobrze kombinuje jak widzę. Skoro program u niego na M4 chodzi i umnie analogiczny dla M3 również i wszystko się bez problemu wgrywa to problem może leżeć w konfiguracji projektu np wybrałeś nie ten MCU a może nie dograłeś paczki CMISIS. Poniżej pokazuję krytyczne momenty przy zakładaniu projektu gdzie można coś ewentualnie sknocić. Robię do dla swojej płytki Nucleo którą mam czyl L152RE

Obrazek

Obrazek

Obrazek

Obrazek

Tu mój program, skróciłem jedno zero w pętli for dla mojego M3 :

Obrazek

Proponuję koledze sprawdzić przy pomocy debuggera czy dokonują się wpisy w rejestry . W tym celu wybierz Start Debugging lub F5.

Obrazek

Po wejściu w okno debuggera wybrać w prawym dolnym okienku Groups, rozwinie się okno ze spisem modułów, zaznacz moduł GPIOA. Moduł wskoczy ci w podgląd jak poniżej :

Obrazek

Rozwiń sobie np rejestr MODER jak na poniższym obrazku :

Obrazek

W moim przypadku obserwuję MODER5. Teraz "klikaj" sobie w ikonke STEP INTO w głównym oknie lub F11, program będzie się linia po linii wykonywał aż pojawi się wpis w rejestr MODER5 jak poniżej :

Obrazek

Tu wybiórczo sobie sprawdziłem zapis do rejestru MODER , tak możesz sprawdzić życie wewnętrzne wszystkich rejestrów podczas działania debuggera. Trzeba tylko odpowiedni moduł uaktywnić w podglądzie.

Zobacz czy działa ci poprawnie debuggowanie programu.

Pozdrawiam


Autor postu otrzymał pochwałę

_________________
http://strefapic.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 12:37 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Nie podałem poprawnego uC w set target processor przy tworzeniu projektu i w tym tkwił problem. Teraz wszystko działa jak należy. Dziękuje za pomoc :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 12:52 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

O widzisz. Byłem w 99% pewien, że coś źle procka wybierasz. Widać to po Twoim ostatnim zrzucie z debugger-a. Po 255 cyklach CPU wskoczył do HardFault Handlera.

Samo Środowisko Seggera jest fajne i szybkie. Tak jak i Crossworks ARM. Faktem jest, że są to środowiska odrobinę specyficzne, ale warte poznania.
Nauka oraz poznawanie nowego środowiska nigdy nie jest czasem straconym, jak to pisał jeden z kolegów.


Autor postu otrzymał pochwałę

_________________
Pozdrawiam,
sq8mvy, Paweł



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 13:28 
Offline
Użytkownik

Dołączył(a): 11 mar 2019
Posty: 44
Zbananowany użytkownik

Pomógł: 5

gizmo5418 napisał(a):
Nauka oraz poznawanie nowego środowiska nigdy nie jest czasem straconym, jak to pisał jeden z kolegów.


Otóż trochę jest, bo o ile hobbysta ma czas na marnotrawienie być może to już zawodowo się to po prostu nie opłaca. Środowisko Seggera moim zdaniem jest gorsze od attolica i bardziej toporne. Dlatego ja podałem sprawdzone, które działa od strzała i przy okazji można je sobie skonfigurować po swojemu np by miało ciemny motyw który nie "wali" tak po oczach.

Stratą czasu natomiast nie jest postawienie sobie środowiska od zera ściągając samemu toolchain ARmowy, biblioteki, dokumentacje, openocd i pisać w oderwanym IDE np VS Code nawet Eclipse. Dlaczego? Bo takie środowisko można łatow zautomatyuzować, nauczyć się jak działa kompilacja, linkowanie, budowanie itd. Jeżeli ktoś chce pomigać diodą do szuflady, śmiało, każde IDE się nada. Natomiast jak ktoś chce się czegoś nauczyć od "zera" to polecam ww drogę. Może i bolesną ale na pewno bardziej edykuacyjną niż użeranie się z IDE żeby w nim coś wyklikać bo ktoś coś zrobił za nas i nie do końca dobrze



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 13:39 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Mam jeszcze taką drobnostkę. W jaki sposób rozróżnić 01, 10, 11 w takim zapisie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ja to rozumuje w taki sposób: operator przypisuje tą drugą cyfrę a to po MODE5_pierwsza cyfra. Czy słusznie myślę?

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 14:16 
Offline
Użytkownik

Dołączył(a): 01 lis 2013
Posty: 301
Pomógł: 32

GPIO_MODER_MODE5_0 to jest definicja. Znajdziesz ją w pliku nagłówkowym, opisującym wybrany mikrokontroler. Pojawia się również w podpowiedzi po najechaniu wskaźnikiem myszki na tą definicję.

Jak nie wiesz, jaki to plik nagłówkowy jest z tymi definicjami, to kliknij na niej prawym klawiszem myszy. Otworzy się menu podręczne i z tego menu wybierz opcję skoku do pliku, zawierającego tą definicję.

_________________
Pozdrawiam,
sq8mvy, Paweł



Ostatnio edytowano 10 lut 2020, o 14:23 przez gizmo5418, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 14:21 
Offline
Użytkownik

Dołączył(a): 11 mar 2019
Posty: 44
Zbananowany użytkownik

Pomógł: 5

Zobacz sobie na co rozwija się makro GPIO_MODER_MODE5_0.

Podpowiem że jest to po prostu jedynka przesunięta o odpowiednią ilość bitów w lewo. W tym przypadku 5_0 oznacza bit 10 a MODE5_1 bit 11.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 15:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

GPIO_MODER_MODE5_0 to bit numer 0 w polu MODER5
GPIO_MODER_MODE5_1 to bit numer 1 w polu MODER5



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 15:13 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Czyli jak dobrze zrozumiałem:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2020, o 15:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Jak chcesz wpisac 11 do moder 5 to mususz zrobic. |=GPIO_MODER_MODE5_1 | GPIO_MODER_MODE5_0 czyli bit 1 i bit 0 - na te dwie pozycje wpisujesz jedynki. Na pozycje 1 w moder i pozycje 0 w moder



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lut 2020, o 18:49 
Offline
Użytkownik

Dołączył(a): 06 sie 2019
Posty: 47
Pomógł: 0

Tak apropo Seggera to w jaki sposób utworzyć nowy projekt żeby nie usunąć wcześniejszych. Dając new solution kasuje mi się wszystko nwm dlaczego.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 57 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO