2탄에 이어 이제 mpu6050을 활용하여 who am i를 활성화해 보고 다음 4탄에서는 mpu6050이 갖는 가속도, 각속도, 온도 값도 확인해 보겠다.
Who Am I
이 레지스터는 모듈 장치에 정체성을 증명하는 데 사용된다고 한다. 또한 AD0 pin에 의해서 고유주소값이 변경될 수도 있다고 하는데 mpu6050을 두 개 사용할 때 AD0 pin을 통해 0x68 0x69와 같이 주소를 두 개로 할 수 있는듯하다. 일단 초기 value는 0x68이라고 하고 내 모듈도 0x68이다. read only 타입으로 읽기만 가능한 레지스터이다.
main.c
다음과 같이 who am i 값을 통해 i2c통신이 제대로 되는지 확인을 위한 변수를 지정했다.(가속도 각속도는 4탄에서 다룰 거임)
코드는 정말 간단하다. who_am_i = i2c_read(0x68,0x75)로 0x68은 mpu6050 모듈에 주소이고 0x75는 mpu6050 레지스터에 주소값이다.(위 그림 4.32 register 참조) 그 이후 uart통신으로 터미널창에 who_am_i 변수에 어떤 값이 들어왔는지 확인해 봤을 때 올바른 값이 들어왔다면 통신이 제대로 되고 있다는 걸 확인할 수 있다.
uart_transmit 함수를 while문으로 옮겨 값을 확인해 보니... 아스키 값으로 h, hex값으로 0x68이 나온 걸 확인할 수 있다.
-->> 모듈 mpu6050 주소는 0x68이 맞으므로 제대로 통신이 되고 있다는 것을 확인할 수 있다.
'AVR 임베디드 학습 > AVR 이론 공부' 카테고리의 다른 글
ATmega328 i2c통신 학습하기(feat.mpu6050)(4탄) (0) | 2024.11.03 |
---|---|
ATmega328 i2c통신 학습하기(feat.mpu6050)(2탄) (3) | 2024.10.10 |
ATmega328 i2c통신 학습하기(feat.mpu6050)(1탄) (0) | 2024.10.06 |