Bueno, ya tengo más claro como hacerlo.
Vamos a hacer un sistema modular, es decir parecido a lo que hace arduino con sus Shields.
En un principio vamos a diseñar 4 tarjetas, más adelante ya se harán más cosas según necesidades.
1.- Tarjeta CPU, es la que integrará el micro Atmega 1284p. Tendrá E/S directas a micro, algunas con multiplexor/desmultiplexor, luego las pwm e interrupciones, conexión a pantalla mediante puerto I2C.
2.- Tarjeta E/S, integrará conversores de bus de I2C a paralelo, para crear entradas y salidas que avisarán a la CPU mediante interrupción de cambios en las E/S (así espero ahorrar tiempo de cálculo en la tarjeta de la CPU y mejorar el tiempo de respuesta de las salidas)
3.- Tarjeta controladora de motores: La idea es implementar un sistema para contar los pulsos de encoders, no un driver de potencia. Esto aún no se muy bien como hacerlo... Creo que hay algun IC especializado para hacerlo.
4.- Tarjeta controladora de pantalla y panel de control. Es una tarjeta que implementa varios conversores de bus I2C a paralelo, se encarga de la comunicación de la pantalla, de controlar cuando se pulsa un botón en el panel de mando e iluminar los botones que tienen iluminación.
Ahora viene lo bueno: La tarjeta CPU se comunicará por su parte superior e inferior a otras tarjetas que se superpongan por arriba o por debajo, esta conexión integrará:
- Alimentación 24Vdc directa de la F.A.
- Comunicación I2C
- Comunicación serie (No se si es realmente necesario)
- Comunicación a interrupciones de la CPU
Todas las tarjetas recibirán alimentación a 24Vdc, que se transformarán internamente para las necesidades de la tarjeta.
La idea es que se puedan superponer varias tarjetas incluso del mismo tipo y de forma caótica para que formen un todo organizado. Como no se muy bien como trabaja el bus I2C y serie, no se si alcanzaremos las velocidades necesarias para un trabajo fluido. Por ello pido ayuda a alguien que pueda tener más experiencia que yo en Arduino para poder avanzar.