<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è) > 嵌入式系統 > 設計應用 > 一種基于A(yíng)RM920T的現場(chǎng)總線(xiàn)控制系統

一種基于A(yíng)RM920T的現場(chǎng)總線(xiàn)控制系統

作者: 時(shí)間:2014-01-17 來(lái)源:網(wǎng)絡(luò ) 收藏

  getc函數:unsigned char (*getc)(can_bus *priv)該函數從設備接口讀取一個(gè)字符,它只用于非中斷方式,通過(guò)查詢(xún)設備是否處于準備(ready)狀態(tài)來(lái)等待一個(gè)字符。

  set_config函數:bool (*set_config)(can_bus *priv,cyg_can_info_t *config)該函數用于對指定的端口配置。如果對硬件配置成功,則返回true;如果端口不支持給定的配置參數,則返回false。

  start_xmit函數:void (*start_xmit)can_bus *priv)在中斷方式下,該函數使能發(fā)送端,允許發(fā)送中斷的產(chǎn)生。

  stop_xmit函數:void (*stop_xmit)(can_bus *priv)在中斷方式下,當數據發(fā)送結束后,該函數進(jìn)制發(fā)送端,進(jìn)制發(fā)送中斷產(chǎn)生。

  start_recv函數:void (*stop_xmit)(can_bus *priv)

  stop_recv函數:void (*stop_xmit)(can_bus *priv)

  4.3 發(fā)送中斷處理函數

  CAN總線(xiàn)在中斷方式下的負責對中斷進(jìn)行處理函數是中斷服務(wù)程序ISR和中斷滯后服務(wù)程序DSR。對中斷的處理主要有三種模式,第一種模式是在中斷服務(wù)程序ISR內完成所有設備處理工作,第二種是在中斷滯后服務(wù)程序DSR內實(shí)現,第三中是將對設備的處理推遲到中斷線(xiàn)程內進(jìn)行。在驅動(dòng)程序的設計中采用的是第二種模式。

  在這種模式中,中斷處理程序ISR只是簡(jiǎn)單的通過(guò)對設備進(jìn)行編程或者直接調用cyg_drv_interrupt_mask()函數防止新中斷的產(chǎn)生,然后將調用DSR作進(jìn)一步的處理。DSR完成大部分的硬件處理工作,并有可能對某個(gè)條件變量產(chǎn)生一個(gè)信號來(lái)喚醒新的中斷。最后,DSR調用cyg_drv_interrupt_unmask(),重新使能中斷。中斷處理過(guò)程如圖所示:

  44.jpg

  4.4 綁定設備中斷

  設備驅動(dòng)程序的初始化函數在系統初始化過(guò)程或者設備初始使用時(shí)被調用,初始化函數不僅要設置設備的參數,還要為設備分配相應的數據結構:例如輸入輸出緩沖區等,最后還將設備中斷進(jìn)行綁定。

  每一個(gè)設備在初始化時(shí)會(huì )產(chǎn)生一個(gè)對應的中斷對象,所有的中斷對象存儲在系統的中斷向量鏈表中。當某個(gè)中斷發(fā)生時(shí),系統根據中斷碼到中斷向量鏈表中尋找相應的中斷對象,再跳轉到中斷對象記錄的中斷處理程序的位置執行。

  宏cyg_drv_interrupt_create(vector,priority,data,isr,dsr,handle,intr)用于產(chǎn)生設備的中斷對象。其中,vector是中斷向量,priority中斷優(yōu)先級,data是數據指針,isr是中斷處理程序ISR的地址,dsr是中斷滯后處理程序DSR的地址,handle是返回句柄,intr是中斷對象存放的位置。

  宏cyg_drv_interrupt_attach(interrupt)用于將中斷向量加入到中斷向量鏈表。參數interrupt是將要連接的中斷的句柄。

  設備中斷綁定后,當設備產(chǎn)生中斷時(shí)系統會(huì )找到相應的中斷向量,然后把控制權交給中斷處理程序,進(jìn)行中斷的處理。

  5、兩種擴展方式比較

  對于兩種不同的CAN與ARM9連接方式,IO口連接直觀(guān)簡(jiǎn)單;而利用數據信號線(xiàn)連接能節省IO口,給CPU更多開(kāi)發(fā)空間。兩者在驅動(dòng)程序上差異不大,主要體現在底層數據讀寫(xiě)時(shí)序實(shí)現上。前者簡(jiǎn)單易于編寫(xiě)和理解,后者只是在對時(shí)序的理解上略有難度,并不會(huì )使代碼更加冗長(cháng)。

  6、結束語(yǔ)

  本文通過(guò)在上擴展CAN總線(xiàn)模塊,詳細講解了如何在A(yíng)RM9上擴展CAN總線(xiàn)模塊,給出了全IO口擴展和利用數據信號線(xiàn)擴展兩種方式;并詳細說(shuō)明如何在高實(shí)時(shí)性操作系統eCos上開(kāi)發(fā)CAN驅動(dòng)程序;最后對兩種擴展方式做了簡(jiǎn)單的比較。該在國家十一五某國防項目中得到了很好的應用。同時(shí)也為大中型國有企業(yè)自動(dòng)化生產(chǎn)線(xiàn)的建設和改造,電力系統自動(dòng)化的實(shí)現提供很好的借鑒。

陀螺儀相關(guān)文章:陀螺儀原理



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

評論


相關(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>