One Wire Example striped to find sensors only builds using MBED 2 Library

Dependencies:   mbed

Committer:
Roietronics
Date:
Mon Jun 05 21:11:32 2017 +0000
Revision:
0:486c7ab9114b
Initial commit of one wire example for MBED 2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Roietronics 0:486c7ab9114b 1 #include <inttypes.h>
Roietronics 0:486c7ab9114b 2
Roietronics 0:486c7ab9114b 3 #define CRC8INIT 0x00
Roietronics 0:486c7ab9114b 4 #define CRC8POLY 0x18 //0X18 = X^8+X^5+X^4+X^0
Roietronics 0:486c7ab9114b 5
Roietronics 0:486c7ab9114b 6 uint8_t crc8 ( uint8_t *data_in, uint16_t number_of_bytes_to_read )
Roietronics 0:486c7ab9114b 7 {
Roietronics 0:486c7ab9114b 8 uint8_t crc;
Roietronics 0:486c7ab9114b 9 uint16_t loop_count;
Roietronics 0:486c7ab9114b 10 uint8_t bit_counter;
Roietronics 0:486c7ab9114b 11 uint8_t data;
Roietronics 0:486c7ab9114b 12 uint8_t feedback_bit;
Roietronics 0:486c7ab9114b 13
Roietronics 0:486c7ab9114b 14 crc = CRC8INIT;
Roietronics 0:486c7ab9114b 15
Roietronics 0:486c7ab9114b 16 for (loop_count = 0; loop_count != number_of_bytes_to_read; loop_count++)
Roietronics 0:486c7ab9114b 17 {
Roietronics 0:486c7ab9114b 18 data = data_in[loop_count];
Roietronics 0:486c7ab9114b 19
Roietronics 0:486c7ab9114b 20 bit_counter = 8;
Roietronics 0:486c7ab9114b 21 do {
Roietronics 0:486c7ab9114b 22 feedback_bit = (crc ^ data) & 0x01;
Roietronics 0:486c7ab9114b 23
Roietronics 0:486c7ab9114b 24 if ( feedback_bit == 0x01 ) {
Roietronics 0:486c7ab9114b 25 crc = crc ^ CRC8POLY;
Roietronics 0:486c7ab9114b 26 }
Roietronics 0:486c7ab9114b 27 crc = (crc >> 1) & 0x7F;
Roietronics 0:486c7ab9114b 28 if ( feedback_bit == 0x01 ) {
Roietronics 0:486c7ab9114b 29 crc = crc | 0x80;
Roietronics 0:486c7ab9114b 30 }
Roietronics 0:486c7ab9114b 31
Roietronics 0:486c7ab9114b 32 data = data >> 1;
Roietronics 0:486c7ab9114b 33 bit_counter--;
Roietronics 0:486c7ab9114b 34
Roietronics 0:486c7ab9114b 35 } while (bit_counter > 0);
Roietronics 0:486c7ab9114b 36 }
Roietronics 0:486c7ab9114b 37
Roietronics 0:486c7ab9114b 38 return crc;
Roietronics 0:486c7ab9114b 39 }