Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]
LibrairieOneWire

uint8_t crc8( uint8_t *addr, uint8_t len)


Description

Cette fonction vérifie à partir un tableau de données la validité d'un code de contrôle CRC reçu par le capteur "One Wire" et renvoie la valeur valide. Une liste de valeurs de contrôle (fournie par le fabricant des composant One Wire) est stockée en mémoire programme lors de la programmation de la carte Arduino. Cette fonction teste la validité du code CRC présent dans l'octet spécifié d'un tableau d'octet dont l'adresse est envoyé à la fonction. Cette fonction est utilisée pour garantir la fiabilité des données reçues depuis le bus One Wire.

Il suffit de vérifier la concordance entre le code CRC reçu et le code fournit par la fonction crc8 pour être sûr que la transmission des données reçues est valide.

Avec un capteur type DS18B20, cette fonction de contrôle pourra être utilisée :

  • soit pour vérifier la validité du code d'adresse 64 bits émis par le composant One Wire (code CRC dans les 8 bits de poids fort des 64 bits d'adresse)
  • soit pour vérifier la validité d'un résultat de mesure émis par le composant One Wire (code CRC dans le 9ème octet de la RAM)

A noter que cette fonction peut ne pas utiliser un tableau de valeurs mis en mémoire programme (ce qui est fait par défaut). Pour activer l'utilisation du calcul CRC sans recours au tableau de valeurs, il faut modifier le fichier de la librairie OneWire;h selon :


// Select the table-lookup method of computing the 8-bit CRC
// by setting this to 1.  The lookup table no longer consumes
// limited RAM, but enlarges total code size by about 250 bytes
#ifndef ONEWIRE_CRC8_TABLE
#define ONEWIRE_CRC8_TABLE 0
#endif

Pour plus d'infos sur le Calcul de Redondance Cyclique (CRC) voir : http://fr.wikipedia.org/wiki/Contr%C3%B4le_de_redondance_cyclique

Syntaxe


variable=capteur.crc8( addrArray, index); 

Paramètres

Exemple


if ( capteur.crc8( addr, 7) != addr[7]) { // compare le code CRC du code d'adresse (8ème octet) avec le code de contrôle crc8
      Serial.print("Le code CRC reçu n'est pas valide ! \n"); 
      return; // sort de la fonction en cours
  }

Commentaires utilisateurs

Aucun commentaire


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.

Cette page est une création originale de X. HINAULT