Réglage RTC avec NTP sur shield Ethernet Nano (ENC28J60)

Bonjour,
J’ai récupéré et corrigé l’exemple NTP client du bouclier Ethernet Nano. Pas grand chose : utiliser un serveur NTP up to date, et supprimer les fonctions F() des quelques Serial.print.
L’objectif est de mettre à jour une horloge RTC sur le temps NTP. J’y arrive, mais cela ne se fait qu’une seule fois et je ne vois pas comment répéter la màj par exemple toutes les 24 heures.

Je dois avouer que je suis bien loin d’avoir tout compris des routines, surtout que la boucle

void loop () {
  // this must be called for ethercard functions to work.
  ether.packetLoop(ether.packetReceive());
}

ne boucle pas. Cette ligne doit être obligatoirement là, et pas dans le setup.

Je ne comprends pas.
Pouvez-vous m’aider ?
Merci !

ShieldNanoNTP_RTC_2.ino (5.81 KB)

supprimer les fonctions F() des quelques Serial.print

pourquoi vouloir utiliser plus de RAM, c'est ballot surtout si vous voulez faire autre chose dans votre code... ?

Dans l'exemple ils lancent une seule requête NTP dans le setup

 uint8_t ntpIp[IP_LEN];
  ether.copyIp(ntpIp, ether.hisip);
  ether.printIp("NTP: ", ntpIp);

L'appel à ether.packetLoop(ether.packetReceive());dans la loop surveille la communication et déclenche le callback déclaré ici quand la réponse est complète  ether.udpServerListenOnPort(&udpReceiveNtpPacket, NTP_LOCALPORT);

Comme on ne re-soumet aucune nouvelle requête, udpReceiveNtpPacket() ne sera appelé qu'une seule fois.