Zestaw startowy z mikrokontrolerami Renesas Synergy Glyn EVBSYNS3 – prosta aplikacja na Cortex-M dla początkujących
Praktyczne testy
Działanie modułu przetestujemy przez cykliczne gaszenie i zapalanie żółtej diody LED umieszczonej na module. Oczywiście jest to bardzo prosty test, ale pozwala na sprawdzenie działania mikrokontrolera: jego zasilania i taktowania, oraz sprawdzenie działania programatora J-Link. Po połączeniu gniazda USB programatora/debuggera J-Link z portem USB komputera PC powinny się automatycznie zainstalować sterowniki potrzebne do współpracy J-Link z programem e2studio.
Z dokumentacji modułu wynika, że dioda żółta LED1 jest połączona z linią portu P106, a czerwona LED2 z linia portu P107. Trójkolorowa dioda LED3 jest sterowana liniami portów P301, P301 i P303 – rysunek 7.
Najpierw skonfigurujemy linie portu P106 jako wyjściową. Można to zrobić bezpośrednio w programie – listing 1.
List. 1. Konfiguracja linii P106 jako wyjściowej
Set pins to specified levels: ioport_level_t level; /* Konfiguracja pinów */ g_ioport.p_api->init(g_ioport.p_cfg); /* Ustawienie linii portu 106 jako wyjściowego */ g_ioport.p_api->pinDirectionSet(IOPORT_PORT_01_PIN_06, IOPORT_DIRECTION_OUTPUT);
Jednak łatwiej jest to zrobić za pomocą konfiguratora Synergy Configurator w zakładce Pins – rysunek 8. Zamiany zostaną przekonwertowane na kod źródłowy po kliknięciu na przycisk Generate Project Content umieszczony w prawym górnym rogu okna z rysunku 8.
Konfiguracja za pomocą konfiguratora jest o wiele łatwiejsza i szybsza, kiedy musimy ustawić wiele linii portu, w tym do pracy jako linie modułów peryferyjnych. Wyjściowa linia P106 jest połączona z katodą żółtej diody LED. Anoda tej diody poprzez rezystor R30 ograniczający prąd jest połączona do plusa napięcia +3,3V (rysunek 7). Kiedy na linii jest poziom niski, to przez diodę płynie prąd i zaczyna świecić. Cykliczne zapalanie i gaszenie diody będzie polegało na wymuszaniu naprzemiennie poziomu niskiego i wysokiego na linii P106. Do wystawania stanu wykorzystamy funkcję biblioteczna warstwy HAL g_ioport.p_api->pinWrite (port, level);.
Programowe opóźnienia będzie odliczać funkcja BSP R_BSP_SoftwareDelay.
Fragment procedury cyklicznie gaszącej i zapalającej diodę został pokazany na listingu 2.
Wsparcie BSP wygenerowane przez e2studio w momencie tworzenia szkieletu projektu umożliwia szybkie wyliczenie niezbędnych wartości na podstawie częstotliwości taktowania rdzenia potrzebnych wartości do programowego odliczania opóźnień.
List. 2. Cykliczne zapalanie i gaszenie diody LED
/* Definicje wartości niezbędnych do odliczania opóźnienia programowego */ const bsp_delay_units_t bsp_delay_units = BSP_DELAY_UNITS_MILLISECONDS; /* ustawienie częstotliwości migania diody */ const uint32_t freq_in_hz = 2; /* wyliczenie wartości opóźnienia*/ const uint32_t delay = bsp_delay_units / freq_in_hz; /*zmienna stanu linii sterującej LED*/ ioport_level_t level = IOPORT_LEVEL_HIGH; while(1) { if (IOPORT_LEVEL_LOW == level) { level = IOPORT_LEVEL_HIGH; } else { level = IOPORT_LEVEL_LOW; } g_ioport.p_api->pinWrite (lOPORT_PORT_01_PIN_06, level);//wystawienie stanu na linię g_ioport.p_api->pinRead (lOPORT_PORT_01_PIN_06, &level);//odczytanie stanu linii R_BSP_SoftwareDelay (delay, bsp_delay_units);//opóźnienie 1/2sekundy }
Po wystawieniu poziomu na linii, jest następnie odczytywany jej stan i zapisywany do zmiennej level. Na podstawie tych wartości program zmienia stan na przeciwny wpisywany do rejestrów portu i linia zmienia poziom z niskiego na wysoki i odwrotnie.
Fragment programu pokazany na listingu 2 należy umieścić w nieskończonej pętli pliku hal_entry.c i skompilować w opcji debug. Kompilacja nie powinna generować żadnych błędów i ostrzeżeń. Uruchomienie debugowanie projektu wykonujemy z paska narzędziowego Debug, potem wybieramy z listy opcję Debug Configurations… , Renesas GDB Hardware Debugging i na końcu klikamy na Debug – rysunek 9.
Uruchomienie programu wykonuje się po naciśnięciu na klawisz F8. Można też w trakcie debugowania zatrzymywać program na pułapkach, wykonywać pracę krokową, podglądać wartości zmiennych (Expression) itp.
Podsumowanie
Moduł Glyn EVBSYNS3 to ciekawa propozycja dla tych, którzy chcieliby rozpocząć pracę z nowymi mikrokontrolerami Renesas Synergy. Jak pokazałem EVBSYNS3 bez problemu współpracuje ze środowiskiem e2studio i bezpłatnym kompilatorem ARM GCC. Zastosowany mikrokontroler, chociaż należy do niższej serii jest bogato wyposażony w peryferia i ma wbudowany wydajny rdzeń ARM Cortex-M4. Zabudowanie złącz PMOD, gniazda micro USB, a przede wszystkim programatora/debuggera J-Link umożliwi szybkie testowanie własnych aplikacji. Możliwość podłączania płytek rozszerzeń Arduino na pewno zwiększy potencjalne możliwości szybkiego powiększenia sprzętowych możliwości budowanej aplikacji.