destroyedlolo a écrit :Y'a juste un truc que tu n'as pas pris en compte : c'est que tu es limité aussi par ton éthernet.
Je suis sur du 10/100 Mb/s, à la fois pour le shield Arduino et pour le Raspberry Pi. Pour être plus précis,
la doc Arduino indique qu'une DEL "100M" s'allume en présence d'un réseau 100 Mb/s, ce qui est le cas sur ma liaison. Il y a sûrement des choses que j'oublie, mais 100 Mb/s ça me paraît pas mal non ?
destroyedlolo a écrit :Si tu regarde dans la doc, tu verras que tu ne peux pas transférer la taille que tu veux ...
Je parcours la doc Arduino, mais je ne trouve rien... Tu parles d'une limitation due à une fonction de la bibliothèque UDP ? Ou a une limitation du shield ? Ou même de l'Ethernet en général ?
destroyedlolo a écrit :As-tu pensé à la stratégie pour remplir / transférer tes buffers ?
Remplissage du buffer A sur une des interruptions, envoi dès que le buffer A est plein, le buffer B prend le relais avec les mêmes étapes que le A, et on recommence.
Je vais avoir trois interruptions : bip "tour" montant, bip montant, bip descendant. Le bip "tour" montant va me permettre de compter les tours (encore à débattre, car faisable côté RPi comme tu l'as souligné précédemment, à voir si je dois gagner en performances le moment venu) ; le bip montant va me permettre d'incrémenter mon compteur de bips, ainsi qu'à déclencher un timer pour avoir un
t0 pour la durée d'impulsion et un
tn pour l'écart entre bips ; le bip descendant va me permettre de déclencher un autre timer pour mesurer la durée d'impulsion.
Du coup, je ferais du remplissage de buffer dès que j'aurais les deux valeurs à mesurer, donc dans l'interruption bip descendant, pour avoir la durée du bip écoulé, et son écart par rapport au bip précédent (il y aurait du coup un bip sans bip précédent, mais qui serait dans le "tour incomplet initial" dont j'ai parlé précédemment, donc pas très grave.) ; l'envoi se ferait dans la même interruption dès que mon buffer serait plein. Voilà pour la théorie, c'est ce que j'ai en tête pour l'instant.
Je n'ai finalement que deux valeurs à mesurer, les deux autres ayant été jugées inutiles (d'où mon dernier modèle de structure allégé). Je conserve donc la mesure de largeur d'impulsion de chaque bip, ainsi que l'écart entre les fronts montant de deux bips successifs. Au final, je conserve donc : numéro du tour, numéro du bip, largeur du bip, écart entre deux bips consécutifs.
Il faut aussi que je garde en mémoire vos remarques à propos du SPI qui fait le lien entre l'Arduino et le shield Ethernet. Le SPI est rapide, donc je ne sais pas si ça risque de poser problème, mais il faudra au moins que je l'évoque dans mon rapport.