i2c.h

Ir a la documentación de este archivo.
00001 #ifndef __I2C_H__
00002 #define __I2C_H__
00003 
00004 /*
00005   This code is free software; you can redistribute it and/or modify
00006    it under the terms of the GNU General Public License as published by
00007    the Free Software Foundation; either version 2, or (at your option)
00008    any later version.
00009    
00010    This code is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013    GNU General Public License for more details.
00014 */
00015 
00016 /* Entête  cabecera I2c  Pour PIC GCC Licence GPL Version 3 */
00029 #include <tipos.h>
00030 
00035 #ifndef FOSC_HZ
00036         #warning "FOSC_HZ macro must be defined to PIC frecuency (in hz)."
00037         #warning "Get default value of 20000000"
00038         #define FOSC_HZ 20000000 
00039 #endif
00040 
00041 #define i2c_find_frec(x)        (((FOSC_HZ-(2*x))/(4*x)))
00042 
00043 #define I2C_400K        i2c_find_frec(400000)
00044 #define I2C_100K        i2c_find_frec(100000)
00045 #define I2C_40K         i2c_find_frec(40000)
00046 #define I2C_10K         i2c_find_frec(10000)
00047 #define I2C_4K          i2c_find_frec(4000)
00048 #define I2C_1K          i2c_find_frec(1000)
00049 
00050 
00055 void i2c_wait_for_idle(void);   // attendre signaux au repos et pas d'écriture
00056 
00062 void i2c_init(unsigned char SPEED_I2C);         //initialisation I2c avec quartz de 4MHZ
00063 
00068 void i2c_start(void);           // début de trame
00069 
00077 void i2c_restart(void);         //relancer une trame
00078 
00084 void i2c_delay(void);           //delai après fin de trame
00085 
00090 void i2c_stop(void);            //Pour fin de trame
00091 
00098 void i2c_write(unsigned char c);// Pour écrire du maître vers esclave
00099 
00100 
00106 unsigned char i2c_read(void);   // Pour lecture transmission esclave vers maître
00107 
00114 unsigned char i2c_ack_read(void);       //Acquittement (0) ou non  lors de la réception 
00115 
00116 
00124 void i2c_ack_write(unsigned char ack);  // c=0 émission ACK, c=1 émission NACK pour finir trame
00125 
00132 unsigned char i2c_read_with_ack(unsigned char ack);// lire sur i2c mis dans c + émission ack ou nack (dans a)
00133 
00140 unsigned char i2c_write_with_ack(unsigned char c) ;
00141 
00142 #endif

Generado el Thu Jan 8 00:55:37 2009 para pic-gcc-library por  doxygen 1.5.1