Freeboard w mbed ...

Prawie wszystko co dotyczy płytki Freeboard z Mikrokontrolerem Kinetis MKL25Z
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1031
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Freeboard w mbed ...

Post autor: SunRiver »

Na potrzebę chwili w związku z potrzebą chwili.


FREEBOARD W MBED
Jako że mamy ekspansję wszelkiego rodzaju ułatwiaczy programistycznych i środowisk on-line
Warto wiedzieć że nasza płytka Freeboard spisze się pod środowiskiem i kompilatorem embed.com
Głównie dlatego że jest w duże mierze zgodna z FRDM-KL25z ale .. żeby nie było uprzedzam nie jest tak łatwo.

Głowna zgodność jaką mamy to oczywiście mikrokontroler którym jest KL25Z128xxx oraz zgodność pinowa jak też podłączenie diody RGB. Niema jednak programatora/debugera OpenSDA , ale za to jest złącze JTAG/SWD, Niema też przycisku RESET, a zamiast Touch Slidera do kanałów TSI podłączone sa 2 dodatkowe Diody LED , znajdziemy też Slot karty SD co jest bardzo przydatne. Podobnie jak wyprowadzone SPI i I2C oraz inne przydatne drobiazgi.

Obrazek

W każdym razie mamy możliwość pisania na naszą płytkę programów w środowisku popularnego internetowego środowiska wraz z kompilatorem jakim jest MBED. Jednak czeka nasz mały kłopot w kwestii programowania. Możliwości mamy 2:
1. Użycie JTAGA -- np. Segger J-Link EDU i programu Segger J-Flash Lite
2. Użycie Bootloadera
Ja się skupię na J-Linku gdyż jest bardzo wygodny w użytkowaniu i szybki. W tym też poście pokażę na szybko jak zacząć działania z naszym Freeboardem pod Mbed :)
Zatem zaczynamy … całkowicie od zera dla początkujących …
Wchodzimy na stronę :
https://developer.mbed.org/
jeśli jesteśmy zarejestrowani to się logujemy i uruchamiamy Compiler:
--- wybieramy płytkę FRDM-KL25Z


Tu tworzymy nowy pusty projekt Freeboard 1 i nowy plik main.cpp jak widać wyżej 
Na początek zanim napiszemy program zapoznajmy się z pinami i ich nazwami -- w sumie to najlepiej pobrać dokumentację płytki :
http://dl.btc.pl/kamami_wa/kinetis_freeboard.pdf gdzie znajdziemy schematy piny i opisy
http://dl.btc.pl/kamami_wa/FREEboard_connectors.pdf opis pinów który warto sobie nawet na początku wydrukować .


…:: Pierwszy program

W embed piszemy takim swego rodzaju C++ bardzo podobnym do języka Arduino co wielu pomoże się szybko odnaleźć w tym środowisku jak też języku. Tu by się odnieść do konkretnego pinu wiec dla uproszczenia i w embed piny mają łatwe do przyswojenia nazwy aliasów , a nasza płytka dodatkowo przypomina wręcz Arduino fizycznie co znacznie nam ułatwia sprawę :)

Obrazek

Możemy też kożystać ze ściągi dla FRDM-KL25Z gdyż pinowo mamy pełną zgodność, a ściąga jest do pobrania pod adresem:
http://developer.mbed.org/platforms/KL25Z/
Gdy już znamy piny ożywmy naszą płytkę w kilku podstawowych programikach wykorzystując podstawowe aplikacje i metody interakcji mikrokontrolera z użytkownikiem i vice versa
1. LED BLINK

Ten program to swoiste Hello World w świecie mikrokontrolerów gdyż zamigamy diodą :
Cały nasz program składa się z kilku linijek i wygląda następująco i powoduje miganie Czerwonej DIODY LED:

  1.  
  2. 1#include "mbed.h"
  3. 2.   
  4. 3DigitalOut myled(LED1);
  5. 4.   
  6. 5int main() {
  7. 6.      while(1) {
  8. 7.          myled = 1;
  9. 8.          wait(0.2);
  10. 9.          myled = 0;
  11. 10.         wait(0.2);
  12. 11.     }
  13. 12. }
  14.  
  15.  
