最近有弄一個微處理器來呈現排檔位置及檔位變化,因有做了一個切換閃爍的func,
判斷寫的不是很好! 因為當排檔位置變化時,它將會閃爍,
程式流程是無窮迴圈一直在判斷,當P檔切換成R檔時,
它將會從P 變成 R,且R會閃爍後保持呈現R,再一例,
從N切換成D4檔時,它會從 0 變成 d.,且d.會閃爍後呈現目前檔位 1,
但是有個問題,如果今天從P打到D4,如果排檔速度慢一點的話,
它會顯示且閃爍R或者0,又或者R接續0再緊接著d.變1,
因為機械結構供應MCU的訊號就是如此!
如果有排檔指示燈的話,可以自行測試結果也是如此!



這是單純的機械結構去觸發訊號給ECM,而MCU的訊號是從ECM跨接,
所以昨天實車測試時,已經發現此問題!
目前寫了一func去做判斷處理!!
當排檔切換時,先凍結300ms,當這300ms其間若訊號保持就呼叫閃爍的func,
反之這300ms內的訊號已經改變就變成了false ! 也代表回到最新的訊號判斷!

還有一個比較奇怪的問題,不知別的車系是否會有此問題!
就是K9訊號來源之疑問!?
當從R檔切換到P檔時,ATP所給的訊號是先給N檔訊號再給P檔訊號,
可是,P檔切換R檔時不會先給N,怪哉!
造成本來想做另一種風格的呈現卻無法套用!
本來想說排檔異位時不凍結300ms,而是一樣呈現該檔檔位,
而進閃爍的func時,會一直比對訊號(流程差異有改變),
就是在閃爍的同時還是保持著訊號比對,在這同時,
如果訊號持續理當跑完整個流程,反之訊號改變時,
馬上結束跳離並回到無窮迴圈裡頭,舉個例子:
排檔桿位置 P => R => N => D4,
檔位顯示器是 P => R => 0 => d.(閃爍) => 1(AT檔位)。
凍結300ms的是:
排檔桿位置 P => R => N => D4,
檔位顯示器是 P => d.(閃爍) => 1(AT檔位)。



兩者好像都各有優點...真難取捨!

弄著弄著,突然想到一張流程圖:



2010/10/03 00:00 更新


處理完大魔王問題後,可以來玩點花俏的功能!
之前想說開機時delay且把七段顯示器都pull low,讓共陽極的顯示器能全亮!
這樣有個好處,就是七段顯示器若有故障可以得知,不過,有人在問,那個 " 8. " ( 全亮 )是什麼用意!?
後來想想這樣人家會誤解,搞不好還以為MCU死當了...
原本的用意雖保有檢測功能.... 但是這樣一點也不高級,想來用步進馬達或是高級車儀表自我檢測的方式!
所以剛剛寫了幾行程式,來做為開機時循環檢測七段顯示器,
這樣看起來比較高級一點,且也比較不會死板或單調!

如下影片:

感覺是不是有比較高級一點點呢?


2010/10/05 00:15 更新



測試發電機的干擾問題:



花俏的開機上車實測1




花俏的開機上車實測2
arrow
arrow
    全站熱搜

    Nobody 發表在 痞客邦 留言(2) 人氣()