Mercurial > templog
view onewire.h @ 165:573f37091655
Merge
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Mon, 21 Jan 2013 07:25:52 +0800 |
parents | 7da9a3f23592 |
children |
line wrap: on
line source
#ifndef ONEWIRE_H_ #define ONEWIRE_H_ #ifdef __cplusplus extern "C" { #endif #include <stdint.h> /*******************************************/ /* Hardware connection */ /*******************************************/ /* Define OW_ONE_BUS if only one 1-Wire-Bus is used in the application -> shorter code. If not defined make sure to call ow_set_bus() before using a bus. Runtime bus-select increases code size by around 300 bytes so use OW_ONE_BUS if possible */ #define OW_ONE_BUS #ifdef OW_ONE_BUS #define OW_PIN PB1 #define OW_IN PINB #define OW_OUT PORTB #define OW_DDR DDRB #define OW_CONF_DELAYOFFSET 0 #else #if ( F_CPU < 1843200 ) #warning | Experimental multi-bus-mode is not tested for #warning | frequencies below 1,84MHz. Use OW_ONE_WIRE or #warning | faster clock-source (i.e. internal 2MHz R/C-Osc.). #endif #define OW_CONF_CYCLESPERACCESS 13 #define OW_CONF_DELAYOFFSET ( (uint16_t)( ((OW_CONF_CYCLESPERACCESS) * 1000000L) / F_CPU ) ) #endif // Recovery time (T_Rec) minimum 1usec - increase for long lines // 5 usecs is a value give in some Maxim AppNotes // 30u secs seem to be reliable for longer lines //#define OW_RECOVERY_TIME 5 /* usec */ //#define OW_RECOVERY_TIME 300 /* usec */ #define OW_RECOVERY_TIME 10 /* usec */ // Use AVR's internal pull-up resistor instead of external 4,7k resistor. // Based on information from Sascha Schade. Experimental but worked in tests // with one DS18B20 and one DS18S20 on a rather short bus (60cm), where both // sensores have been parasite-powered. #define OW_USE_INTERNAL_PULLUP 1 /* 0=external, 1=internal */ /*******************************************/ #define OW_MATCH_ROM 0x55 #define OW_SKIP_ROM 0xCC #define OW_SEARCH_ROM 0xF0 #define OW_SEARCH_FIRST 0xFF // start new search #define OW_PRESENCE_ERR 0xFF #define OW_DATA_ERR 0xFE #define OW_LAST_DEVICE 0x00 // last device found // rom-code size including CRC #define OW_ROMCODE_SIZE 8 extern uint8_t ow_reset(void); extern uint8_t ow_bit_io( uint8_t b ); extern uint8_t ow_byte_wr( uint8_t b ); extern uint8_t ow_byte_rd( void ); extern uint8_t ow_rom_search( uint8_t diff, uint8_t *id ); extern void ow_command( uint8_t command, uint8_t *id ); extern void ow_command_with_parasite_enable( uint8_t command, uint8_t *id ); extern void ow_parasite_enable( void ); extern void ow_parasite_disable( void ); extern uint8_t ow_input_pin_state( void ); #ifndef OW_ONE_BUS extern void ow_set_bus( volatile uint8_t* in, volatile uint8_t* out, volatile uint8_t* ddr, uint8_t pin ); #endif #ifdef __cplusplus } #endif #endif