Microchip PIC18F4550 的 USB 模組可以產生多個中斷條件。 要識別所有中斷源,和單片機一樣,此模組具有自己的中斷邏輯結構。 可以使用一組寄存器允許 USB 中斷,並用一組單獨的標誌寄存器來捕獲中斷事件。 在單片機中斷邏輯中,所有 USB中斷源都由一個 USB 中斷請求標誌位元 USBIF(PIR2<5>)來反映。
▲ 18F4550 USB 模組的中斷邏輯 |
▲可以使用中斷來處理USB 傳輸中的常規事件。USB幀傳輸中的某些常見事件和它們相應的中斷。 |
USB 中斷狀態寄存器(寄存器 UIR)包含每個 USB 中斷源的狀態標誌位元。 這些中斷源在 UIE 寄存器中都有對應的中斷允許位。 所有的 USB狀態標誌位元一起進行邏輯或運算,產生單片機中斷邏輯中的 USBIF 中斷標誌。一旦中斷標誌位元被 SIE 置 1,它就必須通過由軟體寫入0 來清零。標誌位元也可以由軟體置 1,這有助於固件調試。
▲USB 中斷狀態寄存器(UIR) |
USB 中斷允許寄存器(寄存器 UIE)包含 USB 狀態中斷源的允許位。 將這些位置 1 將分別允許 UIR 寄存器中的中斷源。此寄存器中的值僅影響中斷條件是否會被傳遞給單片機中斷邏輯。中斷條件會將標誌位置 1,從而可以對它們進行查詢和在不產生實際中斷的情況下提供中斷服務。
▲USB 中斷允許寄存器(UIE) |
USB 錯誤中斷狀態寄存器(寄存器 UEIR)包含 USB 外設中每個錯誤源的標誌位元。 這些中斷源在 UEIE 寄存器中都有對應的中斷允許位。 所有的 USB錯誤標誌位元一起進行邏輯或運算,在中斷邏輯的頂層產生 USB 錯誤中斷標誌(UERRIF)。在檢測到錯誤條件時,會立即將對應錯誤標誌位置 1。因此,中斷通常不會在權杖處理結束時產生。一旦 SIE 將中斷標誌位置1,就必須用軟體寫 0 才能將它清零。
▲USB 錯誤中斷狀態寄存器(UEIR) |
USB 錯誤中斷允許寄存器(寄存器 UEIE)包含 USB 錯誤中斷源的允許位。 將這些位中的任何位置1,都將把 UEIR 寄存器中相應的錯誤中斷源傳遞給中斷邏輯頂層的 UERR 位。同UIE 寄存器一樣,上述允許位僅影響中斷條件是否會被傳遞給單片機中斷邏輯。 中斷條件仍會將標誌位置 1,從而允許對標誌位元進行查詢或在並未產生實際中斷的情況下提供中斷服務。
▲USB 錯誤中斷允許寄存器(UEIE) |
ACTVIF 位元不能在 USB 模組從掛起狀態喚醒後立即被清零,也不能在 USB 模組處於掛起狀態時被清零。 在使用固件清零 ACTVIF 位元元元前,需要等待幾個時鐘週期以同步內部硬體狀態機。 在內部硬體達到同步前清零 ACTVIF 位的操作可能不起作用。 此外,如果 USB 模組使用 96 MHz PLL 時鐘源提供的時鐘,則清零 SUSPND 位後,USB 模塊可能會等待 96 MHz PLL 關閉後(而不是立即)才開始操作。
資料來源:Microchip 18F4550 系列數據手冊
2011 年 05 月 07 日 天氣報告
氣溫:27.2 度 @ 22:00
相對濕度:百分之86%
天氣:大致多雲
沒有留言:
張貼留言