Renesas Synergy – pierwszy projekt w e2studio
Ustawienia taktowania są zapisane w pliku bsp_clock_cfg.h – listing 6.
List. 6. Plik nagłówkowy bsp_clock_cfg.h
/* generated configuration header file - do not edit */ #ifndef BSP_CLOCK_CFG_H_ #define BSP_CLOCK_CFG_H_ #define BSP_CFG_XTAL_HZ (24000000) /* XTAL 24000000Hz */ #define BSP_CFG_PLL_SOURCE (CGC_CLOCK_MAIN_OSC) /* PLL Src: XTAL */ #define BSP_CFG_HOCO_FREQUENCY (0) /* HOCO 16MHz */ #define BSP_CFG_PLL_DIV (CGC_PLL_DIV_2) /* PLL Div /2 */ #define BSP_CFG_PLL_MUL (20.0) /* PLL Mul x20.0 */ #define BSP_CFG_CLOCK_SOURCE (CGC_CLOCK_PLL) /* Clock Src: PLL */ #define BSP_CFG_ICK_DIV (CGC_SYS_CLOCK_DIV_1) /* ICLK Div /1 */ #define BSP_CFG_PCKA_DIV (CGC_SYS_CLOCK_DIV_2) /* PCLKA Div /2 */ #define BSP_CFG_PCKB_DIV (CGC_SYS_CLOCK_DIV_4) /* PCLKB Div /4 */ #define BSP_CFG_PCKC_DIV (CGC_SYS_CLOCK_DIV_4) /* PCLKC Div /4 */ #define BSP_CFG_PCKD_DIV (CGC_SYS_CLOCK_DIV_2) /* PCLKD Div /2 */ #define BSP_CFG_SDCLK_OUTPUT (1) /* SDCLKout On */ #define BSP_CFG_BCK_DIV (CGC_SYS_CLOCK_DIV_2) /* BCLK Div /2 */ #define BSP_CFG_BCLK_OUTPUT (2) /* BCK/2 */ #define BSP_CFG_UCK_DIV (CGC_USB_CLOCK_DIV_5) /* UCLK Div /5 */ #define BSP_CFG_FCK_DIV (CGC_SYS_CLOCK_DIV_4) /* FCLK Div /4 */ #endif /* BSP_CLOCK_CFG_H_ */
Istnieje też możliwość debugowania konfiguracji projektu. Zamiast Debug As klikamy na Debug Configurations i w nim na zakładkę Debug – rysunek 18.
Rys. 18. Okno konfiguracji debugowania
Po kliknięciu na przycisk Debug otwiera się okno z plikiem startup_S7G2.c.
Na koniec pokażę jak dodać nowy komponent do konfiguracji projektu. Będzie to sprzętowy timer GPT odliczający opóźnienia. Ma on zastąpić możliwość programowego odliczania opóźnień w naszym projekcie. Jak wiemy dodawanie komponentów może by wykonywane w zakładce Threads (rysunek 19).

Rys. 19. Dodanie drivera GPT
Po dodaniu drivera w modułach projektu pojawia się g_timer Timer Driver on r_gpt (rysunek 20), który trzeba skonfigurować w zakładce Properties – rysunek 21.

Rys. 20. Po dodaniu drivera w modułach żywanych w projekcie pojawia się g_timer Timer Driver on r_gpt

Rys. 21. Konfiguracja drivera GPT
Najpierw konfigurujemy przerwania od GPT0 zgłaszane przy przepełnieniu licznika – rysunek 22. Potem we właściwościach licznika (zakładka Threads) wpisujemy:
- Period value=1,
- period unit = seconds i
- Callback = user_gpt_callback.
Tak skonfigurowany timer przepełnia się i zgłasza przerwanie co 1 s.

Rys. 22. Konfigurowanie przerwań od drivera GPT0
Teraz na podstawie nowej konfiguracji Synergy Configurator wygeneruje nowe pliki konfiguracyjne po kliknięciu na Generate Project Content. W pliku hal_data.h konfigurator dopisał definicje pokazane na listingu 7.
List. 7. Zmodyfikowany fragment pliku hal_data.h
extern const timer_instance_t g_timer; #if TIMER_ON_GPT_CALLBACK_USED_g_timer void user_gpt_callback(timer_callback_args_t * p_args); #endif
W pliku hal_data.c konfigurator dopisał definicje konfiguracji licznika – listing 8.
List. 8. zmodyfikowany fragment pliku hal_data.c
#pragma weak user_gpt_callback user_gpt_callback_internal
static timer_ctrl_t g_timer_ctrl;
static const timer_cfg_t g_timer_cfg =
{.mode = TIMER_MODE_PERIODIC,.period = 1,.unit = TIMER_UNIT_PERIOD_SEC,.duty_cycle = 50,.duty_cycle_unit =
TIMER_PWM_UNIT_RAW_COUNTS,
.channel = 0,.autostart = true,.p_callback = user_gpt_callback,.p_context = &g_timer,.p_extend = &g_timer_extend };
/* Instance structure to use this module. */
const timer_instance_t g_timer =
{.p_ctrl = &g_timer_ctrl,.p_cfg = &g_timer_cfg,.p_api = &g_timer_on_gpt };
#if TIMER_ON_GPT_CALLBACK_USED_g_timer
/*******************************************************************************************************************//**
* @brief This is a weak example callback function. It should be overridden by defining a user callback function
* with the prototype below.
* - void user_gpt_callback(timer_callback_args_t * p_args)
*
* @param[in] p_args Callback arguments used to identify what caused the callback.
**********************************************************************************************************************/
void user_gpt_callback_internal(timer_callback_args_t * p_args);
void user_gpt_callback_internal(timer_callback_args_t * p_args)
{
/** Do nothing. */
SSP_PARAMETER_NOT_USED(p_args);
}


Nordic poszerza opcje rozwojowe serii nRF54L o płytkę nRF7002 EBII do łączności Wi-Fi 6
Technologie End of Life i bezpieczeństwo sieci – wyzwania Europy związane z tzw. długiem technologicznym
Najczęstsze błędy firm przy wyborze dostawcy energii i jak ich uniknąć 



