![]() |
發(fā)布時間: 2023-7-21 07:31
正文摘要:最近在做手表,感覺大部分常見RTC要么太大,要么沒內(nèi)置晶振(誤差大) 前幾周找到了一款芯片,看上去還不錯: 24小時制時讀出數(shù)據(jù)時要把最高位置零(&0x7f),否則讀出數(shù)據(jù)是錯誤的··· 3、IIC的應(yīng)答要設(shè) ... |
man1234567 發(fā)表于 2023-7-24 11:13 謝謝指導(dǎo),之前寫的程序確實有忽疏 ![]() |
liixaofei5 發(fā)表于 2023-7-23 16:42 謝謝指導(dǎo),問題解決了 ![]() |
先找個任意的IIC器件,調(diào)試成功后再上這個東東。 目前,標(biāo)準(zhǔn)的IIC驅(qū)動是通用的,RTC也就是讀寫而已,沒多復(fù)雜,好像3231和1307的通用。 實驗證明很多器件用STC準(zhǔn)雙向I/O無需加上拉什么的也可以用。 也可以找廠家要DEMO,國產(chǎn)可參考“國芯”,說明書寫的是理想也可能是現(xiàn)實。 包括記得有些廠家宣傳可以免費給樣片,然而聯(lián)系過結(jié)果呵呵呵。 如果自己玩且對體積沒要求的話用8025的,幾毛錢的貨就非常好用。 還有就是,目前常見的8025、3231又大又蠢,甚至還有更過的內(nèi)置了電池,這個小體積的有“核心技術(shù)”了 ? 建議仔細(xì)查一遍,廠家不給例程自己還調(diào)不過就過了罷。 |
參與人數(shù) 1 | 黑幣 +5 | 收起 理由 |
---|---|---|
![]() | + 5 | 贊一個! |
if(Sys_Time.second==1)P0=0;else P0=1; 恰好能讀到1嗎?如果0秒后延時,2秒時才把時間讀回來,是不是就沒有反應(yīng)了?這個看你的延時多長時間,按照12MHz1T估算你的延時,應(yīng)該還是很多時候能進(jìn)入的,但是也容易出現(xiàn)非預(yù)期的情況。 這條語句的第二個問題,如果延時不影響,當(dāng)且僅當(dāng)second==1時點亮/熄滅,也就是60秒鐘點亮/滅1秒,這個是你預(yù)期的效果?我覺得不確定能不能看清楚這個閃爍 關(guān)于調(diào)試的方法,你是怎么感覺進(jìn)入死循環(huán)的,是測試出來的嗎?如果不是必須定位,找到出錯點,因為不能在線調(diào)試,可以注釋現(xiàn)在點亮指示燈的位置,在你覺得可疑的程序后面點亮指示燈,如果能點亮繼續(xù)找前面的程序。 |
參與人數(shù) 1 | 黑幣 +5 | 收起 理由 |
---|---|---|
![]() | + 5 |
Y_G_G 發(fā)表于 2023-7-22 17:13 好的,我試試 |
gqzjl 發(fā)表于 2023-7-22 12:03 已經(jīng)告訴你了,你上傳的代碼中,你的端口設(shè)置是對的,就不要再去找端口的毛病了 SDA和SCL都要加上拉10K電阻!!!!!!! IIC可以驅(qū)動其它的IIC器件也不一定是對的!!!!! 為什么要叫你用24c01,這個器件是標(biāo)準(zhǔn)的IIC,不支持高速IIC的,在它上面運行正常了,在SD3078就能正常了 不要duang!duang!duang!先寫一堆幾千行的代碼,然后就進(jìn)行驗證,那么多代碼,問題出在哪里你都不一定知道 "先驗證IIC從機地址對不對,先不管數(shù)據(jù)讀寫,先寫一個驗證代碼,向從機發(fā)送地址,看一下有沒有響應(yīng),可以用一個LED或者某個端口的電平來進(jìn)行驗證" 1,什么其它的代碼都不要,只要端口設(shè)置和IIC寫入一個字節(jié)函數(shù),外加一個延時函數(shù),延時可以設(shè)定為1秒2,P0^1=0;//LED這個端口先滅燈 3,寫入從機地址 0x64 4,等待IIC從機應(yīng)答,如果不應(yīng)答就是死循環(huán) 5,P0^1 = 1;// while(1); 6,燒錄驗證,不要仿真!!!!!!!!! 以上6步,從P.01端口的電平信號就可以知道從機是否能響應(yīng)主機的IIC信號了 低電平:說明從機沒有應(yīng)答 高電平:說明從機已經(jīng)應(yīng)答,寫字節(jié)的IIC代碼是對的 再不行,把你的所有代碼,原理圖上傳 還是不行,那就放棄吧 |
參與人數(shù) 1 | 黑幣 +5 | 收起 理由 |
---|---|---|
![]() | + 5 | 贊一個! |
夠長,把if判斷的值改成<20也一樣![]() ![]() ![]() |
看代碼,P0需要至少1分鐘才會有變化,測試時間夠長嗎 |
設(shè)置成開漏輸出,SDA接了上拉電阻后還是沒反應(yīng)![]() 是我寫的驅(qū)動有問題嗎 |
可以看看數(shù)據(jù)手冊多試試 |
gqzjl 發(fā)表于 2023-7-21 12:56 看手冊是有上拉電阻的,你可以接個上拉電阻試試。 像DS1302的IO口必須接上拉電阻,準(zhǔn)雙向IO口不行。 |
gqzjl 發(fā)表于 2023-7-21 12:56 時鐘和數(shù)據(jù)線必須要加10K的上拉電阻!!!!! 端口設(shè)置為標(biāo)準(zhǔn)雙向模式,也就是傳統(tǒng)的8051模式 |
lkc8210 發(fā)表于 2023-7-21 14:54 時序按照數(shù)據(jù)手冊寫的,為400k,我把它調(diào)到200k后也沒反應(yīng) ![]() |
注意電平轉(zhuǎn)換時間![]() |
Y_G_G 發(fā)表于 2023-7-21 12:32 單片機引腳設(shè)置為準(zhǔn)雙向輸出,可以嗎 |
1,先驗證IIC代碼對不對,可能用24C01的IIC代碼和功能來進(jìn)行驗證 2,先驗證IIC從機地址對不對,先不管數(shù)據(jù)讀寫,先寫一個驗證代碼,向從機發(fā)送地址,看一下有沒有響應(yīng),可以用一個LED或者某個端口的電平來進(jìn)行驗證 3,如果單片機沒有內(nèi)置上拉電阻,你就得在時鐘和數(shù)據(jù)端口上增加上拉電阻 |
Powered by 單片機教程網(wǎng)