Hi,
I have a LPC2103 board. I need to read lis3lv02dq accelerometer by I2C.
I read the samples, I applied it in Keil and simulate with proteus but it isn’t working.
The I2C0Stat always 0xF8…
The sample is that; (Application notes.)
http://www.standardics.nxp.com/support/ … n10369.pdf
My circuit;
http://img440.imageshack.us/my.php?image=i2cfl1.jpg
But i2c is not working I can’t send the data to expander.
#include <LPC2103.h>
void I2C_ISR(void) __irq;
void ISR_8(void);
void ISR_18(void);
void ISR_28(void);
int main(){
MEMMAP = 0x02;
VICIntSelect = 0x00;
VICIntEnable = 0x200;
VICVectCntl0 = 0x29;
VICVectAddr0 = (unsigned long) I2C_ISR;
PINSEL0 = 0x50;
IODIR=0xF00000F0;
//IOSET=0xF0;
//
//I2C ayarlari
//
I2C0CONCLR = 0x6C;
I2C0CONSET = 0x40;
I2C0SCLH = 0xC;
I2C0SCLL = 0xD;
I2C0CONSET = 0x60;
while(1);
}
void I2C_ISR() __irq
{
int temp=0;
IOSET = 0xF0000000; //Never I see that!
temp=I2C0STAT;
switch(temp)
{
case 8:
ISR_8();
break;
case 24:
ISR_18();
break;
case 40:
ISR_28();
break;
default :
break;
}
VICVectAddr=0xFF;
}
void ISR_8(){
// Port Indicator
IOCLR=0x10;
// Slave address + write
I2C0ADR=0x74;
// Clear SI and Start flag
I2C0CONCLR=0x28;
// Port Indicator
IOSET=0x10;
}
void ISR_18(){
// Port Indicator
IOCLR=0x20;
// Data to be transmitted
I2C0DAT=0x55;
// clear SI
I2C0CONCLR=0x8;
// Port Indicator
//IOSET=0x20;
}
void ISR_28(){
// Port Indicator
IOCLR=0x80;
//Transmit stop c
I2C0CONSET=0x10;
//clear SI
I2C0CONCLR=0x8;
//Port Indicator
//IOSET=0x80;
}