core/thermometer/ds18b20.c File Reference

#include "sceptre.h"
#include "ds18b20.h"

Go to the source code of this file.

Defines

#define DS18B20_PIN   19
#define DS18B20_OUTPUT   IODIR1 |= (1<<DS18B20_PIN)
#define DS18B20_INPUT   IODIR1 &= ~(1<<DS18B20_PIN)
#define DS18B20_SET   IOSET1 = (1<<DS18B20_PIN)
#define DS18B20_CLR   IOCLR1 = (1<<DS18B20_PIN)
#define DS18B20_READ_BIT   (IOPIN1&(1<<DS18B20_PIN))==0? 0 : 1
#define DS18B20_ROM_SEARCH   (0xf0)
#define DS18B20_ROM_READ   (0x33)
#define DS18B20_ROM_MATCH   (0x55)
#define DS18B20_ROM_SKIP   (0xcc)
#define DS18B20_ROM_SEARCH_ALARM   (0xec)
#define DS18B20_FUNCTION_CONVERT   (0x44)
#define DS18B20_FUNCTION_WRITE_SCRATCHPAD   (0x4e)
#define DS18B20_FUNCTION_READ_SCRATCHPAD   (0xbe)
#define DS18B20_FUNCTION_COPY_SCRATCHPAD   (0x48)
#define DS18B20_FUNCTION_RECALL   (0xb8)
#define DS18B20_FUNCTION_READ_POWER_SUPPLY   (0xb4)
#define ONEWIRE_DEVICE_PRESENT   1
#define ONEWIRE_NO_DEVICE   0

Functions

uint8_t onewire_do_crc8 (uint8_t value)
void onewire_wait_us (uint32_t us)
uint8_t onewire_read_bit (void)
void onewire_write_bit (uint8_t bit)
uint8_t onewire_reset (void)
uint8_t onewire_read_byte (void)
void onewire_write_byte (uint8_t byte)
bool_t onewire_read_serial (uint8_t *p_serial)
bool_t ds18b20_init (void)
bool_t ds18b20_write_scratchpad (uint8_t th, uint8_t tl, uint8_t config)
float ds18b20_read_temperature (void)
int ds18b20_read (void *p_dst, uint32_t dst_size)
int ds18b20_write (const uint8_t *p_src, uint32_t src_size)
bool_t ds18b20_read_serial (uint8_t *p_serial)

Variables

const uint8_t onewire_crc_table []

Detailed Description

Implementation of DS18B20 1-wire thermometer driver.

Definition in file ds18b20.c.


Function Documentation

bool_t ds18b20_init ( void   ) 

Initialize the DS18B20.

Returns:
true on success, false otherwise.

Definition at line 255 of file ds18b20.c.

int ds18b20_read ( void *  p_dst,
uint32_t  dst_size 
)

Read the temperature from the DS18B20.

This function is used by the device driver.

Parameters:
p_dst Address to write data to.
dst_size Number of bytes to read.
Returns:
Number of bytes read on success, -1 otherwise.

Definition at line 318 of file ds18b20.c.

bool_t ds18b20_read_serial ( uint8_t *  p_serial  ) 

Read the serial number of a DS18B20.

Parameters:
p_serial Address to write serial to (8 bytes expected).
Returns:
true on success, false otherwise.

Definition at line 371 of file ds18b20.c.

float ds18b20_read_temperature ( void   ) 

Read the temperature measured by the DS18B20.

Returns:
Temperature in degrees Celsius on success, -100 otherwise.

Definition at line 289 of file ds18b20.c.

int ds18b20_write ( const uint8_t *  p_src,
uint32_t  src_size 
)

Write the DS18B20.

This function is used by the device driver.

Parameters:
p_src Pointer to data to write.
src_size Number of bytes to write.
Returns:
Number of bytes read on success, -1 otherwise.

Definition at line 355 of file ds18b20.c.

bool_t ds18b20_write_scratchpad ( uint8_t  th,
uint8_t  tl,
uint8_t  config 
)

Write the scratchpad of the DS18B20.

Parameters:
th Value for Th register.
tl Value for Tl register.
config Value for configuration register.
Returns:
true on success, false otherwise.

Definition at line 269 of file ds18b20.c.

uint8_t onewire_do_crc8 ( uint8_t  value  ) 

Calculate the CRC8 of the byte value provided.

See Maxim Application Note 27.

Parameters:
value Value to add to crc value.
Returns:
Updated crc value.

Definition at line 89 of file ds18b20.c.

uint8_t onewire_read_bit ( void   ) 

Read one bit on a 1-wire bus.

Returns:
Bit value read.

Definition at line 124 of file ds18b20.c.

uint8_t onewire_read_byte ( void   ) 

Read one byte on a 1-wire bus.

Returns:
Byte read.

Definition at line 197 of file ds18b20.c.

bool_t onewire_read_serial ( uint8_t *  p_serial  ) 

Read the serial number of a 1-wire device.

Parameters:
p_serial Address to write serial to.
Returns:
true on success, false otherwise.

Definition at line 232 of file ds18b20.c.

uint8_t onewire_reset ( void   ) 

Send a reset on a 1-wire bus.

Returns:
ONEWIRE_DEVICE_PRESENT or ONEWIRE_NO_DEVICE

Definition at line 177 of file ds18b20.c.

void onewire_wait_us ( uint32_t  us  ) 

Wait a number of microseconds.

CCLK = 60 MHz This probably has to be tuned...

This compiles to .L3: sub r3, r3, #1 str r3, [sp, #0] ldr r3, [sp, #0] cmp r3, #0 bne .L3

Parameters:
us Number of microseconds to wait.

Definition at line 112 of file ds18b20.c.

void onewire_write_bit ( uint8_t  bit  ) 

Write one bit on a 1-wire bus.

Parameters:
bit Value to write.

Definition at line 145 of file ds18b20.c.

void onewire_write_byte ( uint8_t  byte  ) 

Write one byte on a 1-wire bus.

Parameters:
byte Value to write.

Definition at line 215 of file ds18b20.c.


Variable Documentation

const uint8_t onewire_crc_table[]
Initial value:
{
  0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65,
  157,195, 33,127,252,162, 64, 30, 95, 1,227,189, 62, 96,130,220,
  35,125,159,193, 66, 28,254,160,225,191, 93, 3,128,222, 60, 98,
  190,224, 2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255,
  70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89, 7,
  219,133,103, 57,186,228, 6, 88, 25, 71,165,251,120, 38,196,154,
  101, 59,217,135, 4, 90,184,230,167,249, 27, 69,198,152,122, 36,
  248,166, 68, 26,153,199, 37,123, 58,100,134,216, 91, 5,231,185,
  140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205,
  17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80,
  175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238,
  50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115,
  202,148,118, 40,171,245, 23, 73, 8, 86,180,234,105, 55,213,139,
  87, 9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22,
  233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168,
  116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53
}

Definition at line 48 of file ds18b20.c.

 All Data Structures Files Functions Variables Typedefs Enumerations Defines

Generated by  doxygen 1.6.2