123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /*********************************************************************
- *
- * i2c master library for Fraise pic18f device
- *********************************************************************
- * Author Date Comment
- *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Antoine Rousseau october 2013 adapted from Vangelis Rokas's sdcc i2c lib.
- ********************************************************************/
- /*
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
- # MA 02110-1301, USA.
- */
- #ifndef __I2CM_H__
- #define __I2CM_H__
- #include <config.h>
- #define _I2CPARAM_SPEC __data
- /* I2C modes of operation */
- #define I2C_SLAVE10B_INT 0x0f
- #define I2C_SLAVE7B_INT 0x0e
- #define I2C_SLAVE_IDLE 0x0b
- #define I2C_MASTER 0x08
- #define I2C_SLAVE10B 0x07
- #define I2C_SLAVE7B 0x06
- /* slew rate control */
- #define I2C_SLEW_OFF 0x80
- #define I2C_SLEW_ON 0x00
- /* stop */
- void i2cm_stop(void);
- /* start */
- void i2cm_start(void);
- /* restart */
- void i2cm_restart(void);
- /* not acknowledge */
- void i2cm_nack(void);
- /* acknowledge */
- void i2cm_ack(void);
- /* wait until I2C goes idle */
- void i2cm_idle(void);
- /* is character ready in I2C buffer ?? */
- unsigned char i2cm_drdy(void);
- /* read a character from I2C module */
- unsigned char i2cm_readchar(void);
- /* read a string from I2C module */
- char i2cm_readstr(_I2CPARAM_SPEC unsigned char *ptr, unsigned char len);
- /* write a character to I2C module */
- char i2cm_writechar(unsigned char dat);
- /* write a string to I2C module */
- char i2cm_writestr(unsigned char *ptr);
- /* begin communication to I2C module */
- void i2cm_begin(unsigned char address, unsigned char doread);
- /* configure I2C port for operation */
- void i2cm_init(unsigned char mode, unsigned char slew, unsigned char addr_brd);
- void i2cm_close(void);
- #endif /* __I2C_H__ */
|