[ARM] problem in i2c protocol

Status
Not open for further replies.

priyaembedded

Newbie level 1
Joined
Jun 9, 2015
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
18
hi
I am using keil and lpc2138 interface with 24lc512 eeprom by using i2c protocol but i am facing a problem below is my program


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include<lpc213x.h>
#define RS 16
#define RW 17
#define EN 18
 
void delay(unsigned int j)
{  unsigned int q,w;
    for(q=0;q<j;q++)
    for(w=0;w<j;w++);
}
 
void cmd(unsigned char a)
{
    IOCLR1=0xffffffff;
    IOCLR0=0xff<<8;
    IOSET0=a<<8;
    IOSET1=1<<18;
    delay(5);
    IOCLR1=1<<18;
 
}
void data(unsigned char b)
{
    IOCLR1=0xffffffff;
    IOSET1=1<<16;
    IOCLR0=0xff<<8;
    IOSET0=b<<8;
    IOSET1=1<<18;
    delay(5);
    IOCLR1=1<<18;
 
}
void wrte(unsigned int adr,unsigned char dat)
{
I2C0CONCLR=0x000000ff;
 
I2C0CONSET=1<<6;
 
I2C0CONSET=0x20;
while(I2C0STAT!=0x08);
 
I2C0CONCLR=0x28;
 
I2C0DAT=0xA0;
I2C0CONCLR=0x08;
while(I2C0STAT!=0x18);
 
I2C0DAT=(adr&0xff00)>>8;
I2C0CONCLR=0x08;
while(I2C0STAT!=0x28);
 
I2C0DAT=(adr&0x00ff);
I2C0CONCLR=0x08;
while(I2C0STAT!=0x28);
 
I2C0DAT=dat;
I2C0CONCLR=0x08;
while(I2C0STAT!=0x28);
I2C0CONCLR=0x08;
 
I2C0CONSET=1<<4;
delay(10);
}
 
 
lcd_init()
{
    cmd(0x38);
    cmd(0x0E);
}
 
void main()
{ unsigned int l;
IODIR0=0xffffffff;
IODIR1=0xffffffff;
PINSEL0=((1<<4)|(1<<6));
lcd_init();  
cmd(0x80);
data(0x39);
VPBDIV=0x01;
I2C0SCLL=80;
I2C0SCLH=70;
 
   wrte(0,10); cmd(0x94);data(0x38);
    while(1)
    {     
        I2C0CONCLR = 0x000000ff;
  
        I2C0CONSET=1<<6;
        I2C0CONSET=1<<5;
        while(I2C0STAT!=0x08);
        I2C0CONCLR=0x08;
 
        I2C0DAT=0xA0;
        while(I2C0STAT!=0x18);
        I2C0CONCLR=0x08;
 
        I2C0DAT=(0x00&0xff00)>>8;
        while(I2C0STAT!=0x28);
        I2C0CONCLR=0x08;
 
        I2C0DAT=0x00&0x00ff;
        while(I2C0STAT!=0x28);
        I2C0CONCLR=0x08;
         
        //I2C0CONSET=1<<5;
        //while(I2C0STAT!=0x10);
 
        I2C0DAT=0xA1;
        while(I2C0STAT!=0x18);
        I2C0CONCLR=0x08;
 
        l=I2C0DAT;
        while(I2C0STAT!=0x58);
        I2C0CONCLR=0x08;
        
        I2C0CONSET=1<<4;
 
        cmd(0xc0);
        data(48+((l/10)%10));
        data(48+(l%10));
    }
}





is there any mistake in the above program
 
Last edited by a moderator:

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…