• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于實(shí)時(shí)操作系統(tǒng)的ATmega128串行通信驅(qū)動(dòng)程序設(shè)計(jì)*

      2016-12-09 12:26:11陳宇珂潘澤森丁效軍張興安
      中國醫(yī)學(xué)裝備 2016年11期
      關(guān)鍵詞:信號(hào)量服務(wù)程序緩沖區(qū)

      陳 ?!£愑铉妗∨藵缮《⌒к姟埮d安

      基于實(shí)時(shí)操作系統(tǒng)的ATmega128串行通信驅(qū)動(dòng)程序設(shè)計(jì)*

      陳 海①陳宇珂②*潘澤森②丁效軍②張興安③

      目的:基于實(shí)時(shí)操作系統(tǒng)uCOS-II進(jìn)行ATmega128串行通信驅(qū)動(dòng)程序設(shè)計(jì),作為智能化靜脈麻醉靶控模塊通信的一部分,與藥物注射機(jī)械控制系統(tǒng)協(xié)同運(yùn)行,以提高整個(gè)藥代動(dòng)力學(xué)目標(biāo)控制注射系統(tǒng)的運(yùn)行效率和實(shí)時(shí)性。方法:根據(jù)ATmega128微處理器USART特點(diǎn),采用信號(hào)量、消息郵箱及環(huán)形緩沖隊(duì)列,設(shè)計(jì)串口通信驅(qū)動(dòng)模塊。結(jié)果:串口驅(qū)動(dòng)通信模塊采用信號(hào)量、消息郵箱及環(huán)形緩沖區(qū)解決CPU快速處理和外部慢速通信接口的速度配合問題,并利用信號(hào)量和消息郵箱,實(shí)現(xiàn)串口通信中斷服務(wù)與數(shù)據(jù)處理任務(wù)間數(shù)據(jù)傳輸?shù)耐叫院蛯?shí)時(shí)性。結(jié)論:通過實(shí)驗(yàn)驗(yàn)證了在多種不同通信速率下串行通信驅(qū)動(dòng)模塊數(shù)據(jù)傳輸?shù)目煽啃?,該傳輸模塊數(shù)據(jù)傳輸具有誤碼率低、傳輸穩(wěn)定可靠的特點(diǎn)。

      實(shí)時(shí)操作系統(tǒng)uCOS-II;信號(hào)量;消息郵箱;串行通信;驅(qū)動(dòng)程序;靜脈麻醉輸注系統(tǒng)

      [First-author’s address] Department of Radiation Oncology, General Hospital of Guangzhou Military Command of PLA, Guangzhou 510010, China.

      醫(yī)療設(shè)備在嵌入式應(yīng)用中,使用實(shí)時(shí)操作系統(tǒng)(real time operator system,RTOS)可以加快系統(tǒng)程序的開發(fā)速度,更加合理和有效地使用系統(tǒng)各類資源,縮短系統(tǒng)開發(fā)時(shí)間,使得整個(gè)系統(tǒng)的實(shí)時(shí)性、可靠性得到極大的保證。據(jù)EEtimes雜志統(tǒng)計(jì),目前嵌入式市場(chǎng)常用的RTOS有FreeRTOS、Microsoft XP Embedded、VxWorks、Linux以及RTX等數(shù)十種,其中uCOS是一個(gè)輕量級(jí)的實(shí)時(shí)操作系統(tǒng)內(nèi)核,具有任務(wù)管理、時(shí)間管理、信號(hào)量及內(nèi)存管理等功能,可以根據(jù)系統(tǒng)開發(fā)需要移植裁剪,方便地移植到各種嵌入式系統(tǒng)上使用[1-3]。為此,本研究基于實(shí)時(shí)操作系統(tǒng)uCOS-II進(jìn)行ATmega128串行通信驅(qū)動(dòng)程序設(shè)計(jì)。

      1 技術(shù)與方法

      1.1實(shí)時(shí)操作系統(tǒng)uCOS-II

      根據(jù)相關(guān)微處理器的特點(diǎn)對(duì)實(shí)時(shí)操作系統(tǒng)uCOSII的源代碼根據(jù)功能需要進(jìn)行合適的裁減,設(shè)置與處理器及編譯器相關(guān)代碼,可以非??旖莸卦诓煌蚣芪⑻幚砥鳌⑽⒖刂破骱蛿?shù)字信號(hào)處理器上應(yīng)用。自1992年以來,uCOS以其高度的可靠性、魯棒性以及安全性,在家用電子設(shè)備、醫(yī)療儀器及航空航天電子產(chǎn)品各種應(yīng)用中被廣泛使用[4-6]。

      1.2串口通信驅(qū)動(dòng)模塊設(shè)計(jì)

      隨著嵌入式系統(tǒng)的發(fā)展,系統(tǒng)間的數(shù)據(jù)通信越來越頻繁和重要,尤其是串口通信所需接口數(shù)少,接線簡單,可實(shí)現(xiàn)遠(yuǎn)距離通信。但是uCOS-II僅是一個(gè)實(shí)時(shí)多任務(wù)操作系統(tǒng)內(nèi)核,需要根據(jù)嵌入式微處理器與各種外設(shè)擴(kuò)展的實(shí)際情況,利用實(shí)時(shí)內(nèi)核提供的功能,結(jié)合硬件特點(diǎn),編寫應(yīng)用程序接口函數(shù),進(jìn)行硬件接口驅(qū)動(dòng)模塊程序設(shè)計(jì)。ATmega128通用異步同步串行通信接口USART是單片機(jī)與外部設(shè)備進(jìn)行串行信息交換的重要組件,基于USART的RTOS串口通信驅(qū)動(dòng)模塊,需結(jié)合uCOS-II嵌入式操作系統(tǒng),基于信號(hào)量、消息郵箱,利用環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)特點(diǎn)進(jìn)行設(shè)計(jì)。

      2 ATmega128微處理器和uCOS-II實(shí)時(shí)操作系統(tǒng)

      本研究組以臨床國人靜脈麻醉藥代動(dòng)力學(xué)參數(shù)研究為基礎(chǔ),結(jié)合微機(jī)電、嵌入式新技術(shù)設(shè)計(jì)便攜式靜脈麻醉智能儀器。系統(tǒng)主要從嵌入式系統(tǒng)的硬件設(shè)計(jì)、系統(tǒng)軟件設(shè)計(jì)和應(yīng)用層軟件設(shè)計(jì)三個(gè)方面開展研發(fā)工作,系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

      2.1系統(tǒng)構(gòu)建

      2.1.1ATmega128微處理器及其USART硬件模塊

      美國ATMEL公司ATmega128是一款基于AVR RISC(精簡指令集)結(jié)構(gòu)的CMOS微處理器,具有低成本、低功耗及高性能的特點(diǎn)[7-8]。ATmega128單片機(jī)穩(wěn)定性極高,應(yīng)用非常廣泛,在工業(yè)控制電子設(shè)備領(lǐng)域、通信網(wǎng)絡(luò)設(shè)備以及智能化電子醫(yī)療儀器等嵌入式領(lǐng)域中得到廣泛應(yīng)用[9-16]。

      ATmega128具有2個(gè)可編程的通用同步、異步串行接收器和轉(zhuǎn)發(fā)器:USART0和USART1,USART0和USART1具有不同的I/O寄存器。ATmega128串行通訊硬件的主要特點(diǎn)有:①串行接收寄存器和發(fā)送寄存器互相獨(dú)立,可以非常方便地進(jìn)行全雙工操作;②可靈活選擇異步傳輸和同步傳輸模式,支持多個(gè)數(shù)據(jù)位;③奇偶校驗(yàn)操作、數(shù)據(jù)過速及幀錯(cuò)誤檢測(cè)得到硬件支持,可提高數(shù)據(jù)傳輸?shù)臏?zhǔn)確性;④硬件提供發(fā)送結(jié)束中斷、發(fā)送數(shù)據(jù)寄存器空中斷和接收結(jié)束中斷[17]。

      2.1.2uCOS-II實(shí)時(shí)操作系統(tǒng)

      uCOS-II是開放的占先式實(shí)時(shí)系統(tǒng)內(nèi)核,通過已經(jīng)準(zhǔn)備就緒的高優(yōu)先級(jí)任務(wù),剝奪正在運(yùn)行的低優(yōu)先級(jí)任務(wù)的CPU使用權(quán),保證了高優(yōu)先級(jí)任務(wù)的實(shí)時(shí)運(yùn)行。uCOS-II將信號(hào)量、消息隊(duì)列、消息郵箱、事件標(biāo)志組和互斥信號(hào)量統(tǒng)一看作事件,系統(tǒng)根據(jù)以上事件發(fā)生與否決定各個(gè)任務(wù)的狀態(tài),事件可以是系統(tǒng)中斷發(fā)出的,也可以由其他任務(wù)發(fā)出。uCOS-II事件來自中斷服務(wù)函數(shù)、系統(tǒng)延時(shí)時(shí)間到達(dá)設(shè)置時(shí)間值和其他任務(wù)發(fā)送三個(gè)方面,信號(hào)量和消息郵箱是系統(tǒng)設(shè)計(jì)中常用的事件,在中斷與任務(wù)和任務(wù)與任務(wù)同步以及數(shù)據(jù)傳遞過程中應(yīng)用最為廣泛[18-19]。

      2.1.3信號(hào)量

      uCOS-II的信號(hào)量(semaphores)廣泛用于任務(wù)間對(duì)共享資源的互斥訪問,任務(wù)與中斷服務(wù)程序間、任務(wù)與任務(wù)間的同步,其提供了行為同步時(shí)刻的信息。uCOS-II的信號(hào)量包括互斥信號(hào)量和計(jì)數(shù)信號(hào)量兩種:①互斥信號(hào)量是一個(gè)二值信號(hào),只能是0或1,用于資源同步,在程序中實(shí)現(xiàn)對(duì)共享資源的互斥訪問;②計(jì)數(shù)信號(hào)量取值是一個(gè)16位無符號(hào)整形數(shù),計(jì)數(shù)范圍為0~65535,計(jì)數(shù)信號(hào)量不僅可用于資源同步,還可實(shí)現(xiàn)任務(wù)之間、中斷與任務(wù)之間的同步。計(jì)數(shù)信號(hào)量標(biāo)志同步事件的發(fā)生次數(shù)或者已發(fā)生事件的數(shù)量,表達(dá)資源的可用數(shù)量。

      圖1 ATmega128微處理器和uCOS-II實(shí)時(shí)操作系統(tǒng)硬件結(jié)構(gòu)圖

      uCOS-II信號(hào)量相關(guān)函數(shù)包括OSSemCreate()、OSSemPend()和OSSemPost()3個(gè)。OSSemCreate()函數(shù)初始化信號(hào)量,OSSemPend()函數(shù)由于任務(wù)中等待信號(hào)量,OSSemPost()函數(shù)在任務(wù)或中斷服務(wù)程序中發(fā)送信號(hào)量。信號(hào)量最好在系統(tǒng)初始化過程中創(chuàng)建,并根據(jù)需要給信號(hào)量賦初值。

      2.1.4消息郵箱

      消息用于任務(wù)之間傳遞信息,當(dāng)同步過程中需要傳輸具體內(nèi)容時(shí)就不能使用信號(hào)量,可以選擇消息郵箱通過內(nèi)核服務(wù)發(fā)送消息。uCOS-II的消息郵箱(message mail boxes)基于事件控制塊結(jié)構(gòu)OS_ EVENT,是事先定義好的數(shù)據(jù)結(jié)構(gòu),包含需要傳遞的參數(shù),一個(gè)郵箱存放一條信息。uCOS系統(tǒng)中OSMboxCreate()進(jìn)行郵箱初始化(initialize),或者稱為建立郵箱(create),初始值為NULL,也可以包含一條信息,使其最開始就初始化為包含一條消息;OSMboxPost()函數(shù)將消息放入郵箱,如果該郵箱已有數(shù)據(jù),則返回郵箱已滿錯(cuò)誤碼;如果郵箱為空,有任務(wù)在等待消息郵箱的消息,則馬上通過內(nèi)核服務(wù)將消息傳遞給等待消息的任務(wù)列表中優(yōu)先級(jí)最高的任務(wù),然后進(jìn)行任務(wù)調(diào)度,判斷當(dāng)前運(yùn)行的任務(wù)是否仍為處于最高優(yōu)先級(jí)就緒態(tài),否則將消息發(fā)送給最先等待的任務(wù)。OSMboxPend()函數(shù)允許用戶定義超時(shí)等待時(shí)間,避免無休止等待。

      2.1.5環(huán)形隊(duì)列緩沖區(qū)

      在計(jì)算機(jī)語言中隊(duì)列是常用的一種數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)傳輸和處理中應(yīng)用廣泛,將隊(duì)列采用環(huán)形緩沖技術(shù)構(gòu)造為首尾相互連接的結(jié)構(gòu)形式,形成環(huán)形緩沖區(qū)。環(huán)形緩沖區(qū)在嵌入式系統(tǒng)中具有重要作用,尤其是在多任務(wù)系統(tǒng)中,運(yùn)用信號(hào)量實(shí)現(xiàn)緩沖區(qū)的互斥訪問,可以有效提高程序效率,避免任務(wù)間競(jìng)爭,防止數(shù)據(jù)讀寫錯(cuò)誤[20]。

      2.2串口通信模塊軟件設(shè)計(jì)

      在完成uCOS-II實(shí)時(shí)系統(tǒng)基于ATmega128移植的基礎(chǔ)上,根據(jù)靜脈麻醉靶控模塊與輸注控制模塊之間以串行通信進(jìn)行數(shù)據(jù)交換的需求,進(jìn)行USART設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)。由于uCOS-II作為實(shí)時(shí)內(nèi)核,提供了實(shí)時(shí)操作系統(tǒng)內(nèi)核基本功能,但在進(jìn)行項(xiàng)目系統(tǒng)整體設(shè)計(jì)時(shí),需要根據(jù)硬件結(jié)構(gòu)和功能需求進(jìn)行驅(qū)動(dòng)及應(yīng)用程序設(shè)計(jì)[21-22]。

      在實(shí)時(shí)操作系統(tǒng)中,串行通信接口是一種異步通訊設(shè)備,在進(jìn)行接收發(fā)送程序設(shè)計(jì)時(shí),加入軟件緩沖區(qū),在串口發(fā)送和接收數(shù)據(jù)時(shí),系統(tǒng)有更重要任務(wù)需要處理時(shí),來不及處理這些數(shù)據(jù),可先將數(shù)據(jù)存入緩沖區(qū),使數(shù)據(jù)不會(huì)發(fā)生丟失。為此,從內(nèi)存中開辟2個(gè)定義為環(huán)形隊(duì)列的數(shù)據(jù)結(jié)構(gòu)作為緩沖區(qū),分別作為串口數(shù)據(jù)收發(fā)的發(fā)送緩沖區(qū)和接收緩沖區(qū)。發(fā)送和接收環(huán)形緩沖區(qū)由首尾相接的數(shù)據(jù)隊(duì)列、環(huán)形緩沖區(qū)字節(jié)計(jì)數(shù)器、指向環(huán)形緩沖器中將被放置下個(gè)字節(jié)的指針和指向環(huán)形緩沖區(qū)將被讀取的下一字節(jié)的指針4個(gè)要素。

      本研究采用uCOS-II實(shí)時(shí)操作系統(tǒng)信號(hào)量實(shí)現(xiàn)串口通信發(fā)送、接收任務(wù)和中斷服務(wù)程序的同步,用戶任務(wù)使用串口通信時(shí)不必關(guān)心串口的實(shí)現(xiàn),只需將需要發(fā)送的數(shù)據(jù)寫入發(fā)送緩沖區(qū),串口自行從發(fā)送緩沖區(qū)取出數(shù)據(jù),調(diào)用中斷發(fā)送程序送出數(shù)據(jù)。串口接收到的數(shù)據(jù)通過接收中斷服務(wù)程序接收存入接收緩沖區(qū)中,每接收到一個(gè)字節(jié),向等待接收緩沖區(qū)數(shù)據(jù)的應(yīng)用程序發(fā)信號(hào)。

      2.2.1USART初始化

      實(shí)時(shí)系統(tǒng)中USART通信模塊初始化包括了模塊中所有變量的初始值設(shè)置,在系統(tǒng)調(diào)用用戶任務(wù)創(chuàng)建函數(shù)前的調(diào)用,一般可以在串口任務(wù)創(chuàng)建時(shí)調(diào)用。初始化時(shí)環(huán)形緩沖區(qū)讀寫指針一般初始化為0,指向環(huán)形緩沖區(qū)隊(duì)列頭部。數(shù)據(jù)接收任務(wù)中的接收信號(hào)量在初始化時(shí)設(shè)置為0,數(shù)據(jù)發(fā)送信號(hào)量初始化值可以根據(jù)發(fā)送環(huán)形緩沖隊(duì)列的大小進(jìn)行設(shè)置。

      完成所有相關(guān)變量的初始化后,進(jìn)行USART硬件初始化設(shè)置,設(shè)定傳輸模式、波特率、數(shù)據(jù)幀格式以及開啟發(fā)送接收中斷。USART0的控制和狀態(tài)寄存器有UCSR0A,UCSR0B,UCSR0C,波特率寄存器為UBRR0,即UBRR0H和UBRR0L,數(shù)據(jù)收發(fā)寄存器為UDR0。初始化時(shí),或者在改變USART的設(shè)置時(shí)必須在無數(shù)據(jù)傳輸?shù)那闆r下進(jìn)行,TXC標(biāo)志位檢驗(yàn)一個(gè)數(shù)據(jù)幀發(fā)送是否完成,RXC標(biāo)志位檢驗(yàn)接收緩沖器是否還有數(shù)據(jù)未讀出,在每次發(fā)送數(shù)據(jù)即寫發(fā)送數(shù)據(jù)寄存器UDR前,TXC標(biāo)志位必須清零。

      2.2.2USART串行通信模塊讀取操作

      串口通信數(shù)據(jù)接收過程包括:USART接收器接收到一個(gè)數(shù)據(jù)幀后觸發(fā)接收中斷,中斷服務(wù)程序ISR讀取接收到的內(nèi)容并保存,經(jīng)過一次或若干次ISR完成通信幀的接收(拼裝數(shù)據(jù)幀),發(fā)送信號(hào)觸發(fā)處理和解釋通信內(nèi)容的任務(wù),然后根據(jù)處理結(jié)果觸發(fā)其他相關(guān)任務(wù)。

      ATmega128啟動(dòng)USART接收器通過置位UCSRB寄存器的接收允許標(biāo)志位RXEN完成,如果USART接收器接收檢測(cè)到有效起始位,便啟動(dòng)數(shù)據(jù)接收,直到接收到一幀數(shù)據(jù)的第一個(gè)停止位為止,然后將接收到的數(shù)據(jù)傳入接收移位寄存器。如有第二個(gè)停止位,則會(huì)被接收器忽略。這時(shí)移位寄存器中的內(nèi)容將轉(zhuǎn)移到USART硬件接收緩沖器中。USART接收器通過接收結(jié)束標(biāo)志RXC表明硬件接收緩沖器中是否含有未讀出的數(shù)據(jù)。RXC為1時(shí),緩沖器中有數(shù)據(jù),為0時(shí)接收緩沖器為空。在USART硬件初始化中置位UCSRB的接收結(jié)束中斷使能位RXCIE后,只要RXC標(biāo)志位置1,在全局中斷使能的情況下,將產(chǎn)生USART接收結(jié)束中斷,在中斷服務(wù)程序中讀取UDR寄存器就可以獲得接收緩沖器的內(nèi)容并清除RXC標(biāo)志。ATmega128微處理器USART接收器具有的幀錯(cuò)誤FE、數(shù)據(jù)溢出DOR、奇偶檢驗(yàn)錯(cuò)UPE標(biāo)志位于寄存器UCSRA中,在中斷服務(wù)程序中必須在接收緩沖區(qū)讀取之前先讀取,通過這3個(gè)錯(cuò)誤標(biāo)志位的判斷,可以更好地保證接收數(shù)據(jù)的準(zhǔn)確性。

      基于uCOS-II的串口讀寫模塊由接收數(shù)據(jù)讀取任務(wù)和接收中斷服務(wù)程序兩部分組成。在串口硬件接收數(shù)據(jù)完成后,串口數(shù)據(jù)接收中斷服務(wù)程序ISR首先讀取寄存器UCSRA后,再讀取數(shù)據(jù)寄存器UDR中接收到的數(shù)據(jù)。判斷有無數(shù)據(jù)幀、奇偶檢驗(yàn)及溢出錯(cuò)誤,同時(shí)通過比較環(huán)形隊(duì)列緩沖區(qū)中當(dāng)前字節(jié)數(shù)的變量RxBuffer,判斷環(huán)形隊(duì)列接收緩沖區(qū)是否已存滿。如果未滿,則將接收數(shù)據(jù)寫入串口通信模塊數(shù)據(jù)接收環(huán)形緩沖區(qū)寫入指針指向的位置,數(shù)據(jù)寫入后環(huán)形緩沖區(qū)寫入指針和指示變量RxBuffer加1,如果寫入指針等于緩沖區(qū)大小,則置0。完成上述操作后,通過發(fā)送接收完成信號(hào)量啟動(dòng)接收數(shù)據(jù)讀取任務(wù)。接收數(shù)據(jù)讀取任務(wù)啟動(dòng)后處于等待狀態(tài),等候數(shù)據(jù)接收完成信號(hào)量的到來,此時(shí)OSSemPend()函數(shù)中的超時(shí)等待量設(shè)為0,表示無限期等待。任務(wù)接收到接收完成信號(hào)量后,將環(huán)形緩沖區(qū)當(dāng)前讀取指針指向的數(shù)據(jù)讀出,隨后指針加1,如果指針數(shù)等于緩沖區(qū)大小,則重新置0,重新指向環(huán)形緩沖區(qū)頭。串行通信數(shù)據(jù)讀取任務(wù)流程和中斷服務(wù)程序如圖2、圖3所示。

      圖2 串行通信數(shù)據(jù)讀取任務(wù)流程圖

      圖3 讀取中斷服務(wù)程序流程圖

      在整個(gè)接收過程中,USART一旦接收到數(shù)據(jù),硬件將觸發(fā)接收中斷,如果這個(gè)時(shí)候環(huán)形緩沖區(qū)數(shù)據(jù)已滿,需要丟棄接收到的字符,所以在緩沖區(qū)的大小設(shè)置時(shí),需要根據(jù)實(shí)際合理設(shè)置,這樣可以降低數(shù)據(jù)丟失,又避免設(shè)置太大導(dǎo)致內(nèi)部存儲(chǔ)空間的浪費(fèi),增加系統(tǒng)開銷。

      2.2.3USART串行通信模塊發(fā)送操作

      ATmega128微處理器通過置位UCSRB寄存器的發(fā)送允許位TXEN使能USART數(shù)據(jù)發(fā)送,任務(wù)根據(jù)需要寫入數(shù)據(jù)到發(fā)送緩沖器,啟動(dòng)數(shù)據(jù)發(fā)送。USART在移位寄存器空閑或前一幀數(shù)據(jù)的最后一個(gè)停止位傳送結(jié)束,將發(fā)送緩沖器中的數(shù)據(jù)加載到移位寄存器,完成數(shù)據(jù)發(fā)送。

      USART發(fā)送器有數(shù)據(jù)寄存器空標(biāo)志UDRE和數(shù)據(jù)傳輸結(jié)束標(biāo)志TXC,這2個(gè)標(biāo)志位都可以產(chǎn)生中斷,在進(jìn)行發(fā)送模塊設(shè)計(jì)時(shí),本研究通過數(shù)據(jù)傳輸結(jié)束中斷發(fā)送數(shù)據(jù)。帶環(huán)形緩沖區(qū)和超時(shí)信號(hào)量的串口發(fā)送模塊包括串口數(shù)據(jù)發(fā)送任務(wù)TxTask和串口數(shù)據(jù)發(fā)送中斷服務(wù)程序TxISR兩部分。在初始化時(shí)將發(fā)送信號(hào)量值設(shè)為緩沖區(qū)大小,環(huán)形隊(duì)列緩沖區(qū)中無數(shù)據(jù),并且關(guān)閉發(fā)送中斷。系統(tǒng)功能模塊啟動(dòng)TxTask任務(wù)用于發(fā)送數(shù)據(jù)時(shí),串口數(shù)據(jù)發(fā)送任務(wù)在信號(hào)量上等待。如果發(fā)送信號(hào)量不為零表示緩沖區(qū)未滿,用戶任務(wù)可以向發(fā)送緩沖區(qū)中寫入數(shù)據(jù)。如果寫入的是發(fā)送緩沖區(qū)中的第一個(gè)字節(jié),則UCSRB中TXCIE標(biāo)志置1,允許發(fā)送中斷,并將數(shù)據(jù)寫入U(xiǎn)DR寄存器。ATmega128串口數(shù)據(jù)發(fā)送完成后自動(dòng)置位TXC,觸發(fā)數(shù)據(jù)傳輸結(jié)束中斷。然后,數(shù)據(jù)傳輸結(jié)束中斷服務(wù)程序TxISR通過OSSemPost()發(fā)送信號(hào)量。當(dāng)信號(hào)量事件塊中信號(hào)量計(jì)數(shù)小于環(huán)形緩沖區(qū)設(shè)置值減1時(shí),將發(fā)送緩沖區(qū)當(dāng)前讀取指針位置的數(shù)據(jù)寫入U(xiǎn)DR,否則結(jié)束數(shù)據(jù)傳輸,關(guān)閉中斷。數(shù)據(jù)寫入U(xiǎn)DR后環(huán)形緩沖區(qū)讀取指針加1,如果指針到達(dá)環(huán)形緩沖區(qū)尾端,則指針置為0重新指向緩沖區(qū)首端。TxISR從發(fā)送緩沖區(qū)中取出數(shù)據(jù)字節(jié)輸出至UDR,數(shù)據(jù)傳輸完成操作,緩沖區(qū)中有數(shù)據(jù)的話將觸發(fā)了下一次的發(fā)送中斷,這樣循環(huán)下去直到發(fā)送緩沖區(qū)中最后一個(gè)字節(jié)被發(fā)送任務(wù)取走。在TxISR服務(wù)程序向USART輸出數(shù)據(jù)的同時(shí),向發(fā)送信號(hào)量發(fā)信號(hào),發(fā)送任務(wù)通過信號(hào)量事件塊中的計(jì)數(shù)值,可以判斷環(huán)形隊(duì)列發(fā)送緩沖區(qū)中是否還有空間可寫入數(shù)據(jù)。串行通信發(fā)送任務(wù)和中斷服務(wù)程序如圖4、圖5所示。

      圖4 串行通信發(fā)送任務(wù)流程圖

      圖5 發(fā)送中斷服務(wù)程序流程圖

      3 結(jié)語

      基于uCOS-II實(shí)時(shí)操作系統(tǒng)的ATmega128串口通信模塊,通過利用實(shí)時(shí)內(nèi)核的任務(wù)調(diào)度功能以及信號(hào)量機(jī)制,實(shí)現(xiàn)串口收發(fā)接口模塊化封裝,使用方便,其設(shè)計(jì)思路和方法可以用于ATmega128其他外圍硬件接口程序設(shè)計(jì)。該串口通信模塊已作為智能化靜脈麻醉靶控模塊通信的一部分,與藥物注射機(jī)械控制系統(tǒng)協(xié)同運(yùn)行,可提高整個(gè)藥代動(dòng)力學(xué)目標(biāo)控制注射系統(tǒng)的運(yùn)行效率和實(shí)時(shí)性[22]。

      [1]張文君,陳香蘭,李曦.嵌入式實(shí)時(shí)操作系統(tǒng)的分析評(píng)測(cè)方法[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2014,24(1):28-34.

      [2]呂阿璐.基于RTX的大容量實(shí)時(shí)數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2013(7):235-238.

      [3]潘應(yīng)進(jìn),朱子元.基于ThreadX實(shí)時(shí)操作系統(tǒng)的USB設(shè)備驅(qū)動(dòng)開發(fā)[J].工業(yè)控制計(jì)算機(jī),2016,29(2):30-32.

      [4]郝玉勝,逯玉蘭.基于嵌入式網(wǎng)絡(luò)通信模塊[J].計(jì)算機(jī)與現(xiàn)代化,2014(2):142-146.

      [5]李化云.嵌入式實(shí)時(shí)操作系統(tǒng)在航天器軟件中的應(yīng)用研究[J].微計(jì)算機(jī)信息,2012,28(8):73-74.

      [6]謝檬,張一寧,王娟.基于AVR單片機(jī)的電動(dòng)執(zhí)行器控制模塊檢測(cè)儀的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2015,23(10):3570-3573.

      [7]李運(yùn)堂,吳進(jìn)田,梁宏民,等.基于AVR的靜壓氣體軸承性能檢測(cè)裝置控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2015,23(1):113-114.

      [8]趙春雷,孫會(huì)琴.基于AVR單片機(jī)的肌電信號(hào)生物反饋測(cè)試儀的設(shè)計(jì)[J].醫(yī)學(xué)裝備,2012,25(12):6-9.

      [9]劉曉軍,蔡玉文,蔡玉武,等.基于AVR左心室磁懸浮輔助裝置的轉(zhuǎn)子測(cè)量系統(tǒng)[J].北京生物醫(yī)學(xué)工程,2014,33(4):412-414.

      [10]陳倩,嚴(yán)榮國,葛斌,等.基于玻意耳定律的模擬肺及其溫度補(bǔ)償系統(tǒng)[J].中國醫(yī)學(xué)物理學(xué)雜志,2016,33(1):83-87.

      [11]陳曉艷,高娜娜,黃華芳.數(shù)字式生物電阻抗與電阻抗斷層成像測(cè)量系統(tǒng)[J].生物醫(yī)學(xué)工程學(xué)雜志,2015,32(3):575-580.

      [12]陳宇珂,張興安,張延武,等.智能化靜脈麻醉靶控系統(tǒng)的研制[J].中國醫(yī)學(xué)裝備,2005,2(8):22-23.

      [13]潘佚,邱蕾.國產(chǎn)便攜式血糖儀功能改進(jìn)及低功耗設(shè)計(jì)[J].現(xiàn)代儀器與醫(yī)療,2013,19(1):38-40.

      [14]孟倩,鄭利星,郭紅蕊,等.胎心聲音存儲(chǔ)回放系統(tǒng)設(shè)計(jì)[J].生物醫(yī)學(xué)工程與臨床,2013,17(2):184-186.

      [15]吳北江,王洋,孫文橋,等.網(wǎng)絡(luò)化平戰(zhàn)兩用數(shù)字心電信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].醫(yī)療衛(wèi)生裝備,2010,31(6):48-50.

      [16]耿德根,宋建國,馬潮,等.AVR高速嵌入式單片機(jī)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2003.

      [17]晨風(fēng).嵌入式實(shí)時(shí)多任務(wù)軟件開發(fā)基礎(chǔ)[M].北京:清華大學(xué)出版社,2004.

      [18]羅蕾.嵌入式實(shí)時(shí)操作系統(tǒng)及應(yīng)用開發(fā)[M].北京:北京航空航天大學(xué)出版社,2005.

      [19]林銳,韓永泉.高質(zhì)量C程序設(shè)計(jì)指南[M].2版.北京:電子工業(yè)出版社,2003.

      [20]袁家棟,殷興輝.基于串口的高速信號(hào)傳輸[J].微電腦應(yīng)用,2015,31(12):1-2.

      [21]劉亞兵,馬瑞卿,張慶超,等.基于FIFO的串口通信模式研究[J].計(jì)算機(jī)測(cè)量與控制,2014,22(7):2301-2303.

      [22]陳宇珂,李爽,袁凱,等.基于LPC2478的三通道靜脈麻醉輸注系統(tǒng)設(shè)計(jì)[J].中國醫(yī)學(xué)裝備,2014,11(9):6-8.

      Design of serial communication driver of ATmega 128 based on RTOS

      CHEN Hai, CHEN Yu-ke, PAN Ze-sen, et al// China Medical Equipment,2016,13(11):98-103.

      Objective: Based on real-time OS uCOS II, to design the serial communication driver module of ATmega128. Methods: Based on the characteristics of microprocessor ATmega128 USART, we use semaphores, message mailbox and circular buffer queue to design serial communication module. Results: serial port driver communication module use semaphores, message mailbox and circular buffer solution to handle the problems of speed matching between CPU and external communication interface, and also use the semaphores, mailbox to realize synchrony and real time between serial communication interrupt service and data processing tasks. Conclusion: Experiments verify the reliability of data transmission of the driver module for serial communication in a variety of different communication rate. The experiment shows that the transmission module with the characteristics of low error rate, stable and reliable transmission of data transmission.

      Real time operation system uCOS-II; Semaphores; Message mailbox; Serial communication; Driving program; Intravenous anesthesia infusion system

      陳海,男,(1968- ),本科學(xué)歷,主管技師。解放軍廣州總醫(yī)院放射腫瘤科,從事醫(yī)療設(shè)備維修及研發(fā)工作。

      1672-8270(2016)11-0098-06

      R197.324

      A

      10.3969/J.ISSN.1672-8270.2016.11.029

      廣東省科技計(jì)劃(2012A032200023)“HL7標(biāo)準(zhǔn)三通道靜脈麻醉輸注系統(tǒng)關(guān)鍵技術(shù)研究”;廣東省科技計(jì)劃(2013B090500113)“智能化靜脈麻醉靶控輸注工作站的研制及產(chǎn)業(yè)化”

      ①解放軍廣州總醫(yī)院放射腫瘤科 廣東 廣州 510010

      ②解放軍廣州總醫(yī)院醫(yī)學(xué)工程科 廣東 廣州 510010

      ③解放軍廣州總醫(yī)院麻醉科 廣東 廣州 510010

      chenyuke@hotmail.com

      2016-08-30

      猜你喜歡
      信號(hào)量服務(wù)程序緩沖區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設(shè)計(jì)與實(shí)現(xiàn)
      基于STM32的mbedOS信號(hào)量調(diào)度機(jī)制剖析
      基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
      基于C#的進(jìn)程守護(hù)程序的設(shè)計(jì)
      視聽(2020年3期)2020-06-11 14:28:18
      Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測(cè)試
      水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
      關(guān)鍵鏈技術(shù)緩沖區(qū)的確定方法研究
      μC/OS- -III對(duì)信號(hào)量的改進(jìn)
      Linux操作系統(tǒng)信號(hào)量機(jī)制的實(shí)時(shí)化改造
      地理信息系統(tǒng)繪圖緩沖區(qū)技術(shù)設(shè)計(jì)與實(shí)現(xiàn)
      饶河县| 无棣县| 松桃| 通江县| 鹤峰县| 集安市| 浦东新区| 梁平县| 裕民县| 曲水县| 鄂托克旗| 乌兰浩特市| 马龙县| 江西省| 河间市| 鄂州市| 普定县| 房山区| 项城市| 专栏| 潮州市| 贺州市| 邯郸县| 买车| 比如县| 沂水县| 南郑县| 施秉县| 轮台县| 天全县| 贵州省| 舞钢市| 北碚区| 平凉市| 贡觉县| 奇台县| 铁岭市| 万源市| 吴堡县| 云和县| 玉溪市|