해보기는 했어?

오늘 안됐다고 포기하지 말고 용기내서 내일 다시 해 보자.

PIC

PIC16F1497 + I2C

롬돌이 2025. 4. 25. 18:35
반응형
반응형

PIC16F1497을 이용해서 MPU6050 자이로센서를 드라이빙하려고 했었다.
MSSP2를 이용해서 해 보려고 했으나 자꾸 ACK를 체크할 때 에러가 났었다.

일단은 프로젝트가 급해서 Port I/O를 이용해서 I2C를 구현했고, 데이터를 읽고 있다.

읽는 것은 정상적으로 되지만 약간 느리긴 하다.

 

프로젝트를 종료 시키고 난 뒤에 다시 도전해 봐야겠다.

 

Transmit는

- SDA를 출력으로 설정

- Clear SDA

- Clear SCL

- for(cnt  = 0x80;cnt != 0;cnt>>=1){
   if(TxData & cnt) Set SDA;
   else Clear SDA;
   Set SCL;
   Clear SCL;
}

SDA를 입력으로 설정

Set SCL

ACK 체크

Clear SCL

 

Receive는

- SDA를 입력으로 설정

- Clear SDA

- Clear SCL

- 수신 버퍼 클리어

- for(cnt  = 0x80;cnt != 0;cnt>>=1){

   수신버퍼 <<= 1;

   Set SCL;    <<==== 데이터 라인을 확인하기 전에 SCL을 셋 시켜야한다.
   if(SDA High?) 수신버퍼 |= 0x01;
  Clear SCL;

}

SDA를 출력으로 설정

SDA를 NACK으로 설정

set SCL

Clear SCL

 

뭐..이렇게 I/O를 이용해서 정리해 봤다.

 

일단 결과는 나오니까 테스트를 더 해봐야지.

반응형

'PIC' 카테고리의 다른 글

PIC16F1947 - I2C(Master Mode)  (0) 2025.04.16
PIC16F1947 - I2C  (0) 2025.01.20
PIC16F1947 - PWM(Enhanced Mode)  (1) 2025.01.16
PIC16F1947 - HFINTOSC  (0) 2025.01.16
PIC IO PORT Test  (0) 2022.12.23