destroyedlolo a écrit :1t = 4,096 secondes ce qui correspond à 16384 impulsions et tu dois envoyé tes informations pour chaque tour, donc toutes les 4,096s : tu confirmes ?
Je confirme !
destroyedlolo a écrit :Si je reprend ta formule 5 + 16 384 * 3 + 16 384 * 3 = 98 309 ok mais t'où vienne les 32768 supplémentaires ? C'est pour l'enveloppe de tes données ?
C'est le nombre théorique de séparateurs nécessaires entre mes valeurs : 1 valeur de nombre d'impulsions + 16 384 valeurs de durée d'impulsion + 16 384 valeurs d'écart d'impulsion - 1 = 32 768.
destroyedlolo a écrit :Quoi qu'il en soit, 131 077 octets sur 5s, c'est vraiment pinuts en ethernet.
Ce qui m'inquiète, c'est que je n'ai pas 4 secondes pour les envoyer : le radar tourne 24/7, avec une impulsion toutes les 250 µs, donc si je veux être sûr de toutes les choper (contrainte imposée pour le projet), il faut que l'envoi de toutes les valeurs du tour écoulé se fasse entre la dernière impulsion du tour
n et la première impulsion du tour
n + 1.
Bud Spencer a écrit :T’es pas prêt de t’en sortir comme ça.
Je sais !
Bud Spencer a écrit :Un truc qu’il faut savoir, c’est que tu ne transmets ni des chaines de caractères et encore moins des entiers. Tu ne transmets que des octets et la quantité dépend des types de départ et de l’encodage utilisé.
Oui, il ne faut pas que je me limite à mes
int, mes
char, etc., un octet c'est un octet.
Bud Spencer a écrit :Ce qui veut dire qu’avec ta méthode tu vas devoir envoyer les résultats d’un tour en au moins 3 séquences.
Et si je réduisais la quantité à envoyer pour augmenter la fréquence d'envoi ? Au lieu d'envoyer les valeurs d'un tour, envoyer toutes les 10, 100, 1 000 valeurs ? Reste à voir si ça peut être fait en moins de 125 µs, et si le RPi peut tout traiter (cf. un de mes sujets précédents, où le RPi "oublait" une centaine de valeurs de temps en temps).
Bud Spencer a écrit :Pour résumer, ton arduino est déjà sur les rotules à force de traitement d’interrupt. et de conversion, il n’a plus de mémoire et sa couche réseaux est totalement saturée.
Pour te répondre clairement, Non, ca ne marchera pas avec ces méthodes.
Ça a le mérite d'être clair !
Bud Spencer a écrit :Ton problème de volumétrie par tour peut tout simplement se résoudre en 32770 octets en raisonnant de la sorte :
1 word (2 octets) pour stocker la valeur d’impulsion + 16384 bytes (1 octet) pour stocker 16384 durée d’impulsion + 16384 bytes (1 octet) pour stocker 16384 durée de signaux.
De là à les envoyer en 125 µS, ce n’est pas gagné …
Merci pour le raisonnement ! Je vais essayer de fractionner un peu mes envois, en utilisant les types suggérés.
romaxx a écrit :Datasheet du W5100: Not support IP Fragmentation, ça c'est fait.
La seule solution que je vois c'est de faire de l'UART DMA, comme ça ton uC n'est pas bouffé par les interruptions de com, il se concentre sur ton acquisition de données, et ton pi vient chercher les données sur ton arduino en DMA.
J'ai jamais fait, je vais me renseigner !
Merci pour vos réponses !
