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
SQ8MVY Offline
Paweł
****

Liczba postów: 546
Dołączył: 30-07-2011
Post: #101
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
(17-07-2016 23:44)SP6LUN napisał(a):  Praktycznie mam w tej chwili "uruchomione"
stm32F429 disc1 pod EmBitz i mbed
stm32mini pod EmBitz - tu procesor tylko stm32f103 ale 2x większy LCD

Więc zabawa się zaczęła....

73 Paweł
18-07-2016 10:12
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ5KHA Offline
Darek
***

Liczba postów: 172
Dołączył: 10-04-2011
Post: #102
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Czy sprawdzał ktoś część odbiorczą z Z002?

Dokładnie chodzi o to, że znak znajduje się w buforze RX, ale nie jest ustawiana flaga, że pojawiła się wartość w rejestrze USART1->DR.
(Ten post był ostatnio modyfikowany: 18-07-2016 14:28 przez SQ5KHA.)
18-07-2016 14:28
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 546
Dołączył: 30-07-2011
Post: #103
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Cześć,

Tak działa dobrze. Jak masz w programatorze firmware J-Linka to zmień do tego przykładu na ST-Linka.

J-Link ma strasznego babola, objawiającego się tym, że nie przesyła prawidłowych danych z komputera do STM-a

Cytat:znak znajduje się w buforze RX, ale nie jest ustawiana flaga, że pojawiła się wartość w rejestrze USART1->DR.

A sprawdź też pozostałe flagi dotyczące błędów np. błąd ramki FE. Jak się ustawiają, to prawdopodobnie RXNE się nie ustawi, bo wartość w rejestrze odbiorczym jest błędna.

Przy okazji zauważyłem jeszcze jedną rzecz, która prawdopodobnie mi się przestawiła jak porządkowałem kolejność ustawiania rejestrów USART1, a tyczy się przykładu w archiwum Z002v1.

W pliku usart1.c w funkcji usart1_Init jest obecnie:
Kod:
//Ustawiamy Pull-Up-a dla nóżki RX-a, aby nie wisiał w powietrzu, jak nie będzie do niczego podpięta
//Nóżka PA9 - TX jako wyjściowa domyślie jest PushPull, więc nie ma potrzeby jej konfigurować
    GPIOA->PUPDR |= GPIO_PUPDR_PUPDR10_1;

a powinno być:
Kod:
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR10_0;

Przez przypadek zamiast Pull-Up-a włączyłem Pull-Down-a. Pomimo takiej drobnostki przykład działa bezbłędnie.

73 Paweł
(Ten post był ostatnio modyfikowany: 18-07-2016 15:41 przez SQ8MVY.)
18-07-2016 15:17
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ5KHA Offline
Darek
***

Liczba postów: 172
Dołączył: 10-04-2011
Post: #104
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Dzięki za odpowiedź, jeszcze popatrzę na to uważniej, wartość w rejestrze USART->DR jest taka sama jak wysłam z PC.
18-07-2016 17:13
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 546
Dołączył: 30-07-2011
Post: #105
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Tu jest jeszcze jednen problem, z odczytem wartości rejestrów USART w debuggerze.

Wspomniany bit RXNE (RX Not Empty) jest kasowany sprzętowo (programowo też można go skasować poprzez wpisanie 0 do tego rejestru) poprzez odczyt danej z rejestru DR. Więc jak debugger podaje Ci prawidłową wartość rejestru DR, to ta wartość musiała być fizycznie odczytana przez debugger. Jeśli tak, to i flaga RXNE automatycznie zostaje niezauważalnie skasowana.

Trzeba być bardzo uważnym, aby zaobserwować zmianę flagi RXNE, bo widać ją tylko przez 1 odczyt rejestrów USART-a.

Zawartość rejestru DR przez odczyt nie jest kasowana, więc widnieje cały czas w podglądzie rejestrów USART-a. Dopiero jak nadejdzie portem szeregowym nowa dana, to zostaje ona przepisana z rejestru szeregowego (niewidocznego) do rejestru DR, zastępując poptrzednią wartość...

Nadal nie podałeś nic na temat tego, czy przykład w normalnym trybie (bez debugowania) Ci działa prawidłowo, jakie firmware masz obecnie w zintegrowanym programatorze, oraz jaką wersję płytki Discovery posiadasz. Są to kluczowe informacje, bez których można tylko gdybać....

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

Liczba postów: 172
Dołączył: 10-04-2011
Post: #106
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Ok, dzięki za pomoc, pomęczę się jeszcze trochę sam, jak nie będzie wyników to będziemy się martwić, chodzi o to że program nie wchodzi w warunek (nie pamiętam z pamięci) funkcji usart1_getc() i return zwraca cały czas wartość zero, ale póki co się nie poddaję Smile.
(Ten post był ostatnio modyfikowany: 18-07-2016 20:09 przez SQ5KHA.)
18-07-2016 20:09
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SQ8MVY Offline
Paweł
****

