Página 1 de 1

C/C++ Declarando diretiva preprocessor em loop, é possivel ?

MensagemEnviado: 08 Nov 2019 21:42
por andre_luis
Ola pessoal,


Tenho um projeto com 16 entradas, 16 saídas, e 16 pinos de controle baseados num chip de 100 pinos, onde não existe uma logica direta no mapeamento dessas I/Os. Quero dizer, os pinos do uC, que na placa são numerados de 1 á 16 em alguns barramentos, estão distribuidos em diferente sequencia de pinos em diversas portas.

Pra minha sorte, o ATMEL STUDIO já criou pra mim as 48 funções principais, digamos AcionaSaida1..16, HabilitaSaida1..16, LeEntrada1..16 além de diversas outras como Direção1..6, etc...

Como todas esses 16 canais terão exatamente a mesma função, vou ter de repetir a mesma logica manualmente pra cada caso; atualmente eu por exemplo desabilito todas as saídas assim:

Código: Selecionar todos
HabilitaSaida1(false);
HabilitaSaida2(false);
- - -
HabilitaSaida16(false);


Se o Wizard da IDE tivesse indexado, seria tranquilo, tipo:

For i=1 to 16 { HabilitaSaida[i]; }

Entretanto, eu gostaria de fazer algo assim (pseudo-codigo) concatenando o sequencial, já na declaração das variaveis e nas funções:

Código: Selecionar todos
#FOR x = 1 TO 16 DO
HabilitaSaida##x(false);
#END


Até daria pra eu alterar o código e indexar num vetor de tamanho 16, mas essas funções Get, Set, Tris, etc foram todas geradas automaticamente, e são re-geradas a cada nova alteração que faço no ATMEL START.

Alguém teria alguma dica de solucao ?