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

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

 

시계를 넣는 이유는

- 시간을 표시하거나,

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

 

그러면,

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

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

 

어찌되었건, 여기서는 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

'AVR firmware' 카테고리의 다른 글

AVR FND display 모듈  (0) 2019.05.03
AVR char lcd (2x16) 4bits 모듈  (0) 2019.05.02
AVR DAC7512 SPI 모듈  (0) 2019.05.01
AVR printf, scanf 사용하기  (0) 2019.05.01
AVR 타이머 유틸리티  (0) 2019.05.01

+ Recent posts