|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
用過DS1302的大蝦請來指教一下!! |
作者:TragicJun 欄目:技術(shù)交流 |
現(xiàn)在我能夠成功讀寫內(nèi)部時(shí)鐘寄存器,但是時(shí)鐘始終走不起來。我已經(jīng)設(shè)置了秒寄存器bit7為0來啟動了,但是過幾秒去讀數(shù)還是原來設(shè)置的值,請問有誰遇到過嗎,大概是哪些原因會引起呢? |
2樓: | >>參與討論 |
作者: chenlung 于 2006/11/20 8:58:00 發(fā)布:
建議首先看下晶振有沒起振。 一般情況下能測到晶振起振,時(shí)間就開始走了。 |
3樓: | >>參與討論 |
作者: 揚(yáng)欣電子 于 2006/11/20 10:58:00 發(fā)布:
先測晶振 再有就是你能保證你的讀寫程序?qū)懙恼_嗎? |
4樓: | >>參與討論 |
作者: TragicJun 于 2006/11/20 12:45:00 發(fā)布:
讀寫程序應(yīng)該是問題不大 讀寫程序應(yīng)該是問題不大,因?yàn)榭梢哉_讀寫時(shí)鐘,只是數(shù)據(jù)不變!我去測測晶振吧! |
5樓: | >>參與討論 |
作者: dai_weis 于 2006/11/20 13:54:00 發(fā)布:
安裝后被電池了么? DS1302有個(gè)要求,在電源在2.0V(或者2.5V)我記不住了,要求RST必須為低電平,如果沒有后備電源,系統(tǒng)上電那個(gè)引腳是高電平,好像和這個(gè)有關(guān),斷電,裝電池看看 |
6樓: | >>參與討論 |
作者: TragicJun 于 2006/11/20 23:47:00 發(fā)布:
應(yīng)該在Vcc1端安裝充電電池嗎 涓流充電,看資料上說是Vcc1端可以涓流充電,是不是說要接個(gè)可充電電池,然后工作時(shí)可以充電,當(dāng)主電源斷電時(shí)這個(gè)平時(shí)充滿點(diǎn)的后備電池就發(fā)揮作用了啊 |
7樓: | >>參與討論 |
作者: TragicJun 于 2006/11/20 23:51:00 發(fā)布:
還有今天測試晶振問題! 另外我今天是在直接測試DS1302的晶振,沒有下載程序運(yùn)行使秒寄存器啟動晶振,這樣測試到晶振無任何波形,會不會是因?yàn)闆]有啟動晶振的原因呢?? |
8樓: | >>參與討論 |
作者: likee 于 2006/11/21 1:09:00 發(fā)布:
后備電池不用也可以,用也可以 兩個(gè)電池相關(guān)0.5V的時(shí)候就用大的那個(gè),反之就用主電源?磥聿皇蔷д裼袉栴}就是程序有問題了。 |
9樓: | >>參與討論 |
作者: lzh08 于 2006/11/21 15:54:00 發(fā)布:
我的程序,實(shí)際使用通過 /*ds1302.h*/ #ifndef _DS1302_H #define _DS1302_H #ifndef __C8051F020_H__ #include <c8051f020.h> #endif #ifndef _MACRO_H #include "macro.h" #endif sbit ACC0 = ACC ^ 0; sbit ACC7 = ACC ^ 7; sbit DSRST = P2 ^ 7; //ʱÖÓ¸´Î»ÐźÅÏß sbit DSDIO = P2 ^ 6; //ʱÖÓÊý¾ÝÏß sbit DSCLK = P2 ^ 5; //ʱÖÓʱÖÓÏß #define SEC_WRI 0x80 #define SEC_READ 0x81 #define MIN_WRI 0x82 #define MIN_READ 0x83 #define HR_WRI 0x84 #define HR_READ 0x85 #define DATE_WRI 0x86 #define DATE_READ 0x87 #define MON_WRI 0x88 #define MON_READ 0x89 #define WEEK_WRI 0x8A #define WEEK_READ 0x8B #define YEAR_WRI 0x8C #define YEAR_READ 0x8D #define WRI_PROTECT_WRI 0x8E #define WRI_PROTECT_READ 0x8F #define CLOCK_MULTI_BYTE_WRI 0xBE #define CLOCK_MULTI_BYTE_READ 0xBF #define RAM_MULTI_BYTE_WRI 0xFE #define RAM_MULTI_BYTE_READ 0xFF #define DSRSTLOW() DSRST = 0; _nop_(); _nop_(); _nop_(); _nop_();\ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); \ _nop_(); _nop_(); _nop_(); _nop_(); _nop_() #define DSRSTHIGH() DSRST = 1; _nop_(); _nop_(); _nop_(); _nop_();\ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); \ _nop_(); _nop_(); _nop_(); _nop_(); _nop_() #define DSCLKLOW() DSCLK = 0; _nop_(); _nop_(); _nop_(); _nop_();\ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); \ _nop_(); _nop_(); _nop_(); _nop_(); _nop_() #define DSCLKHIGH() DSCLK = 1; _nop_(); _nop_(); _nop_(); _nop_();\ _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); \ _nop_(); _nop_(); _nop_(); _nop_(); _nop_() extern uchar xdata dsWriDsI ; extern uchar xdata dsWriCh ; extern uchar xdata dsReadDsK ; extern uchar xdata dsReadCl ; extern uchar xdata ds1302SettimerBuffer[]; extern uchar xdata ds1302GettimerBuffer[]; void WriDs(uchar addr, uchar dat); uchar ReadDs(uchar addr); void SetTimer(uchar *pSetTimer); void GetTimer(uchar *pGetTimer); void OscEnable(); void Osc24(); void ChargeEnable(); void DsInit(); #endif /*ds1302.c*/ #include "DS1302.h" #include <intrins.h> /******************************************************************** * * Ãû³Æ: OscEnable * ˵Ã÷: * ¹¦ÄÜ: ʱÖÓֹͣλʹÄÜ * call: v_W1302 * in: no * return:no *********************************************************************/ void OscEnable() { WriDs(0x80,0); } /******************************************************************** * * NAME: Osc24 * state: * fun: use 24 hour record * call: v_W1302 * in: no * return:no *********************************************************************/ void Osc24() { WriDs(0x84,0); } /******************************************************************** * * Ãû³Æ: ChargeEnable * state: * fun : ä¸Á÷³äµçʹÄÜ * µ÷ÓÃ: v_W1302 * in: no * ·µ»ØÖµ: ÎÞ *********************************************************************/ void ChargeEnable() { WriDs(0x90,0xa5); /*ä¸Á÷³äµç£¬Ò»¸ö¶þ¼«¹Ü£¬Ò»¸ö2kµÄµç×è*/ } /******************************************************************** * * Ãû³Æ: DsInit() * ˵Ã÷: * fun : ʱÖÓоƬ³õʼ»¯ * call: No * in: no * return: n |
10樓: | >>參與討論 |
作者: TragicJun 于 2006/11/21 16:53:00 發(fā)布:
To:lzh08 我的程序跟你差不多的,現(xiàn)在主要問題是晶振振不起來,不知道該怎么辦?? |
11樓: | >>參與討論 |
作者: lzh08 于 2006/11/21 20:08:00 發(fā)布:
void DsInit()也一樣么 void DsInit() { //T_CLK = 0; //T_RST = 0; //_nop_(); //T_RST = 1; DSCLKLOW(); DSRSTLOW(); DSRSTHIGH(); OscEnable(); /* ʱÖÓֹͣλʹÄÜ */ WriDs(0x8e,0x0); /* ÔÊÐíдÈëµ¥¸öÊý¾Ý×Ö½Ú */ ChargeEnable(); /* ³äµçʹÄÜ */ Osc24(); } 這個(gè)也一樣么?我記得里面有一個(gè)寄存器必須要設(shè)置,否則時(shí)鐘不走 |
12樓: | >>參與討論 |
作者: TragicJun 于 2006/11/22 1:10:00 發(fā)布:
是的 是秒寄存器的bit7要設(shè)置為0才會走時(shí),但是我的初始化里也設(shè)置了。! |
13樓: | >>參與討論 |
作者: lzh08 于 2006/11/22 8:36:00 發(fā)布:
?那就怪了,硬件有問題吧,或者換個(gè)芯片 |
|
|
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號 |