Discussions Générales > Bus DCC

L'octet de détection d'erreur dans les trains longs

(1/1)

sajuuk:
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:
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

sajuuk:
Justement, je posais la question parce que j'ai lu la norme, sans la comprendre  ???

Merci beaucoup, je vais pouvoir continuer à pousser  ;D

Navigation

[0] Index des messages

Utiliser la version classique