Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom – w tych trudnych czasach –
Zdrowych, Spokojnych i Pogodnych Świąt Bożego Narodzenia oraz
Szczęśliwego Nowego Roku

Życzy Zespół Home Made


Ankieta: Jaki system operacyjnym preferujesz
Ankieta jest zamknięta.
Windows 60.78% 31 60.78%
Linux 31.37% 16 31.37%
MAC/OS 7.84% 4 7.84%
Inny 0% 0 0%
Razem 51 głosów 100%
*) odpowiedź wybrana przez Ciebie [Wyniki ankiety]

Odpowiedz 
 
Ocena wątku:
  • 1 Głosów - 5 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
Programowanie ARM, nauka, środowiska programistyczne IDE
SP5FCS Offline
Adam
*****

Liczba postów: 1,072
Dołączył: 02-02-2009
Post: #71
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Zadanie Z001 "mruganie diodą" ver.3
Sterowanie diodami LED oparte o macra, Systick co 1ms pracuje jednocześnie jako licznik czasu dla funkcji opóźnienia. Dioda zielona mruga w pętli głównej a czerwona w obsłudze przerwania od SysTick-a.
Pliki rozpakują się do tego samego katalogu c:\F429\Z001 (starą wersję można usunąć).

Wiem, że zadanie jest banalne ale jeśli ma ktoś jakiś pomysł jak je rozbudować to proszę o pomysły lub inne wersje realizacji tego kodu.
Najważniejsze aby pojawiły się nowe konstrukcje do nauki i dyskusji.


Załączone pliki
.zip  z001_v3.zip (Rozmiar: 147.54 KB / Pobrań: 622)

73 Adam
08-07-2016 0:22
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
QRP73 Offline
Marek
**

Liczba postów: 90
Dołączył: 19-06-2009
Post: #72
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Pawel dzieki za opis i uwagi. Wiem ze trzeba czytac manuale tylko te 1700 srton mnie zablokowalo.
Dla mnie najlepsze do nauki sa male porcje informacji (program plus opis do niego), np pdf.

Zastanawia mnie dlaczego systick dziala skoro w kodzie nie ma aktywacji przerwan ?
Pojecie przerwania tez nie jest do konca jasne na poczatku nauki porgramowania.
Takie gotowe paczki z projetkem sa ok na pocztku nauki ale potem sam chcialbym umiec od zera zbudowac taki projekt.

ps chyba jestem tu jedynym poczatkujacym ktory ma pytania, hi.
08-07-2016 10:00
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 724
Dołączył: 30-07-2011
Post: #73
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Witaj,

Pytaj, im wiecej pytań, tym więcej odpowiedzi. Im więcej odpowiedzi, tym więcej wiedzy....
Jak pisałem dokumentacji całej nie trzeba czytać/przeglądać. Wystarczą informacje zawarte w działach dotyczących konkretnego peryferium, które chcesz skonfigurować/użyć.

Napisz jeszcze w jakim środowisku pracujesz ? EmBitz, sądząc po tym, że używasz paczki przygotowanej przez Adama.
Środowisko też trzeba troszkę poznać, bo w nim jest zawarte dużo ciekawych narzędzi.
Jak nie masz opisów, to klikaj po opcjach, popatrz co jest w menu kontekstowym (prawy klawisz myszki nad interesującym Cię elementem kodu).

SysTick jest nieodłączną częścią rdzenia. Patrzyłeś co się znajduje w funkcji
Kod:
SysTick_Config()
która jest dostarczana przez ARM w bibliotekach CMSIS ?

Jak nie wiesz gdzie się ona znajduje, więc skorzystaj z dobrodziejstw, jakie daje środowisko. Najedź kursorem myszki na tą funkcję w edytorze, klik prawym klawiszem myszki i popatrz co mamy w menu, które się otworzy....
Jedną z pozycji tego menu jest przeniesienie do miejsca, w którym ta funkcja się znajduje wraz z zawartością. Wybierz ją (celowo nie podałem która to pozycja menu jest, sam ją znajdź), nic nie popsujesz.....
Zostanie otwarta kolejna zakładka z plikiem zawierającym tą funkcję, a kursor zostanie umieszczony na początku tej funkcji, aby była widoczna w oknie.....

