熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2021-2-7 19:50
正文摘要:開起pwm(開燈) 后 18B20 數(shù)值出錯 請各位大師幫我看看 O(∩_∩)O謝謝 程序如下 #include <reg51.h> #include <temp.h> #include <stdio.h> ... |
你這個代碼居然有死等幾百us ,去看看我們 人人學(xué)會單片機(jī)的代碼 http://www.torrancerestoration.com/bbs/dpj-200968-1.html |
如果只是為了調(diào)燈的亮度,沒必要設(shè)置這么高頻率的PWM,中斷里運(yùn)行的語句越少越好。否則會破壞18b20讀寫時(shí)序而出錯。串口通訊也要把中斷方式改查詢方式為好。 |
xhaity 發(fā)表于 2021-2-8 13:07 文件錯誤 |
justinchill 發(fā)表于 2021-2-8 08:43 加上兩個空指令后 直接就錯了 |
18b20在讀寫時(shí),時(shí)序比較嚴(yán)格,中斷以后基本上都會打亂時(shí)序,讀數(shù)錯誤,利用crc校驗(yàn), 驗(yàn)證數(shù)據(jù),如果數(shù)據(jù)不正確,重新讀數(shù); |
我用hx711時(shí), 發(fā)現(xiàn)負(fù)數(shù)的移位有可能得出錯誤結(jié)果(估計(jì)是編譯器有差異), 使用一般加減乘除試試 |
有可能是你在Ds18b20ReadByte函數(shù)里總線釋放的時(shí)間有些短,適當(dāng)添加一點(diǎn)延時(shí)再試試,就是i++那里 |
當(dāng)PWM開啟時(shí),定時(shí)器中斷會擾亂18B20的延遲。 |
Powered by 單片機(jī)教程網(wǎng)