基于A(yíng)tmega128嵌入式控制器的設計
CAN總線(xiàn)接口如圖4。SJA1000的AD0~AD7連接到Atmega128的PC口,CS連接到Atmega128的PG3。PG3為0時(shí)CPU片外存儲器地址選中SJA1000,CPU通過(guò)地址可對SJA1000執行讀/寫(xiě)操作。SJA1000的RD、WE、ALE與Atmega128的引腳相連,INT接Atmega128的PE7,Atmega128可通過(guò)中斷方式訪(fǎng)問(wèn)SJA1000。

(5)與PC機的串行通信
考慮到智能控制節點(diǎn)要接收從RS232串口來(lái)的數據,因而采用了Atmega128的串行口進(jìn)行中斷接收,所用的引腳是PE0、PE1。通過(guò)MAX232進(jìn)行數據傳輸。
(6)脈沖輸入脈沖輸出
由于輸入信號的多樣性,增加了PI/PO部分。
3MicroC/OS—II的移植
MicroC/OS—II移植到Atmega128上,需要修改OS_CPU.H,OS_CPU_A.S和OS_CPU_C.C三個(gè)與其相關(guān)的文件。其中OS—CPU.H主要完成的是數據類(lèi)型、堆棧單位、堆棧增長(cháng)方向的定義。相關(guān)的數據類(lèi)型定義:
typedefunsignedcharBOOLEAN;
typedefunsignedcharINT8U;//無(wú)符號8位數
typedefsignedcharINT8S;//帶符號8位數
typedefunsignedintINTI6U;//無(wú)符號l6位數
typedefsignedintINTl6S;//帶符號l6位數
typedefunsignedlongINT32U;//無(wú)符號32位數
typedefsignedlongINT32S;//帶符號32位數
typedeffloatFP32;//單精度浮點(diǎn)數
堆棧單位的定義:
typedefunsignedcharOS_STK;//堆棧入口寬度為8位
狀態(tài)寄存器的定義:
typedefunsignedcharOS_CPU_SR;//定義狀態(tài)寄存器為8位
堆棧增長(cháng)方向的定義:
#defineOS_STK_GROWTH1;//AVR堆棧由高地址向低地址增長(cháng)
0S_CPU_C.C文件主要包括任務(wù)堆棧初始化和實(shí)現操作系統規定的幾個(gè)Hook函數。其中移植需要的Hook函數如下:
OSTaskCreateHook();OSTaskDelHook()
OSTaskldleHook();OSTaskStateHook()
OSTaskSwHook();oSTCBInitHook()
OSTimeTickHook()
評論