2016-03-04 50 views
0

我正在構建一個小型嵌入式設備。我正在使用復位開關,當按下此按鈕超過5秒鐘時,整個設備應復位並清除所有數據並進入出廠復位狀態。 我知道該事件發生時要清除什麼。我想知道的是如何提出這個事件?我的意思是,當按下開關時,我如何設計系統才能知道5秒鐘過去了,現在我必須重置。我需要任何定時器和中斷的高級設計。有人可以幫幫我嗎?如何在小型嵌入式設備中編程工廠復位開關

+0

「高級別設計帶...中斷」Eh? – Lundin

+0

除了所有基於中斷的方法之外,甚至可以通過偶爾輪詢相關引腳來簡單地完成。假設你有一個節奏循環的方法(在許多/ [大多數?]嵌入式系統中很常見),你可以簡單地檢查引腳的狀態,當引腳處於'按鍵'狀態時遞增一個計數器,否則零它。增量後,如果計數器超過5秒的值,則可以調用事件。 (例如,如果您的步調循環設置爲每10ms循環一次,那麼在您調用重置事件之前,您的計數器將達到500)。 – tonypdmtr

+1

如果器件有一個,則將其直接連接到偏置的RESET引腳。如果您需要按重置,則不能保證軟件能夠正常工作。找到開關後面的開關,使用戶5秒鐘打開。如果器件沒有RESET引腳,請中斷其電源。 –

回答

0

取決於設備。但很少有粗略的想法:

可能的設備手冊可能會提到「按住開關」(關閉)產生的每秒中斷次數。如果你有這個值,你可以很容易地計算出5秒。

如果沒有,您也需要使用計時器。當您收到「開關關閉」的第一個中斷時,啓動定時器並計數5秒鐘。

請注意,您還應該監視「切換」,即「釋放切換」。我希望也會有中斷。 (可能具有不同的狀態值)。 所以當你看到這個中斷時,你應該打破上面的循環(你不應該重置)。

希望這會有所幫助。

0

中斷驅動表示低電平,接近硬件。中斷驅動的解決方案,例如裸金屬微控制器,看起來像這樣:

  • 像讀取任何其他開關時,取樣開關Ñ次數和濾除信號彈跳(和潛在的EMI)。
  • 啓動硬件計時器。通常片上定時器的速度太快,無法計算整個5秒鐘,即使您將其設置爲儘可能慢地運行。所以你需要設置一個預定標值的計時器,以便一個完整的計時器週期等於一個已知的時間單位(例如10毫秒)。
  • 定時器溢出後,觸發中斷。在中斷內部,檢查開關是否仍然按下,然後增加一個計數器。當計數器達到給定值時,執行復位代碼。例如,如果每10毫秒發生一次計時器溢出,則計數器應該計數到5000ms/10ms = 500.
  • 如果在時間過去之前釋放開關,請重置計數器並停止計時器中斷。
  • 如何重置系統是高度系統特定的。您應該將系統置於安全系統中,然後通過覆蓋存儲設置的NVM來覆蓋當前設置,其中某些默認出廠設置存儲在NVM中的其他位置。一旦完成,您應該強制處理器重置自身並重新啓動新設置。
  • 這意味着您必須擁有帶電子擦除NVM的系統。根據數據的大小,這個非易失性存儲器可以是單片機內部的數據閃存,也可以是一些外部存儲器電路。
0

檢測5S或30S超時可以使用中斷上的GPIO來完成。

如果使用rtos, 。中斷會將線程從睡眠中喚醒並禁用自身,

。所有線程都會計算開關按下的時間(您定期掃描開關)

如果開關被按下所需的時間在eeprom中設置一個全局變量/設置,這將觸發出廠重置功能

Else再次啓用中斷並使線程進入休眠狀態

。此外,使用去跳動電路來避免問題。

另外定義工廠重置是什麼意思?

有兩種在一般情況下,這兩種情況下我會使用EEPROM

  1. 恢復所有的配置幫助(成本低,更容易)

在這種情況下,你的分區的EEPROM,具有工作配置和工廠配置。您複製的工廠配置到工作分區和執行軟件復位

  • 恢復完整的固件(成本高,需要更多的測試) 這是更棘手,但可以幫助完成允許從eeprom/sd卡閃存的引導程序。
  • 在這種情況下,二進制固件blob也將與工廠配置一起存儲在安全分區中,並將用於閃存控制器閃存和配置。

    全部取決於大小/內存和成本。可以用更多的方式設計,我只是列出最簡單的例子。

    0

    我使用組合開關創建了一些產品。我通過使用一個電容來在器件的復位引腳上啓動一個復位脈衝(由某些電阻和/或二極管進行電流和電平限制)。在啓動時,我監視連接到開關的輸入引腳的狀態。我只是等待,直到這個引腳高度超過5秒。如果超時,我將配置重置爲默認值。 enter image description here

    相關問題