Multitarea real en arduino

Hola muchachos, estoy haciendo un contador de objetos con un arduino uno + ethernet shield con un sensor retroreflexivo que cuenta objetos a razón de 1 por segundo, cada determinado numero de segundos guardo ese contador en un base de datos. Tengo el problema que cuando llamo a la función para subir el contador la base de datos demora unos 3 o 4 segundos en los que el arduino deja de ejecutar el codigo por lo que quedan 3 o 4 objetos sin contar
Me conecto al servidor PHP envio la consulta y no espero ninguna respuesta .

Acá esta el código de guardado:

void SubirDatos(int cont, long valcont){
char consulta[70]= " ";
char* formato="GET http://192.168.0.13/pruebas/base2.php?contador=%i&valor=%li";
sprintf(consulta, formato, cont,valcont);
client.connect(server, 80);
client.print(consulta);
client.println(" HTTP/1.0");
client.println();
client.stop();
client.flush();
}

por lo que pude ver la linea de codigo con la que demora es la siguiente:

client.connect(server, 80);

Para manejar el sensor y el guardado uso la función millis(), en ningun punto uso delay. No entiendo por que se detiene en esa función unos segundos.

codigo.ino (365 Bytes)

Sebastianzx6:
../.. No entiendo por que se detiene en esa función unos segundos.

Pues porque el servidor web va a su aire y nunca te contestará tan rápido como tu quieres.

Tienes que implementar el contador a través de una interrupción de hardware.

cada x (segundos ?) hacer el envío al servidor web y cuando se haya completado correctamente, entonces disminuir del conteo el valor que hayas enviado.

jordi3sk97:
Pues porque el servidor web va a su aire y nunca te contestará tan rápido como tu quieres.

Tienes que implementar el contador a través de una interrupción de hardware.

cada x (segundos ?) hacer el envío al servidor web y cuando se haya completado correctamente, entonces disminuir del conteo el valor que hayas enviado.

Gracias! ya mismo me pongo a leer sobre las interrupciones por hardware.