<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于I2C和雙ARM的PCB鉆床控制器設計

基于I2C和雙ARM的PCB鉆床控制器設計

作者: 時(shí)間:2012-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
為400KHz。 和LPC2214 各自建立一個(gè)24 字節的全局數組進(jìn)行通信。

  3.軟件設計

  軟件部分主要由人機交互系統軟件和機床運動(dòng)控制系統軟件組成。人機交互系統軟件結構比較復雜,所以軟件移植了μC/OS-II 操作系統。機床運動(dòng)控制系統軟件結構比較簡(jiǎn)單,但是這部分軟件有很強的實(shí)時(shí)性要求,所以軟件沒(méi)有移植操作系統,而是采用時(shí)間觸發(fā)模式編寫(xiě)。

  3.1 人機交互系統軟件設計

  人機交互系統軟件采用分層方式進(jìn)行編寫(xiě)。軟件分為系統層和應用層。系統層設計的主要任務(wù)是首先進(jìn)行嵌入式操作系統μC/OS-II 移植,然后再對操作系統內核進(jìn)行擴展,形成一個(gè)簡(jiǎn)單高效的平臺。應用層設計是在這個(gè)平臺的基礎上實(shí)現加工文件的操作,機床手動(dòng)加工,機床自動(dòng)加工,機床參數設置等任務(wù)。

  系統層以μC/OS-II 操作系統內核為基礎進(jìn)行移植和擴展。所謂移植,是指通過(guò)編寫(xiě)一定代碼,使得操作系統能夠在特定的處理器平臺上運行。根據μC/OS-II 的說(shuō)明,移植包括對與處理器相關(guān)的OS_CPU.H,OS_CPU_A..ASM,OS_CPU_C.C 三個(gè)文件中的代碼進(jìn)行移植[4]。在μC/OS-II 提供的內核基礎上,通過(guò)設計驅動(dòng)程序模塊,系統任務(wù),操作系統的API 函數和任務(wù)調度模塊等對操作系統內核進(jìn)行擴展。通過(guò)設計實(shí)現LCD,鍵盤(pán),K9F2808, 總線(xiàn)和串口通信等的接口函數,建立驅動(dòng)程序模塊,使操作系統API 函數和底層硬件分開(kāi)。系統任務(wù)部分設計了LCD 刷新任務(wù),鍵盤(pán)讀取任務(wù), 總線(xiàn)讀寫(xiě)任務(wù)這三個(gè)基本任務(wù),并隨著(zhù)操作系統的啟動(dòng)而運行。

  應用層在系統層提供的 API 函數的基礎上,設計了主任務(wù)和機床手動(dòng)加工,自動(dòng)加工,文件傳輸,參數設置等任務(wù)。系統的入口函數Main 函數流程如圖2 所示。主任務(wù)函數結構如圖3 所示:


  3.2.LPC2214 程序設計

  機床運動(dòng)控制系統控制程序結構比較簡(jiǎn)單,程序模塊間相對獨立,但是實(shí)時(shí)性要求很高。由于嵌入式實(shí)時(shí)操作系統會(huì )占用一部分系統資源,影響系統的實(shí)時(shí)性,增加系統設計難度,所以,我們沒(méi)有移植嵌入式實(shí)時(shí)操作系統,而是使用簡(jiǎn)單時(shí)間調度方式。使用該調度方式可以使程序具有較好的健壯性和穩定性。系統采用定時(shí)器來(lái)產(chǎn)生系統調度的節拍,利用定時(shí)器中斷程序進(jìn)行調度。系統使用定時(shí)器0 產(chǎn)生系統的節拍,定時(shí)周期為1ms。系統利用PWM控制器的中斷和四個(gè)比較寄存器控制交流伺服系統進(jìn)給脈沖的生成。我們把任務(wù)分成兩類(lèi):一類(lèi)為周期任務(wù),另一類(lèi)為非周期任務(wù)。每一個(gè)任務(wù)都有一個(gè)任務(wù)控制塊,任務(wù)控制塊的數據結構如下:

  typedef data struct

  {void (*P_task)(void); //指向任務(wù)的指針

  unsigned int Delay; //延時(shí)時(shí)間

  unsigned int Period; //任務(wù)再次運行的間隔時(shí)間

  unsigned int run; //任務(wù)需要運行的次數

  }task;

  任務(wù)控制塊包含了任務(wù)被調度的重要信息:任務(wù)是周期任務(wù)還是非周期任務(wù),以及任務(wù)在何時(shí)運行,任務(wù)準備就緒的標志等??刂葡到y的主要任務(wù)有:X 進(jìn)給軸脈沖發(fā)送任務(wù),Y 進(jìn)給軸控制任務(wù),Z1 進(jìn)給軸控制任務(wù),Z2 進(jìn)給軸控制任務(wù),主軸電機控制任務(wù),換刀任務(wù)等。

  4.結束語(yǔ)

  在控制器方案考慮和設計中,我們充分考慮了嵌入式系統對功耗,成本和尺寸的敏感性?;贗2C 的 結構的具有性能優(yōu)良,系統集成度高,性能可靠,人機交互友好,可擴展性好的特點(diǎn),相對于傳統的基于單片機的在性能上有很大的提高。本設計為嵌入式系統在印刷電路板控制器中的應用提供了新的思路,具有較好的應用價(jià)值。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: I2C 雙ARM 鉆床控制器 S3C44B0X

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>