I co w niej się znajduje ?

Sprawdzenie, czy przekazany parametr zmieści się w liczniku SysTicka, jak nie to zwracana jest wartość sygnalizująca błąd. Jak jest ok to nastąpi konfiguracja rejestrów Systicka, konfiguracja priorytetu Systicka, oraz włączenie przerwań od SysTick-a

Jak widzisz skoro to wszystko wykonuje ta funkcja, to nie ma potrzeby robić tego dodatkowo w swoim programie......

Tu już się wyklarował temat, który należy poruszyć, a mianowicie utworzenie nowego projektu za pomocą kreatora, który jest dostępny w EmBitz. Będzie niebawem.....

73 Paweł
(Ten post był ostatnio modyfikowany: 08-07-2016 11:14 przez SQ8MVY.)
08-07-2016 11:14
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
QRP73 Offline
Marek
**

Liczba postów: 90
Dołączył: 19-06-2009
Post: #74
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Zainstalowalem EmBitz pod Win10. Srodowisko znam slabo, podoba mi sie edytor, system podpowiedzi i to ze ma import z innych srodowisk. O tym ze moze wyszukiwac funkcje w plikach nie wiedzialem, fajna opcja. Na poczatku trudno sie polapac gdzie co zostalo umieszczone. W wiekszych demach jest jakas masakryczna ilosc plikow, nie bardzo to czuje po co takie rozdrobnienie programu.
Znajomosc jezyka C bardzo ogolna, takie tam podstawy, ten program mrugania w miare czuje ale jak pojawiaja sie jakies wskazniki, rzutowania typow to mam z tym problem. Podobno nie jest to trudne ale do mnie najbardziej przemawiaja przyklady. Taki model kursu: program, opis, pytania, odpowiedzi, dyskusja, wnioski dla mnie jest optymalny. Moze byc problem jesli ktos nigdy nie mial kontaktu z C (pozdrawiam Bascom-owcow) to wtedy trzeba opiac podstawy jezyka.
08-07-2016 15:06
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5FCS Offline
Adam
*****

Liczba postów: 1,072
Dołączył: 02-02-2009
Post: #75
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Przy braku pytań oraz dyskusji na forum nie bardzo wiadomo od jakiego poziomu należałoby zaczynać taki kurs. W tej chwili to trudno nawet oszacować zainteresowanie takim kursem. Różnych kursów i książek na temat podstaw języka C jest sporo, to tylko kwestia chęci i czasu. Przy okazji ćwiczeń na prostych przykładach możemy sobie przećwiczyć podstawowe funkcje języka.

MACRA - efektywne i silne narzędzie
Macra to bardzo silne narzędzie pozwalające uporządkować i uprościć pisanie kodu programu oraz łatwo modyfikować w innych wersjach programu. W kolejnej paczce proste macro do sprawdzania stanu niebieskiego klawisza na module disco_F429. Definiujemy port, pin oraz zegar klawisza. Następnie definiujemy macro odczytujące stan portu wejściowego i maskujące bit odpowiadający numerowi pinu klawisza. Efektem działania macra jest [_button] wartość logiczna (0/1) którą wykorzystujemy w warunku przestawiania czasu przełączania diody. Port GPIOA jest domyślnie ustawiony jako wejściowy dlatego nie musimy go konfigurować, trzeba tylko włączyć mu zegar aby działał.

Po wciśnięciu niebieskiego klawisza zielona dioda mruga co 100ms. Puszczenie klawisza przywraca wolny rytm mrugania co 1000ms. Na tej samej zasadzie możemy obsługiwać w programie inne klawisze podłączone do modułu.


Załączone pliki
.zip  z001_v4.zip (Rozmiar: 148.51 KB / Pobrań: 559)