Oczywiście jakbyście chcieli użyć innej diody np. swojej na płytce zewnętrznej to wystarczy ją podłączyć przez rezystor 470 om do wybranego pinu np. D2 i GND co może wyglądać np. tak


pamiętając że nasz KL25Z da sobie radę z 5mA poboru prądu ciągłego z pinu , a 20 chwilowego , nie więcej jednak niż 100mA na cały port. Tak więc łatwo uszkodzić mikrokontroler.
Dlatego też używając typowej diody LED która ma spadek 1,7V(2V max) i pobór 2mA (10mA max) łatwo policzymy że dla 5mm diody Czerwonej przy 3,3V-1,7V=1.6V przy prądzie 2 do 4mA łatwo już z prawa oma obliczyć że R = U / I = 1.6V / 2mA = 800 om, ale 470 om wygląda przyzwoicie i mieści się w granicach a jednocześnie da nam odpowiednią jasność diody do naszych zabaw.
Program jest na tyle prosty, że tłumaczenie go mija się z celem , zatem przystępujemy do kompilacji czyli klikamy na przycisk Compile i po chwili otrzymamy plik Freeboard.bin który wgrywamy do naszego mikrokontrolera przy pomocy bootloadera , lub jak zapowiedziałem programem J-Flash Lite:

W którym najpierw ustawiamy :

Device = MKL25Z128xxx4 // nasz mikrokontroler
Interface = SWD // właśnie przez Serial Wire Debuger będziemy programować nasz MCU
Speed = 1000 // szybkość programowania możemy zmienić ale i tak jest szybko 

Obrazek

I klikamy OK
W następnym oknie interesuje nas pole Data File w którym wskazujemy nasz plik bin:

Obrazek

Możemy tez wykonać kasowanie Mikrokontrolera przyciskiem Erase Chip , oraz gdy wybraliśmy plik BIN wgrać program do mikrokontrolera klikając Program Device i po chwilce zobaczymy okienko:

Obrazek

I nasz mikrokontroler jest zaprogramowany.

Hmm no tak , ale nie działa :( nic się nie dzieje … To dlatego że nasz mikrokontroler należy teraz zresetować , a my nie mamy przycisku RESET … możemy to zrobić zatem na 3 sposoby:
1. Odłączyć zasilający przewód USB i podłączyć i już miga radośnie czerwona DIODA , ale sposób jest mało elegancki i szybko zabijemy gniazdo USB
2. Jako użytkownicy J-Linka możemy użyć programu J-Link Commander wpisując w konsoli programu komendy : r - czyli reset i g – czyli go .
3. Dorobić sobie przycisk RESET

Gdy wybraliśmy opcję numer 3 mamy łatwe zadanie pin RESET jest wyprowadzony na złącze JP5 i jest na pinie 6 oznaczony na naszej ściądze od pinów jako nRES :

Obrazek

Wystarczy ten pin zewrzeć z GND i mamy RESET :) można to zrobić przewodem , ale ja proponuje użyć jakiegoś przycisku na kawałku płytki podłączonego przewodami. W ten sposób uzyskamy pełną wygodę użytkowania płytki. Ja używam sobie kaMod Touch :) ale to dlatego że zaraz mi nam się przydadzą 2 przyciski , ale mogą to być dowolne 2 przyciski gdyż jeden na reset ,a drugi odczytamy w drugim programie :
  1. 1#include "mbed.h"
  2. 2.   
  3. 3DigitalOut myled(LED_RED);
  4. 4DigitalIn button(D2);
  5. 5int main() {
  6. 6.      button.mode(PullUp);
  7. 7.      while(1) {
  8. 8.          myled = button;
  9. 9.      }
  10. 10. }
  11.  
Ten program również jest prosty i też będzie stanowił o stanie naszej czerwonej diody LED , tym razem jednak Dioda się zaświeci jak naciśniemy przycisk :) tu małe wyjaśnienie kodu :
w wierszu 4 widzimy iż pin D2 nazwany dla „niepoznaki” button ustawiamy jako WEJŚCIE gdyż właśnie będziemy na nim odczytywać STAN . Aby jednak mieć pewność , ze jest tak jak powinno czyli przyciśnięcie przycisku spowoduje podłączenie do D2 stanu LOW (GND) w linii 6stej włączamy wewnętrzne rezystory podciągające PullUp (wymuszające stan HI) co spowoduje że gdy naciśniemy przycisk zmieni się stan pinu D2 z HI na LOW i tym samym zaświeci nasza dioda 

