Tengo una aplicación arduino haciendo dos cosas en el loop
:
- Un servidor web que espera una conexión y muestra algunos formularios html para cambiar los valores de configuración.
- Procese algunos datos externos y muéstrelos en una matriz de leds.
El problema es que el procesamiento de los datos lleva mucho tiempo (~ 20 segundos). Así que mientras esta vez, el servidor web no puede hacer nada. La estructura de mi programa se ve así:
EthernetServer server(80);
void loop() {
webServer()
processAndShowData();
}
void webServer() {
EthernetClient serverClient = server.available();
if (serverClient) {
while (serverClient.connected() {
// handle the web server stuff in here
}
}
}
Entonces, mi pregunta es, ¿si existe la posibilidad de usar un controlador de interrupciones para manejar el servidor web? Entonces el servidor web podría reaccionar mientras se ejecuta la otra tarea.
ACTUALIZACIÓN: Ahora también intenté adjuntar una interrupción a los pines de Ethernet (usando un Mega, son 50, 51 y 52), pero esto tampoco funciona. Intenté algo. de esta manera:
attachInterrupt(50, demoFunction, CHANGE);
Pero el método no se llama, incluso cuando se cambian los pines a 51 o 52 en ambos, se ingresa desde un cliente como una solicitud HTTP y se envía un HTML a un navegador.