Liczba postów: 546
Dołączył: 30-07-2011
Post: #107
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Ok, jestem do dyspozycji ..Smile

A tak z ciekawości, które archiwum pobrałeś ? Z002.zip, czy to poprawione Z002v1.zip..

73 Paweł
18-07-2016 20:25
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5FCS Offline
Adam
*****

Liczba postów: 1,067
Dołączył: 02-02-2009
Post: #108
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
(06-07-2016 12:07)SP6IFN napisał(a):  A mnie dodatkowo interesuje też co jest na tej płytce ...

Krótki opis modułu STM32F429-DISCO z Elektroniki Praktycznej w załączniku.


Załączone pliki
.pdf  EP_DiscoveryF429.pdf (Rozmiar: 1.47 MB / Pobrań: 178)

73 Adam
20-07-2016 16:17
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP6IFN Offline
Rysio!
****

Liczba postów: 378
Dołączył: 23-03-2010
Post: #109
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Dziękuję za załącznik jw.
Nikt o nic nie pyta, Nikt się nie chwali, to ja sobie pozwolę napisać. Zadanie Z002 zostało przerobione, temat zrozumiałem, program jest wgrany do płytki uruchomieniowej i prawidłowo współpracuje z terminalem PUTTY. Nie obyło się bez problemów, ale dzięki Kolegom Piotrowi i Pawłowi, wszystkie problemy zostały rozwiązane. Komunikujemy się przy wykorzystaniu komunikatora qTox, warto go zainstalować, gdyż bezpośredni kontakt w sprawie pomocy jest nieoceniony.
Rysio!
20-07-2016 22:32
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
SP5FCS Offline
Adam
*****

Liczba postów: 1,067
Dołączył: 02-02-2009
Post: #110
RE: Programowanie ARM, nauka, środowiska programistyczne IDE
Podstawowym celem zadania nr. 1 było nauczenie się podstaw konfiguracji pinów portów GPIO. Poznaliśmy kod do ustawienia pinów jako wyścia do sterowania LED-ów oraz jako wejście do odczytu stanu klawisza BUTTON.

Zadanie nr.3 obsługa encodera

Kolejnym etapem poznawania konfiguracji pinów będzie poznanie sposobu odczytu stanu encodera. Piny do których podłączony jest nasz enkoder (PG2, PG3) są domyślnie ustawione w tryb INPUT, należy dodatkowo włączyć rezystory podciągające do plusa zasilania (PUPD_UP). Aby obsługa ekcodera była szybka, prosta i abyśmy nie gubili impulsów zrobimy to z wykorzystaniem systemu przerwań. Każdy pin może generować zewnętrzne przerwania sprzętowe EXTIx, np. pin encodera GPIO_G2 będzie generował przerwanie EXTI2. Rozpoznanie kierunku obrotu encodera jest zrobione w kodzie obsługi przerwania. Zmienna [ int8_t encoder_counter ] zawiera ilość odczytanych impulsów, wartość dodatnia to obrót w prawo, wartość ujemna obrót w lewo.
Na podstawie obrotu enkodera jest modyfikowany okresu przełączania zielonej diody w przedziale 20...2000ms. Obracając encoder w lewo zielona dioda mruga coraz szybciej a w prawo coraz wolniej. Jeśli mamy odwrotnie należy zamienić wejścia A, B encodera. Wciśnięcie niebieskiego klawisza przywraca okres diody do wartości początkowej 500ms.

W zadaniu mamy wydzielone pliki z funkcjami do konfiguracji pinów ( f4_cmsis_gpio.h, f4_cmsis_gpio.c ), trzy funkcje do ustawiania pojedynczy pinów oraz trzy do jednoczesnej konfiguracji wielu pinów na tym samym porcie. Takie podejście jest moim zdaniem najbardziej uniwersalne.

W załączniku paczka z plikami do zadania nr. 3
Na zdjęciu podłączenie encodera do modułu DiskoveryF429 (GND-czarny, PG2-żółty, PG3-zielony). Bezpośrednio do wejść encodera a masą przylutowane są dwa kondensatory ceramiczne po 10nF do tłumienia drgań styków.


Załączone pliki Miniatury
İmage

.zip  z003.zip (Rozmiar: 158.19 KB / Pobrań: 121)

73 Adam
23-07-2016 17:52
Znajdź wszystkie posty użytkownika Odpowiedz cytując ten post
Odpowiedz 


Skocz do:


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