기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

센서를 하나 제어하려고 하는데요.
센서 값의 출력(low, high byte)이 나오질 않네요. ack 신호는 나오는데..ㅡ,.ㅡ
요센서는 다음과 같은 프로토콜로 동작합니다.

start(1 bit) + slave address(0x39 - 7bit) + wr(1 bit) + ack(1 bit) + command(0xD6) + ack(1 bit) + repeat start(1 bit) + slave address(0x39 - 7bit) + rd(1 bit) + ack(1 bit) + data byte1(low byte) + ack(1 bit) + data byte2(high byte) + ack(1 bit) + stop(1 bit)

오실로스코프로 출력파형을 측정해봐도 이상하게도 다른 신호들은 다 나오는데 data byte1과 data byte2만 출력이 안나오네요.
혹시 제 코드가 잘못 된건 아닌지요..ㅠㅠ

오실로 스코프 파형도 첨부합니다.


int main(int argc, char **argv)
{
        char filename[20];
        int file, i;

        unsigned char slave_addr = 0x72>>1;        //setting slave address
        unsigned char command[1];
        unsigned char receive[2];

        struct i2c_rdwr_ioctl_data         i2c_rwctl;
        struct i2c_msg                i2c_msgs[2];
        __s32 res;


        sprintf(filename, "/dev/i2c-0");

        //port open
        if( (file = open(filename, O_RDWR) ) < 0 )
        {
                printf("File Open Errorn");
                exit(1);
        }
        
        else
                printf("File Open Successn");

        //setting i2c device driver address
        if( ioctl(file, I2C_SLAVE, slave_addr) < 0 )
        {
                printf("Error : Slave Address...n");
                exit(1);
        }
        else
                printf("Success : Slave Address...n");

        printf("nSlave address : %xn", slave_addr);

        i = 0;        
        
        while(1)
        {        
                command[0] = 0xD6;

                //make read 1st packet
                i2c_msgs[0].flags = 0;
                i2c_msgs[0].addr = slave_addr;
                i2c_msgs[0].len = 1;
                i2c_msgs[0].buf = &command[0];

                //make read 2nd packet
                i2c_msgs[1].flags = I2C_M_RD;
                i2c_msgs[1].addr = slave_addr;
                i2c_msgs[1].len = 2;
                i2c_msgs[1].buf = &receive[0];

                i2c_rwctl.msgs = &i2c_msgs[0];
                i2c_rwctl.nmsgs = 2;

                res = ioctl(file, I2C_RDWR, &i2c_rwctl);
                
                printf("this is no start versionn");
                printf("%d is complete. res : %dn", i, res);

                printf("---------------------------n");
                printf("%dth read low byte : %Xn", i, receive[0]);
                printf("%dth read high byte : %Xn", i, receive[1]);
                printf("---------------------------n");

                sleep(1);
                i++;
        }

}

김승규

2008.02.26 20:30:42
*.247.144.149

바쁘시겠지만 혹시 시간나시면 잠깐만 봐주시면 안될까요? ^^;;;
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
1188 [완료] 결국 X를 해야하는군요...X, GTK 도움 부탁드립니다. [4] 임은향 2008-02-28 707
1187 aesop 3차보드 커널 이미지및 기타 자료 어디 있나요? [1] 김영수 2008-02-27 529
1186 [질문]Freeing init memory 이 후 멈추는 문제 2 [3] 박성우 2008-02-27 909
1185 [질문] 그래픽 드라이버에서 바이오스의 정보 참조? 김영삼 2008-02-27 1466
» i2c 요놈이 저를 괴롭혀요~~ [1] 김승규 2008-02-26 851
1183 [완료]혹시 MP2530F 3차 공제 계획이 있으신가요 ^^?? [3] 석헌영 2008-02-25 1172
1182 파일 업로드가 안됩니다. [1] 박준홍 2008-02-23 725
1181 [완료]리눅스 커널 2.4 -> 2.6 으로의 업그레이드에 관한 질문 [3] 문철민 2008-02-22 1015
1180 I2C read, write 방법 질문입니다. [4] 김유석 2008-02-22 3751
1179 [완료]I2C address 관련 질문입니다. [2] 김유석 2008-02-22 821
1178 [완료] USB 무선랜카드 관련 질문입니다. [6] 신재곤 2008-02-21 807
1177 [완료]uboot에서 2cycle column Address의 NAND인식 [3] 허남수 2008-02-21 723
1176 [해결] lowlevel_init.S(구 memsetup.s)에 질문입니다. [2] 조현철 2008-02-20 884
1175 WinCE에서 디버깅 모드... [2] 윤동열 2008-02-20 1074
1174 이솝 커널 2.6.13에서 죽는 현상 [4] 김정훈 2008-02-19 900
1173 [완료] aesop memory map 질문입니다. [3] 조현철 2008-02-19 588
1172 [완료]I2C test app 컴파일 에러 [5] 김유석 2008-02-16 874
1171 [완료|자답]USB device 장치 인식을 어떻게 하는지 궁금합니다. [3] 신철수 2008-02-16 1728
1170 [질문] 각종 코덱 License에 대하여. [2] 한영민 2008-02-15 1079
1169 mplayer 빌드옵션.. [8] 김형중 2008-02-15 1275

사용자 로그인