2011年3月10日 星期四

省電模式與喚醒3 ,Self wake-up from deep sleep mode

圖1


第二個範例從Deep Sleep mode中自動喚醒.不需要外部訊號喚醒.
所以這個實驗就不需要另外diy,單就只有LPCXpresso也可以作.
方式很簡單,直接import範例中所含的 LPC1100 self wakeup.zip

編譯,並使用Debug "wake-up"方式將code download至LPC1114上,接著停止Debug
之後將LPCXpresso斷電在上電(實際動作應該是將USB拔掉再接上)
接著就可以觀察到LED2會閃爍,閃爍(LED2 OFF兩短,一長).

自動喚醒的概念是 LPC1114進入Deep Sleep Mode前先將main clock選為wdt clock,並設定16bit timer0 的match0 內部設定對應IO(PIO0_8).
Wakeup interrupt 對應至PIO0_8 .
進入Deep Sleep Mode後等timer(由WDT clk供應)時間到 PIO0_8為High,觸發wakeup中斷.進入WAKEUP_IRQHandler而喚醒MCU進入active mode.

可以用示波器觀察 (圖1) PIO0_8(印刷:MISO)與PIO0_7(印刷:PIO0.7)
上方波形(綠)為PIO0_8,藍色為PIO0_7.
PIO0_8 High時候表示為MCU為Active Mode. 轉為Low的時候就進入Deep Sleep Mode.
再轉為High時則為Timer0 match0 進而trigger wakeup interrupt.
接著藍色波形 PIO0_7 變為High 由 WAKEUP_IRQHandler 內控制LED2進行High->Low->High->Low. 離開WAKEUP_IRQHandler,接著maim中的while loop執行,進入Deep Sleep Mode設定.

圖2

另外量測喚醒至執行程式所需花的時間.
示波器trigger PIO0_8 rising edge可觀察到 Timer0 match0 high至WAKEUP_IRQHandler中第一次將PIO0_7為HIGH(LED2 ON).以量測喚醒至執行程式所需花的時間.


如圖所得8.46ms與AN中7.0ms有些差距.


0 留言:

張貼留言

Related Posts Plugin for WordPress, Blogger...