小试DS1302时钟芯片
最近设计了一款板子,带有DS1302,打样回来焊接好,正好arduino开发板调一下,P板硬件连接有MCU、DS1302、电源插座等,这次单独调试DS1302,所以不使用外接电源给MCU供电,只使用arduino电源给DS1302回路供电,如下,P板其他的功能大家去猜吧我用导线引出了DS1302和arduino通信连接的三个脚:SCK、IO、RST。因为该导线属于硬导线,一碰就会掉或者接触不良,所以和arduino实物连接图没拍,底端蓝线就是电源,拿万用表量了10遍,确保和DS1302电源通路。大家一看程序也就对接线一目了然
程序随后,下载,通过串口查看,显示初始时间2000-00-00 00:00:00,然后每秒输出一次,但是第一次发现通过串口输入设置时间无反应,秒数超过60,输入格式是年月日时分秒星期数,星期日是1、星期六是7,这一次也没接纽扣电池
将接线重新插了一遍好了,时间设置输出正确
后面接上纽扣电池,再设置当天时间,中间输入是之前把星期数设置错了
下午再上电看到时间已被记忆,自动更新
程序见下
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
char buf;
char day;
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
void print_time()
{
Time t = rtc.time();
memset(day, 0, sizeof(day));
switch (t.day)
{
case 1: strcpy(day, "Sunday"); break;
case 2: strcpy(day, "Monday"); break;
case 3: strcpy(day, "Tuesday"); break;
case 4: strcpy(day, "Wednesday"); break;
case 5: strcpy(day, "Thursday"); break;
case 6: strcpy(day, "Friday"); break;
case 7: strcpy(day, "Saturday"); break;
}
snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t.yr, t.mon, t.date, t.hr, t.min, t.sec);
Serial.println(buf);
}
void setup()
{
Serial.begin(9600);
rtc.write_protect(false);
rtc.halt(false);
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
mark = 1;
}
if(mark == 1)
{
Serial.print("You inputed : ");
Serial.println(comdata);
for(int i = 0; i < comdata.length() ; i++)
{
if(comdata == ',' || comdata == 0x10 || comdata == 0x13)
{
j++;
}
else
{
numdata = numdata * 10 + (comdata - '0');
}
}
Time t(numdata, numdata, numdata, numdata, numdata, numdata, numdata);
rtc.time(t);
mark = 0;j=0;
comdata = String("");
for(int i = 0; i < 7 ; i++) numdata=0;
}
print_time();
delay(1000);
}
最后有两个问题提醒一下:
1、1302很挑晶振,只有6PF的那种才能用。由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。我的芯片是5块钱一片,调试完发现没有问题
2、有人说3.3V供电,Ds1302会正常工作,开始我先5V工作一段时间后断电转为3.3V,输出如下,之前分钟确实记忆了,但是日期又返回了初始化阶段
日期,且秒数会超过59,手册上说宽电压2.5V-5.5V是骗人的 我的IDE版本1.0,如果程序编译不过,请换版本 意图何在表示看不懂 单片机菜鸟 发表于 2016-12-17 20:49
意图何在表示看不懂
学习记录 :loveliness: 受教了:handshake
页:
[1]