• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2   twi.h - TWI/I2C library for Wiring & Arduino
3   Copyright (c) 2006 Nicholas Zambetti.  All right reserved.
4 
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9 
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14 
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18 */
19 
20 #ifndef twi_h
21 #define twi_h
22 
23   #include <inttypes.h>
24 
25   //#define ATMEGA8
26 
27   #ifndef CPU_FREQ
28   #define CPU_FREQ 16000000L
29   #endif
30 
31   #ifndef TWI_FREQ
32   #define TWI_FREQ 100000L
33   #endif
34 
35   #ifndef TWI_BUFFER_LENGTH
36   #define TWI_BUFFER_LENGTH 32
37   #endif
38 
39   #define TWI_READY 0
40   #define TWI_MRX   1
41   #define TWI_MTX   2
42   #define TWI_SRX   3
43   #define TWI_STX   4
44 
45   void twi_init(void);
46   void twi_setAddress(uint8_t);
47   uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t);
48   uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t);
49   uint8_t twi_transmit(uint8_t*, uint8_t);
50   void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) );
51   void twi_attachSlaveTxEvent( void (*)(void) );
52   void twi_reply(uint8_t);
53   void twi_stop(void);
54   void twi_releaseBus(void);
55 
56 #endif
57 
58