AVR firmware

AVR DS1302 clock I2C 모듈

tchan 2019. 5. 2. 10:38

시스템에 종종 시간이 필요하다.

시계를 넣는 것만으로 여러가지가 따라서 필요한 경우가 생긴다.

 

시계를 넣는 이유는

- 시간을 표시하거나,

- 년/월/일/요일 등의 시간기준으로 작업하거나,.. 의 경우인데

 

그러면,

- 시간을 셋팅하여야 하고, 중간에 사용자가 수정도 해야하고,

- 수정하려면 버튼도 있어야 하고(전자 탁상시계를 생각해보라..)

 

어찌되었건, 여기서는 I2C 인터페이스를 사용하는 DS1302라는 시계칩 사용하는 모듈을 설명한다.

I2C는 SPI와 마찬가지로 MCU가 주변장치와 통신할 때 사용하는 통신 프로토콜중 하나이다.

 

SPI는 1:1 통신인데 반해

I2C는 1:N 통신이 가능한 프로토콜이다. 자세한건 궁금한사람이 찾아보도록 하고..

 

모듈 사용법은 아래와 같다.

#include "ds1302.h"
...
main() {
 ...
 ds1302_init();  // 초기화, 사용하는 포트 in/out direction 설정 및 칩 초기화..
 ...
 DS1302_date date;
 DS1302_time time;

 ds1302_get_date(&date);
 ds1302_get_time(&date);

 ds1302_set_date(date);
 ds1302_set_time(time);

코드에 보면 사용하는 아래와 같이 사용하는 포트를 지정해 놓았다. 회로에 맞게 수정하여야 한다.

#define PORT_DS1302_CE PORT(C,5)
#define PORT_DS1302_CLK PORT(C,6)
#define PORT_DS1302_DATA PORT(C,7)

원래 I2C는 두 선으로 통신하는데(CLK, DATA),

코드에는 칩의 enable신호가 추가되어 있다. CE 신호는 항상 enable해놓고 사용해도 된다.

ds1302.c
0.00MB
ds1302.h
0.00MB