TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: sokoloko en 04 de Junio de 2011, 13:00:45
-
Hola!!!
Estoy entretenido en un proyecto para leer unos datos de los acelerometros del Wii motion Plus, (que se comunica a traves del i2c) para luego controlar un aeromodelo.
No pretendo inventar nada, el codigo para mas o menos de lo que quiero, se encuentra en esta pag LINK (http://www.aeromodelismovirtual.com/showthread.php?t=5410).
Lo que si quiero es adaptar ese codigo al PIC que conozco, pues empeze con el 16f84 y ahora estoy con el 16f88. El caso es que tengo todo funcionando (a parte de leer esos datos, quiero mover unos servos, trabajar con un LCD...) menos el tema de la lectura de datos.
El codigo que no entiendo es:
#define I2C_DATA_WRITE LATAbits.LATA2 // Register select
#define I2C_DATA_READ PORTAbits.RA2 // Register select
#define I2C_DATA_TRIS TRISAbits.TRISA2 // TRIS
#define I2C_CLK LATAbits.LATA0 // Register select
#define I2C_CLK_TRIS TRISAbits.TRISA0 // TRIS
Por que por mis conocimientos, una entrada no tiene sentido que se use de tres formas distintas, si yo pongo esto:
#define I2C_DATA_WRITE PIN_A1 // DATA I2C
#define I2C_DATA_READ PIN_A1 //
#define I2C_DATA_TRIS PIN_A1 //
#define I2C_CLK PIN_A0 // RELOJ I2C
#define I2C_CLK_TRIS PIN_A0 //
Logicamente no me funciona......... :(
Algun consejo??
-
Hola sokoloko podes mirar este hilo.
Saludos
Jukinch
http://www.todopic.com.ar/foros/index.php?topic=17785.0
-
Lo que estas haciendo es en realidad traducir de C18 a CCS
En C18 se definen por separado la entrada la salida y el tris, asignanole un nombre mediante #define para hacerlo mas fácil.
por ejemplo , si quieres encender el pin pones
LATAbits.LATA2 =1;
si quieres saber que valor tiene es
valor = PORTAbits.RA2;
para ponerlo como entrada a o salida
TRISAbits.TRISA2= 1;
TRISAbits.TRISA2= 0;
Espero que te sirva.
Un saludo
-
Perfecto, muchas gracias por las aclaraciones, osea q si yo lo cammbio por esto:
#define I2C_DATA PIN_A1 // DATA I2C
#define I2C_CLK PIN_A0 // RELOJ I2C
Y dejo solo estas dos entrada en el resto del codigo, ademas de no definir el puerto A ni como entrada ni como salida podria funcionar, no???
Gracias