Program 3ci z tych najprostszych to odczyt wartości analogowych . Tak tu posłużymy się przetwornikiem ADC i potencjometrem :)

Środkowy pin potencjometra (suwak) podpinamy do A0 , a pozostałe 2 jeden do GND zaś drugi do 3V3

Nasz program również nie jest skomplikowany i prezentuje się następująco:
  1. #include "mbed.h"
  2. AnalogIn potencjometr(A0);
  3. PwmOut led(LED1);
  4.  
  5. int main() {
  6.     led.period(0.001);
  7.     while(1) {
  8.         led=(float)(potencjometr);
  9.         wait(0.01    
  10.   }
  11. }
  12.  

Nasz program odczytuje wartość pojawiająca się na suwaku potencjometru obrotowego na pinie A0 (AnalogIn 0) następnie wartość ta jest podstawiana na wyjście PWM i steruje jasnością naszej Diody LED  sami zobaczcie
I to by było na tyle jak szybko i prosto zacząć z Freeboard w MBED
Miłej Zabawy
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
tomasz_ola
Użytkownik
Posty: 43
Rejestracja: 04 sty 2021, 22:39

Re: Freeboard w mbed ...

Post autor: tomasz_ola »

WOW dzięki :)
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1031
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: Freeboard w mbed ...

Post autor: SunRiver »

Prosze bardzo .. jak coś śmiało pytaj na forum:)
Awatar użytkownika
tomasz_ola
Użytkownik
Posty: 43
Rejestracja: 04 sty 2021, 22:39

Re: Freeboard w mbed ...

Post autor: tomasz_ola »

Jflash odpaliłem i działa ale z kompilowaniem w Mbed to masakra (noga z angielskiego - nigdy się go nie uczyłem )
coś gdzieś źle wpisałem albo klikłem i błąd kompilacji brak pliku mbed.h
jutro próbuję dalej po pracy :(

Dodano po 12 minutach 50 sekundach:
A z paczki gotowych plików to blink działa :)
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1031
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: Freeboard w mbed ...

Post autor: SunRiver »

dlatego je dorzuciłem , bo na tych prostych przykładach widzisz jak działa i jak wygląda kod , który za to odpowiada
na pewno sobie poradzisz , a m pomożemy
Awatar użytkownika
tomasz_ola
Użytkownik
Posty: 43
Rejestracja: 04 sty 2021, 22:39

Re: Freeboard w mbed ...

Post autor: tomasz_ola »

Z brakującym plikiem mbed.h sobie poradziłem i udało się skompilować i hula :D
teraz kolejne ćwiczenia i zobaczymy
Awatar użytkownika
SunRiver
Użytkownik
Posty: 1031
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Festung Oppeln
Kontakt:

Re: Freeboard w mbed ...

Post autor: SunRiver »

Nio to teraz trzeba siedzieć i pisać :) i Pisać i pisać
Awatar użytkownika
tomasz_ola
Użytkownik
Posty: 43
Rejestracja: 04 sty 2021, 22:39

Re: Freeboard w mbed ...

Post autor: tomasz_ola »

No i sobie pobłyskałem diodą i koniec chiński klon j-linka padł (albo firma Segger go zablokowała) i muszę czekać miesiąc aż przyjdzie kolejny :twisted:
Awatar użytkownika
l3n1n
Administrator
Posty: 355
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: Freeboard w mbed ...

Post autor: l3n1n »

J-linka to jednak warto kupić oryginalnego w wersji EDU. Trochę ponad 200zł ale to porządna rzecz i warta swojej ceny.
Awatar użytkownika
squeez
GRafik
Posty: 154
Rejestracja: 16 paź 2017, 23:52

Re: Freeboard w mbed ...

Post autor: squeez »

Można też kupić jakiegoś devboarda z j-linkiem na pokładzie i używać jak programatora w nucleo.
Ewentualnie st-linka przeprogramować na j-linka (nie robiłem tego ale chyba jest taka opcja, potem można powrócić do oryginalnego softu w st-linku).
ODPOWIEDZ

Wróć do „Freeboard”