시스템에 종종 시간이 필요하다.
시계를 넣는 것만으로 여러가지가 따라서 필요한 경우가 생긴다.
시계를 넣는 이유는
- 시간을 표시하거나,
- 년/월/일/요일 등의 시간기준으로 작업하거나,.. 의 경우인데
그러면,
- 시간을 셋팅하여야 하고, 중간에 사용자가 수정도 해야하고,
- 수정하려면 버튼도 있어야 하고(전자 탁상시계를 생각해보라..)
어찌되었건, 여기서는 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해놓고 사용해도 된다.
'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 |