Auteur Sujet: L'octet de détection d'erreur dans les trains longs  (Lu 10380 fois)

sajuuk

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
L'octet de détection d'erreur dans les trains longs
« le: avril 04, 2020, 02:21:59 pm »
Bonjour à tous !

Mon petit logiciel de commande avance, un peu grâce au confinement. ::)

Cette fois ci, j'aurais besoin de votre aide sur l'octet de détection d'erreur, pour les trains de donnée de plus de 3 octets.
Je ne sais pas comment le calculer dès qu'il y a autre chose qu'un octet adresse et un octet data ...  :-\


Pour l'instant, je sais faire pour un train à 3 octets :
AAAAAAAA '0' DDDDDDDD '0' EEEEEEEE
un octet adresse (A), un octet données (D), un octet détection d'erreur (E)
pour chaque E, on calcule XOR de A et D pour la même position.

Pour les trains à davantage d'octets :
AAAAAAAA '0' BBBBBBBB '0' CCCCCCCC '0' DDDDDDDD '0' EEEEEEEE
quatre octets pouvant être adresse et/ou donnée (de A à D), un octet détection d'erreur (E)
Là, je ne comprends plus les NMRA ...

Dois-je faire octet par octet ?
Par exemple, A XOR B donne x, x XOR C donne y, y XOR D donne E ?
Ou suis-je à la ramasse ?  :o

Merci à tous !

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2901
  • 100% Arduino et N
    • Voir le profil
Re : L'octet de détection d'erreur dans les trains longs
« Réponse #1 le: avril 04, 2020, 04:41:53 pm »
C'est clair dans la norme :
https://www.nmra.org/sites/default/files/s-92-2004-07.pdf

The contents of the Error Detection Data Byte shall be the bitwise exclusive OR of the contents of the Address Data Byte and the Instruction Data Byte in the packet concerned. (e.g. the exclusive OR of bit 0 of the address data byte and bit 0 of the instruction data byte will be placed in bit 0 of the error detection data byte...)

Par exemple, A XOR B donne x, x XOR C donne y, y XOR D donne E ? ->> OUI
Cordialement,
Dominique

sajuuk

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : L'octet de détection d'erreur dans les trains longs
« Réponse #2 le: avril 04, 2020, 07:42:01 pm »
Justement, je posais la question parce que j'ai lu la norme, sans la comprendre  ???

Merci beaucoup, je vais pouvoir continuer à pousser  ;D