LinkedIn YouTube Facebook
Szukaj

Wstecz
IoT

Renesas Synergy – pierwszy projekt w e2studio

  • Components – wyświetla komponenty biblioteki SSP i te bieżąca, które są dołączone do projektu – rysunek 11. Komponenty mogą być dołączane jeżeli to możliwe przez zakładkę Threads.

 

 

Rys. 11. Zakładka Components

 

Wszystkie konfiguracje generowane przez konfiguratora są umieszczane w plikach źródłowych projektu po kliknięciu na Generate Project Content – wygląd przycisku pokazano poniżej.

Pliki są umieszczane w folderach z prefiksem nazwy synergy: synergy_gen, synergy i synergy_cfg. Nie powinno się plików konfiguracyjnych modyfikować ręcznie. Jeżeli trzeba coś zmienić to należy to robić za pomocą narzędzia Synergy Configurator. W przeciwnym przypadku ręcznie naniesione zmiany zostaną nadpisane przez kolejne uruchomienie konfiguratora.

W katalogu synergy_cfg umieszczono pliki konfigurujące komponenty projektu Synergy. Te konfiguracje bazują na ustawieniach zapisanych w perspektywie Synergy Configuration.

Katalog synergy zawiera pliki źródłowe wydzielone z biblioteki SSP przeznaczone dla komponentów aktualnie używanych w projekcie. Konfiguracja tych komponentów jest umieszczona również w katalogu synergy_cfg.

Katalog synergy_gen zawiera konfiguracje wcieleń komponentów, które użytkownik dodał do projektu.

Jak widać na rysunku 12 tylko plik źródłowy hal_entry.c jest przeznaczony do edytowania przez użytkownika. Nawet plik main.c jest generowany przez konfigurator i nie powinien być edytowany przez użytkownika.

 

Rys. 12. Struktura plików projektu

 

Wróćmy do naszego projektu „migacza LED”. Konfigurator projektu wygenerował dwa pliki źródłowe: main.c i hal_entry.c przeznaczone do modyfikacji przez użytkownika umieszczone w katalogu src/synergy_gen. Główną funkcję main() pokazano na listingu 1.

 

List. 1. Funkcja main()

int main(void)
{
 hal_entry ();
 return 0;
}

Nie robi ona niczego poza wywołaniem funkcji hal_entry() umieszczonej w pliku hal_entry.clisting 2.

 

List. 2. Funkcja migania diodami LED

/*******************************************************************************************************************//**
 * @brief Blinky example application
 *
 * Blinks all leds at a rate of 1 second using the software delay function provided by the BSP.
 * Only references two other modules including the BSP, IOPORT.
 *
 **********************************************************************************************************************/
void hal_entry(void) {

	/* Define the units to be used with the software delay function */
	const bsp_delay_units_t bsp_delay_units = BSP_DELAY_UNITS_MILLISECONDS;
	/* Set the blink frequency (must be <= bsp_delay_units */
 const uint32_t freq_in_hz = 2;
	/* Calculate the delay in terms of bsp_delay_units */
 const uint32_t delay = bsp_delay_units/freq_in_hz;
	/* LED type structure */
 bsp_leds_t leds;
	/* LED state variable */
 ioport_level_t level = IOPORT_LEVEL_HIGH;

 /* Get LED information for this board */
 R_BSP_LedsGet(&leds);

 /* If this board has no LEDs then trap here */
 if (0 == leds.led_count)
 {
  while(1); // There are no LEDs on this board
 }

 while(1)
 {
  /* Determine the next state of the LEDs */
  if(IOPORT_LEVEL_LOW == level)
  {
   level = IOPORT_LEVEL_HIGH;
  }
  else
  {
   level = IOPORT_LEVEL_LOW;
  }

  /* Update all board LEDs */
  for(uint32_t i = 0; i < leds.led_count; i++)
  {
   g_ioport.p_api->pinWrite(leds.p_leds[i], level);
  }

  /* Delay */
  R_BSP_SoftwareDelay(delay, bsp_delay_units);
 }
}

Funkcja hal_entry.c jest przeznaczona do edycji i jest stosunkowo prosta. Odczytuje stan linii portów sterujących trzema diodami LED umieszczonymi na płytce SK-S7G2, zmienia stan tych linii na przeciwny i odlicza opóźnienie ok. 1s.

Funkcja biblioteczna R_BSP_SoftwareDelay odlicza opóźnienie programowo – nie wykorzystuje do tego celu liczników sprzętowych ani układu przerwań. Potem pokażemy jak skonfigurować wewnętrzny licznik tak by przepełniał się co określony interwał i zgłaszał przerwanie. To przerwanie będzie wykorzystywane do odliczania opóźnień.

Program demonstracyjny jest prosty, ale jak wiemy w projekcie zostały umieszczone pliki konfiguracyjne wygenerowane przez konfiguratora Synergy. Cała konfiguracja nie jest jawnie wywoływana w programie głównym main(). Żeby zobaczyć jak jest wykonywana konfiguracja wykorzystamy możliwość sprzętowego debugowania programu. Projekt musi być ustawiany w trybie Debug. Robimy to klikając obok ikonki młotka w pasku narzędzi – rysunek 13.

 

Rys. 13. ustawienie projektu w tryb Debug

 

Następnie kompilujemy projekt. Po bezbłędnej kompilacji, a taka powinna być dla projektu utworzonego z szablonu możemy przejść do debugowania. Łączymy moduł kablem USB ze złączem microUSB dołączonym do J19 DEBUG_USB zestawu SK-S7G2 (fotografia 14) z portem USB komputera PC.

 

Fot. 14. Położenie złącza DEBUG_USB w zestawie SK-S7G2

 

Absolwent Wydziału Elektroniki Politechniki Wrocławskiej, współpracownik miesięcznika Elektronika Praktyczna, autor książek o mikrokontrolerach Microchip i wyświetlaczach graficznych, wydanych nakładem Wydawnictwa BTC. Zawodowo zajmuje się projektowaniem zaawansowanych systemów mikroprocesorowych.