找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2174|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

DS1302與AVR小系統(tǒng)(Atmega16)一起使用時(shí)遇到的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-3-4 14:14 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  本次需要實(shí)現(xiàn)的是一個(gè)基于Atmega16的時(shí)鐘系統(tǒng)。由于要求設(shè)計(jì)電路(競(jìng)賽用),所以選用了ATmega16小系統(tǒng)、DS1302時(shí)鐘模塊、1602液晶模塊。這三者用排線(杜邦線)連接起來。后期可以把DS1302和1602焊接到萬用板上。   程序調(diào)試過程中遇到了很多問題,最嚴(yán)重的是DS1302不工作。怎么個(gè)不工作法呢?向DS1302的31字節(jié)的RAM寫一個(gè)字節(jié)的數(shù)據(jù)(比如0xA5),再讀,發(fā)現(xiàn)與寫的不一致(不是0x00就是0xFF)。程序如下:



   別說這種相對(duì)復(fù)雜的寫了,即便我寫一個(gè)控制寄存器,再讀,內(nèi)容都不一樣(見下面兩句代碼,向C_WP寫入0x80,讀出的exist的值不是00就是FF)




   我操縱DS1302的代碼,之前在另一塊ATmega16學(xué)習(xí)版上已經(jīng)調(diào)試通過,只不過那塊板子上的DS1302是焊接到PCB板的,而不是用杜邦線連接的。所以一開始,我懷疑自己的DS1302壞了。于是我又購(gòu)買了不同商家的DS1302若干,結(jié)果都不能工作。

   郁悶得很,上網(wǎng)搜索各種資料,都沒發(fā)現(xiàn)明確的答復(fù)。有說DS1302晶振不啟振的,有說要加電容或電阻的。還有個(gè)人提問,他的DS1302怎么在ATmega的某些引腳上不工作。這個(gè)提問給了我啟發(fā)。我原來是把DS1302的三個(gè)口(CLK,DATA,RST)連接到了PB和PC口,F(xiàn)在,我把它們連到了PA0,PA1,PA2。再跑程序,發(fā)現(xiàn)DS1302正常工作了!!

   接下來就是用1602液晶顯示DS1302存儲(chǔ)的當(dāng)前時(shí)間。我的代碼中,1602使用了PB、PA和PD口。我這樣連接上1602,發(fā)現(xiàn)液晶沒有顯示。通過剛才的調(diào)試,我猜可能DS1302也用PA口,影響了液晶,所以我把液晶用PA口的引腳(VL,調(diào)節(jié)背光的)移到了PC口,但也不行。最后我把這個(gè)口遠(yuǎn)遠(yuǎn)地移到了小系統(tǒng)上我不用的SPI下載口的一個(gè)引腳,結(jié)果液晶正常顯示了!也就是說,DS1302用了PA口,1602液晶用了PB、PD口,以及SPI口的一個(gè)小引腳。

   這樣看來,ATmega小系統(tǒng)的PA、PB、PC、PD口的帶輸出設(shè)備的能力不同?還會(huì)相互干擾?這是我第一次用單片機(jī)搭建電路,不知理解是否正確,但從表面現(xiàn)象來看就像是這樣。這已經(jīng)超出了我從書本上學(xué)來的知識(shí)的范疇,汗!

    還有個(gè)小插曲,我的AVR小系統(tǒng)有兩個(gè)VCC和GND。但DS1302要用1個(gè)GND,1602液晶要用2個(gè)GND,這樣加起來是3,超過了小系統(tǒng)引出的GND數(shù)目。之前我為了解決這個(gè)問題,又買了另一個(gè)商家的小系統(tǒng),但不好用還生銹。這次也是靈光乍現(xiàn),我看SPI口的電路圖,里面有4個(gè)GND,真是太好了。于是我用了其中一個(gè)GND給DS1302模塊。結(jié)果工作正常。雖然占用了SPI口,但我還可以用Jtag口,不影響下載。
  發(fā)圖一張做紀(jì)念。也希望這篇文章能幫助有需要的人。





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表