[問題] LCD 當機率過高,餵狗(WDT)改善有限

看板ASM (組合語言)作者 (800IM)時間12年前 (2013/01/22 10:48), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串1/1
最近用 16*2的 LCD 練習 LCD 控制 整個程式很簡單 初始化 while(1) { 清除 秀第一行(字串1) 秀第二行(字串2) delay(); 清除 秀第一行(字串3) 秀第二行(字串4) delay(); } 這是我寫過當機率最高的程式了,很容易就可以看到 1.顯示亂字 2.停滯 寫入資料(LCD Enable負緣)的前後都有檢查忙碌旗標,所以應該不會有給LCD太少時間的問題, 使用WDT之後,停滯的現象有改善, 不過還是經常出現亂字, 請問可能是LCD function寫得不好嗎? 還是LCD硬體本身不夠好呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.165.222 ※ 編輯: deo2000 來自: 140.122.165.222 (01/22 10:48)

01/22 14:13, , 1F
主程式基本上是沒甚麼問題,可能原因就在LCD程式裡
01/22 14:13, 1F

01/22 14:56, , 2F
LCM的不穩通常都出自於讀寫訊號的誤解
01/22 14:56, 2F
這是我用的LCD讀寫函式 http://paste.ideaslabs.com/show/vRgZ6LKYoD ※ 編輯: deo2000 來自: 140.122.165.222 (01/22 15:51)

01/22 17:44, , 3F
應該先將E、RS、RW設完後將資料搬到LCDP,接著做delay
01/22 17:44, 3F

01/22 17:45, , 4F
再將E及RW設回來
01/22 17:45, 4F

01/22 17:51, , 5F
你的寫入指令函數在把資料丟出去後就接著E=0,LCD沒那麼
01/22 17:51, 5F

01/22 17:51, , 6F
快,至少延遲個50~70uS
01/22 17:51, 6F
LCD不是從Enable的負緣開始,讀入資料嗎? 還是說,負緣期間LCD尚未反應過來? ※ 編輯: deo2000 來自: 140.122.165.222 (01/22 18:20) 感謝cwl751005,照做後改善不少 ※ 編輯: deo2000 來自: 140.122.165.222 (01/22 19:10)
文章代碼(AID): #1G_VtqAl (ASM)
文章代碼(AID): #1G_VtqAl (ASM)