73 Adam
10-07-2016 16:50
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ5KHA Offline
Darek
***

Liczba postów: 172
Dołączył: 10-04-2011
Post: #76
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Cieszę się, że powstał ten wątek (kurs) programowania mikrokontrolerów stm32, takich opracowań nigdy nie jest za wiele. Każdy ma swoją wizję i sposób przedstawienia problemu związanego z oprogramowaniem lub częścią sprzętową. Swoją przygodę z stm32 zacząłem ponad dwa lata temu, dzięki Piotrowi SP9FKP, który namówił mnie na zakup płytki discovery z mikrokontrolerem stm32F407vgt6. Jak zwykle na początku pojawił się problem z wyborem środowiska, na początku był coocox, następnie EmBlock, a obecnie jest EmBitz. Miałem sporą przerwę z racji innych obowiązków, ale z chęcią wróciłbym do programowania na tyle na ile czas pozwoli. Teraz nadarzyła się ku temu okazja by w silniejszej grupie nauczyć się czegoś więcej. Wydaję mi się że poznawanie kolejnych peryferii, opisanie ich, a także różne sposoby konfiguracji poparte kilkoma przykładami i przećwiczenie ich na swoich płytkach byłoby moim zdaniem dobrym początkiem tego kursu. Piotr SP9FKP przebrnął przez wiele kłopotów związanych nie tylko z rodziną stm32, ale także „przerobił „ kilka środowisk programistycznych, dlatego wydaje mi się, że warto skorzystać z jego wiedzy, ponieważ wie co może nastręczać najwięcej kłopotów. Podzielam także zdanie Adama SP5FCS, że przy braku pytań i dyskusji nie wiadomo od jakiego punktu wystartować, ponieważ jednych może odstraszyć zbyt wysoki poziom, a innych zniechęcić zbyt wolne tempo.

73 Darek
11-07-2016 9:16
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6IFN Offline
Ryszard
****

Liczba postów: 456
Dołączył: 23-03-2010
Post: #77
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
(11-07-2016 9:16)SQ5KHA napisał(a):  Podzielam także zdanie Adama SP5FCS, że przy braku pytań i dyskusji nie wiadomo od jakiego punktu wystartować, ponieważ jednych może odstraszyć zbyt wysoki poziom, a innych zniechęcić zbyt wolne tempo.
I to prawda, ale jako najsłabszy w tej grupie zadałem pytanie w poście #58, dla mnie ważne, nadal jednak bez odpowiedzi, a innych informacji już przybyło. Myślę że jednak warto choćby skrótowo opisać modół od strony technicznej.
Rysio!
11-07-2016 10:58
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ5KHA Offline
Darek
***

Liczba postów: 172
Dołączył: 10-04-2011
Post: #78
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Nie wiem czy dobrze zrozumiałem, ale chodzi o to co na tej płytce się znajduje, jeśli tak to ten user manual będzie bardzo pomocny, aby zaznajomić się co na płytce jest dostępne.

.pdf  stm32f429i-disco_user_manual.pdf (Rozmiar: 925.16 KB / Pobrań: 862)
11-07-2016 11:29
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 724
Dołączył: 30-07-2011
Post: #79
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Należy mieć na uwadze, że na rynku obecnie są 2 rodzaje płytek Discovery stm32F429.

STM32F429DISCOVERY - pierwsza wersja, już praktycznie nie obecna w sprzedaży
STM32F429I-DISCO1 - druga wersja, dostępna obecnie w sprzedaży

Różnica między nimi jest niezauważalna. Obie wersje obsadzone są takimi samymi peryferiami. Różnicę dopiero zauważymy podpinając płytki do komputera przez port USB.

W nowszej wersji płytki Discovery, firmware zintegrowanego programatora ST-Link posiada dodatkową funkcjonalność w postaci wirtualnego portu szeregowego oraz "pamięci masowej"

