Pièce jointe « capitulo1e.sgml »
Téléchargement<sect1 id="i2c" xreflabel="i2c"> <title>Módulo I2C</title> <para>Autor : Pierre Launay </para> <para>per.launay en free.fr</para> <para>El bus I2C es un bus serie sincrono desarollado por Philips </para> <para> Descripción del bus I2C <ulink url="http://es.wikipedia.org/wiki/I2C">aqui</ulink> </para> <para> Entender el bus I2C <ulink url="http://robots-argentina.com.ar/Comunicacion_busI2C.htm">aqui</ulink> </para> <para>Aqui se muestran las funciones para poder trabajar con el módulo I2C Maestro Interno de los PIC. </para> <para> Antes de usar este módulos se debe definir la frecuencia usada con el comando. </para> <para> <screen> #define FOSC_HZ 4000000 #include <i2c.h> </screen> </para> <para>Se han realizado algunas definiciones como: </para> <para> <screen> #define I2C_400K i2c_find_frec(400000) //frecuencia de 400Khz #define I2C_100K i2c_find_frec(100000) //frecuencia de 100Khz #define I2C_40K i2c_find_frec(40000) //frecuencia de 40Khz #define I2C_10K i2c_find_frec(10000) //frecuencia de 10Khz #define I2C_4K i2c_find_frec(4000) //frecuencia de 4Khz #define I2C_1K i2c_find_frec(1000) //frecuencia de 1Khz </screen> </para> <para>Estas definiciones pueden ser usandas en la función init_i2c</para> <sect2 id="i2cinit" xreflabel="i2c_init"> <title>i2c_init</title> <para>Configura el puerto Serie sincrono</para> <screen> void i2c_init(unsigned char SPEED_I2C); </screen> <para>SPEED_I2C es el registro SSPADD, reloj_I2C=FOSC_HZ/(4*(SSPADD+1))</para> </sect2> <sect2 id="i2cwaitforidle" xreflabel="i2c_wait_for_idle"> <title>i2c_wait_for_idle</title> <para>Espera a que el bus esté libre </para> <screen> void i2c_wait_for_idle(void); </screen> </sect2> <sect2 id="i2cstart" xreflabel="i2c_start"> <title>i2c_start</title> <para>principio de trama, secuencia de inicio</para> <screen> void i2c_start(void); </screen> </sect2> <sect2 id="i2crestart" xreflabel="i2c_restart"> <title>i2c_restart</title> <para>Devolver una trama, fin de trama y principio de trama permite poner dos tramas para leer . Ver i2c_read() </para> <para>Ejemplo para leer las segundas en una trama :</para> <para> Principio de trama (start), escribir la dirección del circuito I2C, escribir el registro de las segundas, </para> <para> Devolver una trama (restart), escribir la dirección del circuito I2C, leer el registro de las segundas. </para> <para>fin de trama (stop)</para> <screen> void i2c_restart(void); </screen> </sect2> <sect2 id="i2cstop" xreflabel="i2c_stop"> <title>i2c_stop</title> <para>fin de trama, secuencia de parada</para> <screen> void i2c_stop(void); </screen> </sect2> <sect2 id="i2cdelay" xreflabel="i2c_delay"> <title>i2c_delay</title> <para>Tiempo de espera entre fin de trama y principio de trama >=4.7 us (Frecuencia Reloj SCL = 100KHz) </para> <screen> void i2c_stop(void); </screen> </sect2> <sect2 id="i2cackread" xreflabel="i2c_ack_read"> <title> i2c_ack_read </title> <para>recepción del pulso de reconocimiento</para> <screen> unsigned char i2c_ack_read (void); </screen> <para>"0" buena recepción</para> <para>"1" mala recepción</para> </sect2> <sect2 id="i2cackwrite" xreflabel="i2c_ack_write"> <title>i2c_ack_write</title> <para>emisión. del pulso de reconocimiento</para> <screen> void i2c_ack_write(unsigned char ack); </screen> <para>"0" la trama puede continuar</para> <para>"1" la trama se para</para> </sect2> <sect2 id="i2cwrite" xreflabel="i2c_write"> <title>i2c_write</title> <para> el maestro escribe en el esclavo el caracter c, el caracter c puede ser una dirección, una registro interno, un dato </para> <screen> void i2c_write(unsigned char c); </screen> </sect2> <sect2 id="i2cwritewithack" xreflabel="i2c_write_with_ack"> <title>i2c_write_with_ack</title> <para> El maestro escribe el caracter c en el esclavo y remite el reconocimiento (ack). </para> <para>Esta rutina junta i2c_write(c) y reception_ack()</para> <screen> unsigned char i2c_write_with_ack(unsigned char c) ; </screen> </sect2> <sect2 id="i2cread" xreflabel="i2c_read"> <title>i2c_read</title> <para>El maestro lee el caracter enviado por el esclavo</para> <screen> unsigned char i2c_read(void); </screen> </sect2> <sect2 id="i2creadwithack" xreflabel="i2c_read_with_ack"> <title>i2c_read_with_ack</title> <para>el maestro lee el caracter enviado por el esclavo y envia el reconocimiento (ack).</para> <screen> unsigned char i2c_read_with_ack(unsigned char ack); </screen> </sect2> <sect2 id="ejemploi2c" xreflabel="Ejemplo I2C"> <title>Ejemplo de Módulo I2C</title> <para> para compilar necesitas los siguientes comandos </para> <para> <screen> Ejemplo de compilacion : ./compila.sh ej_i2c 16f877a </screen> </para> <para> ej_i2c.c </para> <screen> int main(void) { return 0; } </screen> </sect2> </sect1>
Fichiers joints
Pour vous référer aux pièces jointes d'une page, utilisez attachment:filename, comme indiqué ci-dessous dans la liste de fichiers. N'utilisez pas l'URL du lien [get], car elle peut changer et donc être facilement cassée.Vous n'êtes pas autorisé à joindre un fichier à cette page.