Przykładowe projekty na FREEboard w środowisku mbed
W artykule przedstawiamy trzy proste przykłady aplikacji mikrokontrolera z rodziny Freescale Kinetis (rdzeń Cortex-M0+) z produkowanego w Polsce zestawu FREEboard. Wszystkie przedstawione aplikacje powstały w dostępnym bezpłatnie, sieciowym środowisku programistycznym firmy ARM – mbed. Działanie przykładów oraz obsługę programatora przedstawiamy na filmie.
Zestaw FREEboard wyposażono w taki sam mikrokontroler jak zestaw Freescale FRDM-KL25Z, w taki sam sposób dołączono do niego podstawowe peryferia oraz wyprowadzono linie GPIO, ale z przyczyn formalnych nie ma on wbudowanego pokładowego programatora-debuggera OpenSDA, który – wbrew nazwie – nie jest „open”. Co prawda mikrokontroler w zestawie FREEboard jest domyślnie dostarczany z bootloaderem zapisanym w pamięci, ale nie jest on zgodny ze standardem obsługiwanym przez środowisko mbed. Jedno z możliwych rozwiązań tego problemu przedstawiamy w artykule.
Zaczynamy
Wchodzimy na stronę https://developer.mbed.org/ i jeśli jesteśmy zarejestrowani to się logujemy i uruchamiamy Compiler, jako platformę docelową wybieramy płytkę FRDM-KL25Z. Jeżeli nie rejestrowaliśmy się wcześniej, należy to zrobić – nie wiąże się to z żadnymi kosztami!
Tworzymy nowy pusty projekt Freeboard 1 i dodajemy nowy plik main.cpp. Zanim pójdziemy dalej, zapoznajmy się z pinami i ich nazwami – najlepiej w tym celu pobrać dokumentację zestawu FREEboard:
- http://dl.btc.pl/kamami_wa/kinetis_freeboard.pdf – gdzie znajdziemy schematy piny i opisy,
- http://dl.btc.pl/kamami_wa/FREEboard_connectors.pdf – gdzie znajduje się opis pinów, który warto sobie wydrukować.
Zaczynamy
W środowisku mbed piszemy w narzeczu C++, bardzo podobnym do języka Arduino, co wielu programistom pomoże się szybko odnaleźć w tym środowisku jak też języku. Żeby podczas pisania programu odnieść do konkretnego pinu mikrokontrolera, mbed ma zdefiniowane łatwe w przyswojeniu aliasy ich nazw zgodne z Arduino. Dzięki temu że FREEboard przypomina Arduino także fizycznie, programowanie mamy znacznie ułatwione. Podczas pisania programu możemy korzystać ze ściągi dla FRDM-KL25Z gdyż pinowo mamy pełną zgodność obydwu płytek.
Przykład 1: LED blink
Ten program to swoiste „Hello World” w świecie mikrokontrolerów – zamigamy diodą! Cały nasz program składa się z kilku linijek i wygląda jak na listingu poniżej. Powoduje on miganie czerwonej diody LED, zamontowanej na płytce FREEboard.
1. #include "mbed.h" 2. 3. DigitalOut myled(LED1); 4. 5. int main() { 6. while(1) { 7. myled = 1; 8. wait(0.2); 9. myled = 0; 10. wait(0.2); 11. } 12. }
Rys. 1. Sposób dołączenia zewnętrznej LED (opcja)
Jeżeli chcecie użyć diody zewnętrznej, wystarczy ją podłączyć przez rezystor 470….820W do wybranego pinu np. D2 oraz masy zasilania GND, co może wyglądać np. tak jak na rysunku 3. Należy pamiętać, że mikrokontroler KL25Z da sobie radę z 5 mA poboru prądu ciągłego z pinu, a 20 mA poboru chwilowego, producent nie dopuszcza więcej niż 100 mA na cały port! Dlatego też używając typowej diody LED która ma spadek napięcia w kierunku przewodzenia 1,7 V (2V max) i pobór 4 mA (10 mA max) łatwo policzymy:
- spadek napięcia na rezystorze ograniczającym prąd wynosi 3,3 V-1,7 V=1,6 V,
- przy zakładanym prądzie diody 4 mA, z prawa Ohma R = U/I = 1,6 V/4 mA = 400 W.
Przyjmiemy typową wartość z szeregu – 470 W.
Program jest na tyle prosty, że tłumaczenie jego działania nie jest potrzebne. Przystępujemy zatem do kompilacji, klikając przycisk Compile i po chwili otrzymamy plik Freeboard.bin, który zapisujemy w pamięci mikrokontrolera za pomocą programu J-Flash Lite (lub za pomocą bootloadera).
Rys. 2. Okno konfiguracji programu J-Flash Lite