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

Programação C em geral

Moderadores: 51, guest2003

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

Mensagempor andre_luis » 08 Nov 2019 21:42

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 ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x