User Tools

Site Tools


avr:crc16.h

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
avr:crc16.h [2013/09/18 09:01] sdoltavr:crc16.h [2013/09/18 09:10] (current) sdolt
Line 5: Line 5:
 ===== Utilisation sur microprocesseur AVR ===== ===== Utilisation sur microprocesseur AVR =====
  
-La bibliothèque standard avr-libc possède des fonctions permettant de calculer rapidement certain type de CRC grâce au fichier d'en-tête crc16.h. Ces fonctions sont codée en assembleur et de type "inline" pour augmenter leur vitesse d'exécution.+La bibliothèque standard avr-libc possède des fonctions permettant de calculer rapidement certain type de CRC grâce au fichier d'en-tête crc16.h. Ces fonctions sont codées en assembleur pour augmenter leur vitesse d'exécution.
  
 <code c> <code c>
Line 15: Line 15:
 ==== CRC pour OneWire ==== ==== CRC pour OneWire ====
  
-Le protocole OneWire utilise deux types de CRC, un sur 8 bits et l'autre sur 16 bits.+Le protocole OneWire utilise deux types de CRC, un sur 8 bits et l'autre sur 16 bits. Les deux types utilises une valeur initiale de 0.
  
 === DOW CRC8 === === DOW CRC8 ===
Line 39: Line 39:
 == Calcul du CRC == == Calcul du CRC ==
 <code c> <code c>
-    // Dallas iButton ROM without CRC+    // Contenu des 7 premiers octets de la mémoire ROM, donc sans l'octet CRC
     uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0 };     uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0 };
  
     uint8_t make_crc8(void)     uint8_t make_crc8(void)
     {     {
-        uint8_t crc = 0i;+        uint8_t crc = 0 
 +        uint8_t i;
  
         for (i = 0; i < sizeof serno / sizeof serno[0]; i++)         for (i = 0; i < sizeof serno / sizeof serno[0]; i++)
Line 54: Line 55:
 == Vérification du CRC == == Vérification du CRC ==
 <code c> <code c>
-    // Dallas iButton ROM with CRC+    // Contenu des 8 octets de la mémoire ROM, donc avec l'octet CRC
     uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 };     uint8_t serno[] = { 0x02, 0x1c, 0xb8, 0x01, 0, 0, 0, 0xa2 };
  
     uint8_t check_crc8(void)     uint8_t check_crc8(void)
     {     {
-        uint8_t crc = 0i;+        uint8_t crc = 0 
 +        uint8_t i;
  
         for (i = 0; i < sizeof serno / sizeof serno[0]; i++)         for (i = 0; i < sizeof serno / sizeof serno[0]; i++)
avr/crc16.h.1379494860.txt.gz · Last modified: 2013/09/18 09:01 by sdolt