00001
00002
00003
00004
00005
00006
00007
00040 #ifndef __TWI_H
00041 #define __TWI_H
00042
00043 #include <util/twi.h>
00044
00045 #ifndef TWI_CAREFUL
00046 #define TWI_CAREFUL 1
00047 #endif
00048
00049 #ifndef TWI_BAUD
00050 #define TWI_BAUD 153600ul
00051 #endif
00052
00056 #define TWI_INIT() TWBR = (unsigned char)(F_CPU / (8ul * TWI_BAUD) - 2);
00057
00058 #if TWI_CAREFUL
00059
00063 #define TWI_STOP() \
00064 { \
00065 TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO); \
00066 while (TWCR & _BV(TWSTO)); \
00067 }
00068
00069 #else
00070
00071 #define TWI_STOP() TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWSTO)
00072
00073 #endif
00074
00075
00076
00077
00078 #define _TWI_ENABLE() TWCR = _BV(TWINT) | _BV(TWEN)
00079
00080
00081
00082
00083 #define _TWI_WAIT() while (!(TWCR & _BV(TWINT))) { }
00084
00093 uint8_t twi_start(uint8_t slave_addr, uint8_t write);
00094
00101 uint8_t twi_read(uint8_t *var);
00102
00109 uint8_t twi_write(uint8_t value);
00110
00111 #include "twi.c"
00112
00113 #endif