Upload
evania
View
57
Download
1
Embed Size (px)
DESCRIPTION
嵌入式系統進階. 嵌入式系統的設計方式. 輪詢的設計方式 CPU 不斷測試資料是否已經進入,忙碌等待 (Busy Waiting), 無窮迴圈 . 大無窮迴圈的設計方式 CPU 不斷測試資料是否已經進入,但盡量不因單一裝置而卡住,使用很多 if 測試狀態旗標 中斷向量的設計方式 週邊設備會自動回報給 CPU 後,直接跳到中斷常式中執行. 輪詢的設計方式. int main(void) { int i; irq_init(); Initial_Creator(); enable_irq(); while (1) - PowerPoint PPT Presentation
Citation preview
嵌入式系統的設計方式 輪詢的設計方式
CPU 不斷測試資料是否已經進入,忙碌等待 (Busy Waiting), 無窮迴圈 .
大無窮迴圈的設計方式 CPU 不斷測試資料是否已經進入,但盡量不因單一裝置而
卡住,使用很多 if 測試狀態旗標
中斷向量的設計方式 週邊設備會自動回報給 CPU 後,直接跳到中斷常式中執
行 .2 陳鍾誠 - 112/04/20
輪詢的設計方式
3 陳鍾誠 - 112/04/20
int main(void){ int i; irq_init(); Initial_Creator(); enable_irq();
while (1) { UC ch; while (KEYPAD_chk_key(&ch) == OK) KEYPAD_get_key(&ch); LCD_printf("key=%d\n", ch); } disable_irq(); return(0);}
大無窮迴圈的設計方式
4 陳鍾誠 - 112/04/20
int main(void){ int i; irq_init(); Initial_Creator(); enable_irq();
while (1) { UC ch; if (KEYPAD_chk_key(&ch) == OK) { KEYPAD_get_key(&ch); LCD_printf("key=%d\n", ch); } // if (....) } disable_irq(); return(0);}
中斷向量的設計方式
5 陳鍾誠 - 112/04/20
void Initial_TIMER0(void){ rTCFG0 = (rTCFG0 & ~(0xff)) | SYS_TIMER01_PRESCALER; rTCFG1 = (rTCFG1 &~(0xf)) | (SYS_TIMER0_MUX); rTCNTB0 = (TIMER0_RESCHED_PERIOD*PCLK)/ ((SYS_TIMER01_PRESCALER +1)*(SYS_TIMER1_DIVIDER)*1000); rTCMPB0 = 0; rTCON = rTCON & ~(0xffffff) | 0x6aaa0a; rTCON = rTCON & ~(0xffffff) | 0x599909;
tick_on = UM; tick_ms = 0; tick_sec = 0; tick_min = 0; tick_hour = 0; register_irq(IRQ_TIMER0, TIMER0_ISR, "Timer ISR"); ClearPending(BIT_TIMER0); EnableInterrupt(BIT_TIMER0);}
6 陳鍾誠 - 112/04/20
參考文獻 Computer Organization, 5/e
Carl Hamacher, Zvonko Vranesic, Safwat Zaky Section 2.7 : 輸出入作業 Chapter 9 : 嵌入式系統