/********************************************************************* * * 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 #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__ */