DrPi
2020-05-13 15:27:38 UTC
Bonjour,
Avec les procédures suivantes :
gpio.Set(gpio.GPIO_A, 1); -- LED RED OFF
gpio.Set(gpio.GPIO_A, 2); -- LED GREEN OFF
gpio.Set(gpio.GPIO_D, 5); -- LED BLUE OFF
gpio.Clear(gpio.GPIO_A, 1); -- LED RED ON
gpio.Clear(gpio.GPIO_A, 2); -- LED GREEN ON
gpio.Clear(gpio.GPIO_D, 5); -- LED BLUE ON
Comment faire pour déclarer des procédures plus explicites sans
pénalisation sur le temps d'exécution ?
SetLedRedOn
SetLedGreenOn
SetLedBlueOn
...
En C, j'aurais fais des macros comme ceci :
void gpio_set(int port, int bit);
void gpio_clear(int port, int bit);
#define SetLedRedOn() gpio_clear(PORTA, 1)
#define SetLedGreenOn() gpio_clear(PORTA, 2)
#define SetLedBlueOn() gpio_clear(PORTD, 5)
...
En Ada, il n'y a pas de macros. Quelle est la meilleure solution ? Des
procédures avec un aspect "inline" ?
Nicolas
Avec les procédures suivantes :
gpio.Set(gpio.GPIO_A, 1); -- LED RED OFF
gpio.Set(gpio.GPIO_A, 2); -- LED GREEN OFF
gpio.Set(gpio.GPIO_D, 5); -- LED BLUE OFF
gpio.Clear(gpio.GPIO_A, 1); -- LED RED ON
gpio.Clear(gpio.GPIO_A, 2); -- LED GREEN ON
gpio.Clear(gpio.GPIO_D, 5); -- LED BLUE ON
Comment faire pour déclarer des procédures plus explicites sans
pénalisation sur le temps d'exécution ?
SetLedRedOn
SetLedGreenOn
SetLedBlueOn
...
En C, j'aurais fais des macros comme ceci :
void gpio_set(int port, int bit);
void gpio_clear(int port, int bit);
#define SetLedRedOn() gpio_clear(PORTA, 1)
#define SetLedGreenOn() gpio_clear(PORTA, 2)
#define SetLedBlueOn() gpio_clear(PORTD, 5)
...
En Ada, il n'y a pas de macros. Quelle est la meilleure solution ? Des
procédures avec un aspect "inline" ?
Nicolas