Wirtualny port szeregowy - w Windowsie będziemy mieli dodatkowy port COM, spięty z portem szeregowym USART1 w STM32F429. Więc nie potrzeba przejściówki USB-RS232TTL.
Jeśli chcemy nieć dostęp do portu szeregowego w starszej wersji płytki Discovery, taka przejściówka będzie niezbędna.

Pamięć masowa - w systemie dostępne będzie dodatkowe urządzenie magazynujące dane (w stylu pendrive). Kopiując wsad *.bin lub *.hex z oprogramowaniem dla naszej płytki Discovery do katalogu głównego tego urządzenia, automatycznie zostanie zaprogramowany STM32F429. Nie potrzeba nam dodatkowego programu służącego do programowania procesorów STM32 (ST-Link Utility).
Funkcjonalność ta jest wykorzystana przez środowisko Mbed.org

Oczywiście, aby był możliwy dostęp do tych funkcjonalności, nasze Discovery musi być podpięte przez USB do komputera.

Co do manuala Discovery, który zamieścił Darek SQ5KHA. Warto się z nim zapoznać. Mamy tam wszystko, co jest niezbędne do poznania możliwości naszej płytki.
Na szczególną uwagę zasługuje tabela zamieszczona na stronach 19 - 25 w/w dokumentu.
Jest tam opisane, które peryferia są podpięte do jakich sygnałów (nóżek) STM32F429.
Patrząc na piny PA9 oraz PA10 (USART1) widać, że są umieszczone w kolumnie Free I/O, co mówi o tym, że dokument odnosi się do pierwszej wersji Discovery. W nowszej wersji Discovery te piny podpięte są do zintegrowanego programatora ST-Link. Z tej kolumny dowiemy się również, które piny są całkowicie wolne.

73 Paweł
(Ten post był ostatnio modyfikowany: 11-07-2016 14:42 przez SQ8MVY.)
11-07-2016 13:49
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5FCS Offline
Adam
*****

Liczba postów: 1,072
Dołączył: 02-02-2009
Post: #80
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
(11-07-2016 10:58)SP6IFN napisał(a):  I to prawda, ale jako najsłabszy w tej grupie zadałem pytanie w poście #58, dla mnie ważne, nadal jednak bez odpowiedzi, a innych informacji już przybyło.

Ryszard nie było ostatecznej decyzji na jakim module będzie ten kurs, kilka razy padła propozycja wykorzystania Disco_F429 ale akceptację wyraziło zaledwie kilku kolegów. Jak zapatrują się na to pozostali uczestnicy dalej nic nie wiadomo, za dużo demokracji.

Na początek wystarczy moduł Discovery_F429 + kabel USB (mini->duży do PC, taki jak na zdjęciu). Podpinamy moduł do kabla, kabel do PC i sprzęt do pracy gotowy. Moduł jest zasilany ze złącza USB komputera. Moduł składa się dwóch części: procesora, wyświetlacza TFT z panelem dotykowym, pomięci SDRAM oraz programatora/debugera ST-link. Wszystkie piny procesora są wyprowadzone na złącza na bokach modułu. Część wyprowadzeń procesora jest zajęta przez dodatkowe układy umieszczone na module.

Do kompletu potrzebny będzie soft, instalujemy obsługę ST-linka, środowisko np. EMBitz. Jak ktoś chce to przerabia sobie ST-linka na J-linka.

Do pierwszego zadania interesuje nas:
- dwie diody LED;
- jeden klawisz (niebieski);
- złącze do kabla USB (ST-link, zasilanie)
I tyle trzeba wiedzieć o module na początek, dalszy opis jak będziemy wykorzystywali kolejne układy z modułu.

Nowy moduł ma wgrane demo pokazujące możliwości procesora i wyświetlacza TFT. Po wgraniu nowego programu do procesora fabryczne demo zostanie bezpowrotnie skasowane. Jak ktoś zatęskni za nim to zawsze może pobrać je ze strony STM-a i przywrócić moduł do stanu fabrycznego.


Załączone pliki Miniatury
İmage

73 Adam
11-07-2016 16:45
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


Użytkownicy przeglądający ten wątek: 13 gości