지난번에 질문해서 cpufreq 관련 데이터를 얻을 수 있었습니다.
답변자님 감사드립니다.
제가 power manegement 관련해서 계속 프로젝트를 진행하다보니
s5pv210기판은 max17040배터리가 붙여져 있어서 세부적인 배터리용량을 얻을려며는
i2c인터페이스로 통신을 해야 하더라구요.
간단히 배터리 용량만 가져오면 될것이라는 생각에 read 함수를 짰는데 레지스터에 있는 값을 가져오질 못하더라구요...
i2c파일오픈 -> slave address설정 -> read register번호 전송 -> 데이터 읽기 순이 아닌가요??
int temp, file, ctl;
char filename[20];
int i;
unsigned char addr = 0x6c;
unsigned char m_addr = 0x02;
unsigned char l_addr = 0x03;
char buf[2];
int bufi[2];
//i2c장치파일 열기
sprintf(filename, "/dev/i2c-%d", 1);
file=open(filename, O_RDWR);
if( file < 0 )
{
close(file[i]);
temp=-1;
return temp;
}
//slave 주소 설정
ctl=ioctl(file, I2C_SLAVE, addr);
if( ctl < 0 )
{
temp=-2;
return temp;
}
//읽을 레지스터 위치 설정
write(file, &m_addr,1);
//데이터 읽기
read(file, &buf[0],1);
//읽을 레지스터 위치 설정
write(file, &l_addr,1);
//데이터 읽기
read(file, &bf[1],1);
bufi[0]=buf[0];
bufi[1]=buf[1];
// 4비트 이동 후 합침
temp=(bufi[0] << 4) + (buf[1]i >> 4);
return temp;