Sei sulla pagina 1di 5

#include <16F690.

h>
//#include <16F877a.h>
#FUSES NOWDT
#FUSES HS
for PCD)

//No Watch Dog Timer


//High speed Osc (> 4mhz for PCM/PCH) (>10mhz

#FUSES NOPUT

//No Power Up Timer

#FUSES MCLR
#FUSES NOPROTECT

//Code not protected from reading

#FUSES NOCPD

//No EE protection

#FUSES NOBROWNOUT
#FUSES IESO
#FUSES FCMEN

//No brownout reset


//Internal External Switch Over mode enabled
//Fail-safe clock monitor enabled

//#FUSES NODEBUG

//No Debug mode for ICD

#use delay(clock=8000000)

#include <stdlib.h>
#include <math.h>
#include <stdio.h>

//#use
rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1
)

//#include <18F4520.h>
//#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_b7, rcv=PIN_b5)

//#use i2c(Master, sda=PIN_b4, scl=PIN_b6, FORCE_HW, RESTART_WDT)


#include <LCD_PORTA.c>

//#build (reset=0x1000, interrupt=0x1008)


addresses
//#org 0x0,0xfff {}

// new
// reserved space

//!#include "adxl345.c"
#include "adxl345.c"

#use i2c(master, sda=PIN_b4, scl=PIN_b6)

#define ACCEL_WRITE_ADDR 0XA6//0xA6 //0x53//0x3a


#define ACCEL_READ_ADDR 0XA7//0xA7 //0x53//0x3b
#define ACCEL_DATA_ADDR 0x32
#define ACCEL_PWRCTRL_ADDR 0x2d
#define ACCEL_MEASURE_MODE 0x08

unsigned int accel_data[6];


signed int16 x,y,z;
float x1,y1,z1,R;
float teta=0, gama=0,fi=0;

void main ()
{
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);

// initialize

while(true) {
lcd_init();

// Tell the accelerometer to wake up


i2c_start();
i2c_write(ACCEL_WRITE_ADDR);
i2c_write(0X31);
i2c_write(0X01);
i2c_stop();

I2C_start();
i2c_write(ACCEL_WRITE_ADDR);
i2c_write(ACCEL_PWRCTRL_ADDR);
i2c_write(ACCEL_MEASURE_MODE);
I2C_stop();

// Read data from the accel


i2c_start();
i2c_write(ACCEL_WRITE_ADDR);
i2c_write(ACCEL_DATA_ADDR);
i2c_start();
i2c_write(ACCEL_READ_ADDR);
accel_data[0] = i2c_read(); //x0
accel_data[1] = i2c_read(); //x1
accel_data[2] = i2c_read(); //y0
accel_data[3] = i2c_read(); //y1
accel_data[4] = i2c_read(); //z0

accel_data[5] = i2c_read(0); // z1, NACK on last read


i2c_stop();
//////////concatenar datos adxl345/////////////
//x=((accel_data[1]>>accel_data[0])) ;
//y=((accel_data[3]>>accel_data[2]));
//z=((accel_data[5]>>accel_data[4]));

x=make16(accel_data[1],accel_data[0]);
y=make16(accel_data[3],accel_data[2]);
z=make16(accel_data[5],accel_data[4]);

//x1=(float)x/256;
//y1=(float)y/256;
//z1=(float)z/256;
////////////////////////////////////////////////
//R=sqrt((x1*x1)+(y1*y1)+(z1*z1));

//teta=acos(x1/R);
//teta=teta * 57,296;

//gama=acos(y1/R);
//gama=gama*57,296;

//fi=acos(z1/R);
//fi=fi*57,296;

printf(lcd_putc,"\%ld %ld %ld ",x,y,z);


//printf(lcd_putc,"\n %f %f %f ",teta,gama,fi);
delay_ms(100);

}
}

Potrebbero piacerti anche