Programowanie ARM, nauka, środowiska programistyczne IDE
Koleżankom i Kolegom Radioamatorom, Krótkofalowcom,
Konstruktorom i Waszym Rodzinom –
w tych trudnych czasach –
po dotkliwej awarii naszego forum
Pogodnego czasu po Bożym Narodzeniu,
Dosiego Nowego Roku
oraz Radosnych Trzech Króli
Życzy Zespół Home Made
Ankieta: Jaki system operacyjnym preferujesz Nie posiadasz uprawnień, aby oddać głos w tej ankiecie.
07-07-2016, 21:38 (Ten post był ostatnio modyfikowany: 07-07-2016, 21:38 przez SP6VGX.)
Marek napisz moze jak bys widizal taki kurs z twojej perspektywy. Bo jak widac poszlo to z grubej rury i teraz tak czesc osob sie bedzie nudzic, a czesc nie bedzie wiedziec jak to dziala... Ja mam tam jakas koncepcje ale tez nie wiem czy bedzie dobra.
Generalnie na poczatku myslalem wlasnie aby opisac po kolei peryferia jak je sie konfiguruje + przyklad z opisem. W sumie zaczac od gpio po coraz trudniejesze do ustawienia.
Owszem co do zegarow wystarcay je raz skonfigurowac, ale np. wybierajac jakis timer musisz wiedziec z jakiej szyny i jaka czestotliwoscia on jest taktowany aby np. dobrac preskaler itp. i uzyskac np. wyzwalanie przerwania z okreslona czestotliwoscia. To samo tyczy sie szybkosci pracy innych blokow np. i2c itd.
Wszelkie uwagi innych poczatkujacych tez beda cenne.
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.
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:14 (Ten post był ostatnio modyfikowany: 08-07-2016, 10:14 przez SQ8MVY.)
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.....
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.
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.
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.
(11-07-2016, 8: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!
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.
11-07-2016, 12:49 (Ten post był ostatnio modyfikowany: 11-07-2016, 13:42 przez SQ8MVY.)
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.