uC: PIC18F46K20
Quiero escanear, en un bucle, diferentes puertos y probar diferentes pines en cada puerto.
Tengo diferentes tableros de destino, así que quiero poder configurar rápidamente cada tablero en matrices CONST. Así que creé matrices como estas:
const char my_ports[4] = {PORTB, PORTB, PORTD, PORTA}; // <- this is the PROBLEM causing line
const char my_pins[4] = {3, 7, 1, 4};
para poder escanear esos puertos en un bucle:
// NEW version of the func.
void pin_update(void)
{
for (k=0; k<=3; k++)
{
if (my_ports[k] & my_pins[k])
{
// and actions here ........
}
}
}
Pero el compilador aparece con un error:
"my_ports[] ... constant expression required"
Utilicé el método de pasar el nombre del puerto (por ejemplo, PORTB) en la versión anterior del código cuando cada pin fue probado individualmente, por ejemplo. :
pin_update(PORTB, 3);
// ...
pin_update(PORTD, 1);
// OLD version of the func:
void pin_update(char prt, char pn)
{
if (prt & pn)
{
// and actions here ........
}
}
y todo estaba bien y el código funcionó correctamente. Pero como ven, PORTB está codificado en una lista de parámetros. Y ahora quiero ejecutar las "actualizaciones de pin" anteriores en un bucle.
Entonces surgió un problema cuando quise listar los nombres de puertos en la matriz CONST. Probé varias cosas con el envío a direcciones de puertos, etc., nada funcionó. Al compilador todavía no le gustó.