有些朋友可能會(huì)覺(jué)得開(kāi)關(guān)檢測(cè)對(duì)于每個(gè)嵌入式工程師來(lái)說(shuō)都是一個(gè)入門(mén)級(jí)別的問(wèn)題,那么切換檢測(cè)有什么意義呢? 首先,如果由于種種原因,您選擇的MCU沒(méi)有足夠的IO口來(lái)一次性處理這么多的開(kāi)關(guān)信號(hào),您應(yīng)該怎么辦? 其次,如何區(qū)分開(kāi)關(guān)的“動(dòng)作”和“狀態(tài)”? 壓力和彈跳的作用是短暫的,但這種狀態(tài)在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)保持不變。
如何區(qū)分和處理開(kāi)關(guān)檢測(cè)呢? 第三,是關(guān)于我們熟悉的過(guò)濾問(wèn)題,不應(yīng)該說(shuō)只有硬件濾波就能達(dá)到這樣的效果。 假設(shè)您的開(kāi)關(guān)信號(hào)性質(zhì)的性質(zhì)不同,需要的濾波時(shí)間也不同,那么如何統(tǒng)一處理它們呢?嵌入式工程師不是在山川中工作,而是在道場(chǎng)的螺絲殼中工作。 在日常工作中,工程師逐漸積累了豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。 例如,硬件不足可以與軟件拼湊在一起,內(nèi)存可以犧牲實(shí)時(shí)性,以換取時(shí)空。
在嵌入式開(kāi)關(guān)檢測(cè)設(shè)計(jì)中,MCU端口是一路開(kāi)關(guān)信號(hào)使用比計(jì)算機(jī)端口更多的端口的“并行處理方式”。 當(dāng)然,端口不足的解決方案是“并行轉(zhuǎn)串行”,以串行方式檢測(cè)開(kāi)關(guān)信號(hào)。
為了具體實(shí)現(xiàn),需要一個(gè)“多路開(kāi)關(guān)檢測(cè)接口芯片”,該芯片檢測(cè)多開(kāi)關(guān)體積的輸入信號(hào),并通過(guò)SPI將檢測(cè)到的開(kāi)關(guān)狀態(tài)發(fā)送給MCU。 這種方法可以顯著節(jié)省MCUIO端口資源,如檢測(cè)16路開(kāi)關(guān),并行方式只需要16個(gè)單片機(jī)的MCUIO端口,串行方式只需要一個(gè)SPI端口。