原创 使用LabVIEW 进行ARM 微控制器的中断驱动(Interrupt Driven) 程式设计

2008-6-27 22:39 3566 10 10 分类: 测试测量



使用LabVIEW 进行ARM 微控制器的中断驱动(Interrupt Driven) 程式设计<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


概觀概观


此篇線上教學將說明ARM 微控制器的NI LabVIEW Embedded Module 中斷驅動(Interrupt driven) 程式設計方式,與管理中斷時的必要步驟。此篇线上教学将说明ARM微控制器的NI LabVIEW Embedded Module中断驱动(Interrupt driven)程式设计方式,与管理中断时的必要步骤。 亦涵蓋在應用中使用中斷時,所可能面對的設計抉擇。亦涵盖在应用中使用中断时,所可能面对的设计抉择。 此篇線上教學是以LabVIEW 8.5 與適用於ARM 微控制器的LabVIEW Embedded Module 為使用條件,且必須熟悉建立並執行ARM 微控制器的應用。此篇线上教学是以LabVIEW 8.5与适用于ARM微控制器的LabVIEW Embedded Module为使用条件,且必须熟悉建立并执行ARM微控制器的应用。



中斷(Interrupt) 與中斷處理器(Interrupt handler) 的介紹中断(Interrupt)与中断处理器(Interrupt handler)的介绍


任何中斷驅動(Interrupt driven) 系統均具有2 個要件– 中斷(Interrupt) 與中斷處理器(Interrupt handler)。任何中断驱动(Interrupt driven)系统均具有2个要件–中断(Interrupt)与中断处理器(Interrupt handler)。 中斷為硬體所產生訊號,專指所發生該筆的事件將暫停執行中的程式。中断为硬体所产生讯号,专指所发生该笔的事件将暂停执行中的程式。 中斷處理器(亦為中斷服務常式) 為透過系統處理器(Processor) 所暫存的部分程式碼,當發生特定中斷時即開始執行。中断处理器(亦为中断服务常式)为透过系统处理器(Processor)所暂存的部分程式码,当发生特定中断时即开始执行。 一旦系統處理器偵測到中斷,則將暫停目前執行中的程式、執行儲存了系統狀態的環境切換(Context switch),並接著執行中斷處理器。一旦系统处理器侦测到中断,则将暂停目前执行中的程式、执行储存了系统状态的环境切换(Context switch),并接着执行中断处理器。 一旦中斷處理器程式碼執行完畢,系統處理器將取回先前程式的控制權。一旦中断处理器程式码执行完毕,系统处理器将取回先前程式的控制权。


中斷功能可用於定期的資料位置讀取與寫入作業。中断功能可用于定期的资料位置读取与写入作业。 以設計數位音樂播放器為例。以设计数位音乐播放器为例。 此系統將由3 組要素所組成– 輸入(可調整聲音準位的多種類比數據與濾波器)、處理器,與輸出(數位類比轉換器- DAC)。此系统将由3组要素所组成–输入(可调整声音准位的多种类比数据与滤波器)、处理器,与输出(数位类比转换器- DAC)。 則該系統將依下列步驟進行操作:系統處理器將讀取數據(Dial) 的數值、從記憶體中串流出聲音檔案、針對於資料套用濾波運算式,並將數值寫入至DAC。则该系统将依下列步骤进行操作:系统处理器将读取数据(Dial)的数值、从记忆体中串流出声音档案、针对于资料套用滤波运算式,并将数值写入至DAC。 透過計時器中斷,即可定期讀取數據的數值,以決定濾波運算式的參數。透过计时器中断,即可定期读取数据的数值,以决定滤波运算式的参数。 接著可設定第二組計時器中斷,以定期寫入至DAC。接着可设定第二组计时器中断,以定期写入至DAC。 此時系統處理器將全力連續套用濾波運算式至聲音檔案,並僅於讀取與寫入暫存器時會遭到中斷。此时系统处理器将全力连续套用滤波运算式至声音档案,并仅于读取与写入暂存器时会遭到中断。



管理中斷管理中断


透過專案中的「Build Specifications」,即可處理ARM 應用的中斷。透过专案中的「Build Specifications」,即可处理ARM应用的中断。 在「 Build Specifications Properties 」對話框中,工程師有2 種方法可建立並指派中斷處理器– 使用VI 或時脈迴路。在「 Build Specifications Properties 」对话框中,工程师有2种方法可建立并指派中断处理器–使用VI或时脉回路。 單一專案可同時使用此2 種方式,並於應用中處理多組硬體中斷。单一专案可同时使用此2种方式,并于应用中处理多组硬体中断。


接下來將說明應如何使用VI 與時脈迴路,以建立中斷處理器。接下来将说明应如何使用VI与时脉回路,以建立中断处理器。 此範例將使用圖1:ARM 中斷的專案檢視(Project View) 功能,將顯示包含高階VI 與建立規格的ARM 專案。此范例将使用图1:ARM中断的专案检视(Project View)功能,将显示包含高阶VI与建立规格的ARM专案。



圖1:ARM中斷的專案檢視(Project View)功能 图1:ARM中断的专案检视(Project View)功能



此專案將包含單一VI,可建立主要應用並構成MCB2300 ARM 硬體。此专案将包含单一VI,可建立主要应用并构成MCB2300 ARM硬体。 該應用將列印指令串(String) 至「 Processor Status 」視窗。该应用将列印指令串(String)至「 Processor Status 」视窗。 圖2:ARM Main Application VI 顯示範例VI 的程式區。图2:ARM Main Application VI显示范例VI的程式区。 其所包含的時脈迴路,將列印指令串至「 Processor Status 」視窗。其所包含的时脉回路,将列印指令串至「 Processor Status 」视窗。




圖2:ARM Main Application VI 图2:ARM Main Application VI



將VI 做為中斷處理器将VI做为中断处理器


下列步驟說明將VI 建立為中斷處理器的方法。下列步骤说明将VI建立为中断处理器的方法。


1. 對「Project explorer」中的ARM 系統按下滑鼠右鍵,並選擇New ? VI 1.对「Project explorer」中的ARM系统按下滑鼠右键,并选择New ? VI 此步驟將於專案中增加新的VI。此步骤将于专案中增加新的VI。 此VI 並將做為範例的中斷處理器。此VI并将做为范例的中断处理器。 接著點選File ? Save As以儲存此檔案。接着点选File ? Save As以储存此档案。 此範例中的檔案則命名為ISR1.vi。此范例中的档案则命名为ISR1.vi。




2. 接著即可撰寫處理中斷的程式碼。 2.接着即可撰写处理中断的程式码。 開啟方才建立的VI 程式區,並放置「 ARM Palette 」中的「 Console Output.vi 」。开启方才建立的VI程式区,并放置「 ARM Palette 」中的「 Console Output.vi 」。 所建立的指令串常數,將顯示於「 Processor Status 」視窗中。所建立的指令串常数,将显示于「 Processor Status 」视窗中。 此VI 將列印至操作介面,表示已執行該程式碼。此VI将列印至操作介面,表示已执行该程式码。 請注意,該程式碼周圍並無其他迴路架構。请注意,该程式码周围并无其他回路架构。 此表示計時器中斷的定期特性。此表示计时器中断的定期特性。





3. 完成了中斷處理器程式碼之後,則必須將處理器指派至中斷。 3.完成了中断处理器程式码之后,则必须将处理器指派至中断。 在「Project explorer」視窗中,於「 Build Specifications 」的「 Application 」按下滑鼠右鍵,並選擇「 Properties 」。在「Project explorer」视窗中,于「 Build Specifications 」的「 Application 」按下滑鼠右键,并选择「 Properties 」。





4. 接著將顯示「 Build Specification Properties 」視窗。 4.接着将显示「 Build Specification Properties 」视窗。





5. 在「 Category 」中選擇「 Manage Interrupts 」。 5.在「 Category 」中选择「 Manage Interrupts 」。 此範例所使用的硬體,將提供3 種計時器中斷功能。此范例所使用的硬体,将提供3种计时器中断功能。 而此範例接著選擇使用「 Timer 1 」。而此范例接着选择使用「 Timer 1 」。 從中斷清單中選擇「 Timer 1 」,並勾選「 Use interrupt 」方塊。从中断清单中选择「 Timer 1 」,并勾选「 Use interrupt 」方块。





6. 在「 Interrupt Handler 」框中點選「 VI 」按鈕。 6.在「 Interrupt Handler 」框中点选「 VI 」按钮。 點選箭頭以將ISR1.vi做為中斷處理器。点选箭头以将ISR1.vi做为中断处理器。 除了最高階的VI 之外,此專案中的任何VI 均可為中斷處理器。除了最高阶的VI之外,此专案中的任何VI均可为中断处理器。





7.針對此範例,其開機(Start-up) 狀態則為「 Enabled 」。 7.针对此范例,其开机(Start-up)状态则为「 Enabled 」。 依使用者的需要,可於開機階段將中斷設定為「 Disabled 」,並於應用中以程式設計的方式開啟之。依使用者的需要,可于开机阶段将中断设定为「 Disabled 」,并于应用中以程式设计的方式开启之。 此項作業將於稍後進行說明。此项作业将于稍后进行说明。 此外,「 Timer 1 」的中斷頻率,可透過「 Configure 」按鈕與「 Timer Configuration 」對話框進行設定。此外,「 Timer 1 」的中断频率,可透过「 Configure 」按钮与「 Timer Configuration 」对话框进行设定。





8. 按下「 OK 」按鈕。 8.按下「 OK 」按钮。 則完成了中斷處理器的設定。则完成了中断处理器的设定。 Build 」並「 Run 」該專案。Build 」并「 Run 」该专案。 則將顯示相似於下方圖片的「Processor Status」視窗。则将显示相似于下方图片的「Processor Status」视窗。 系統將定期呼叫中斷處理器,以中斷執行主要迴路,並將指令串輸出至「 Processor Status 」視窗。系统将定期呼叫中断处理器,以中断执行主要回路,并将指令串输出至「 Processor Status 」视窗。





將時脈迴路做為中斷處理器将时脉回路做为中断处理器


時脈迴路亦可做為中斷處理器。时脉回路亦可做为中断处理器。 此段落將說明建立時脈迴路,並將其做為中斷處理器的必要步驟。此段落将说明建立时脉回路,并将其做为中断处理器的必要步骤。 同樣的,圖1 與圖2 為此應用的基本步驟。同样的,图1与图2为此应用的基本步骤。


1. 以「 Main ARM Application.vi 」開始作業,將新增1 組時脈迴路,並接著做為中斷處理器。 1.以「 Main ARM Application.vi 」开始作业,将新增1组时脉回路,并接着做为中断处理器。 從「 Programming ? Structures? Timed Loop 」面板中選擇「 Timed Loop 」。从「 Programming ? Structures? Timed Loop 」面板中选择「 Timed Loop 」。 在VI 中建立第二組時脈迴路,以輸出至「 Processor Status 」視窗。在VI中建立第二组时脉回路,以输出至「 Processor Status 」视窗。




2. 時脈迴路必須設定可對應至外部的時脈源。 2.时脉回路必须设定可对应至外部的时脉源。 在輸入節點按下滑鼠右鍵,並選擇「 Configure Input Node 」。在输入节点按下滑鼠右键,并选择「 Configure Input Node 」。 接著點選「 Use Timing Source Terminal 」。接着点选「 Use Timing Source Terminal 」。





3. 接著從「 Programming ? Timed Loop 」面板中找到「 Create External Timing Source.vi 」,命名該時脈源並將其連接至時脈迴路的輸入節點。 3.接着从「 Programming ? Timed Loop 」面板中找到「 Create External Timing Source.vi 」,命名该时脉源并将其连接至时脉回路的输入节点。 此將成為該時脈迴路架構的名稱,並做為此範例的中斷處理器。此将成为该时脉回路架构的名称,并做为此范例的中断处理器。





4. 如稍早「將VI 做為中斷處理器」段落中所述,開啟「 Build Specification Properties 」視窗。 4.如稍早「将VI做为中断处理器」段落中所述,开启「 Build Specification Properties 」视窗。 在「Project explorer」視窗中,於「 Build Specifications 」的「 Application 」按下滑鼠右鍵,並選擇「 Properties 」。在「Project explorer」视窗中,于「 Build Specifications 」的「 Application 」按下滑鼠右键,并选择「 Properties 」。 在「 Category 」中選擇「 Manage Interrupts 」。在「 Category 」中选择「 Manage Interrupts 」。 此範例則使用「 Timer 2 」。此范例则使用「 Timer 2 」。 從中斷清單中選擇「 Timer 2 」,並勾選「 Use interrupt 」方塊。从中断清单中选择「 Timer 2 」,并勾选「 Use interrupt 」方块。





5. 在「 Interrupt Handler 」框中點選「 Timed Loop 」按鈕。 5.在「 Interrupt Handler 」框中点选「 Timed Loop 」按钮。





6. 輸出先前所指定的時脈迴路名稱– 此範例為「Interrupt Handler」。 6.输出先前所指定的时脉回路名称–此范例为「Interrupt Handler」。 此外,亦可設定「開機狀態( Startup State )」與中斷的頻率。此外,亦可设定「开机状态( Startup State )」与中断的频率。





7. 按下「 OK 」按鈕。 7.按下「 OK 」按钮。 現在已將時脈迴路設定為中斷處理器。现在已将时脉回路设定为中断处理器。 Build 」並「 Run 」該應用。Build 」并「 Run 」该应用。 同樣的,系統將定期呼叫中斷處理器。同样的,系统将定期呼叫中断处理器。 每次中斷均將執行該時脈迴路1 次。每次中断均将执行该时脉回路1次。 一旦迴路完成單次的迭代(Iteration),系統處理器即取回控制權。一旦回路完成单次的迭代(Iteration),系统处理器即取回控制权。





使用時脈迴路與VI 做為中斷處理器之間,其最重要的差異在於:時脈迴路中斷處理器,可由VI 中斷處理器進行中斷。使用时脉回路与VI做为中断处理器之间,其最重要的差异在于:时脉回路中断处理器,可由VI中断处理器进行中断。 若系統有2 個或以上的中斷處理器,則可進行此功能。若系统有2个或以上的中断处理器,则可进行此功能。 若時脈迴路的中斷處理器正執行中,且同時發生由VI 中斷處理器所進行的中斷,則該時脈迴路亦將遭到中斷。若时脉回路的中断处理器正执行中,且同时发生由VI中断处理器所进行的中断,则该时脉回路亦将遭到中断。


在使用單一中斷的應用中 ,時脈迴路的中斷方式具有較大優點。 在使用单一中断的应用中 ,时脉回路的中断方式具有较大优点。 可於主要應用邏輯的相同VI 中進行時脈迴路,以進一步簡化節點;而不需開發多重VI。可于主要应用逻辑的相同VI中进行时脉回路,以进一步简化节点;而不需开发多重VI。


使用中斷VI 面板(Interrupt VI Palette)使用中断VI面板(Interrupt VI Palette)


除了可指派中斷處理器之外,LabVIEW 亦可透過程式設計的方式,在ARM ? Interrupts面板進行下列VI,以啟動或停用中斷功能。除了可指派中断处理器之外,LabVIEW亦可透过程式设计的方式,在ARM ? Interrupts面板进行下列VI,以启动或停用中断功能。


「ARM Interrupt Enable 」可啟動先前所停用的中斷。 「ARM Interrupt Enable 」可启动先前所停用的中断。 此即使用程式設計的方式以停用中斷;或透過「 Manage Interrupts 」視窗,在開機(Startup) 階段及停用中斷。此即使用程式设计的方式以停用中断;或透过「 Manage Interrupts 」视窗,在开机(Startup)阶段及停用中断。 此VI 將根據指定的中斷號碼,於單一中斷上進行作業。此VI将根据指定的中断号码,于单一中断上进行作业。





ARM Interrupt Disable 」可讓工程師根據指定的中斷號碼,停用單一的中斷。ARM Interrupt Disable 」可让工程师根据指定的中断号码,停用单一的中断。





不論是透過程式設計方式或中斷管理視窗所停用的中斷,「 ARM Global Interrupt Enable 」則可啟用所有的中斷。不论是透过程式设计方式或中断管理视窗所停用的中断,「 ARM Global Interrupt Enable 」则可启用所有的中断。





ARM Global Interrupt Disable 」則可停用系統的所有中斷。ARM Global Interrupt Disable 」则可停用系统的所有中断。 當執行具時效性或不想遭外部事件所中斷的作業時,此功能特別受用。当执行具时效性或不想遭外部事件所中断的作业时,此功能特别受用。




於ARM 應用進行中斷的設計考量于ARM应用进行中断的设计考量


系統中的各個中斷,均具有無法以程式設計進行指派的優先性。系统中的各个中断,均具有无法以程式设计进行指派的优先性。 針對MCB2300 硬體來說,「 Timer 1 」具有最高優先性的中斷,「 Timer 2 」為第二高優先性,而「 Timer 3 」則為最低優先性的中斷。针对MCB2300硬体来说,「 Timer 1 」具有最高优先性的中断,「 Timer 2 」为第二高优先性,而「 Timer 3 」则为最低优先性的中断。 若同時有2 或以上的中斷發生,則將執行最高優先性的中斷。若同时有2或以上的中断发生,则将执行最高优先性的中断。 當處理中斷時,除了前述的時脈迴路中斷條件之外,均無法中斷該中斷處理器。当处理中断时,除了前述的时脉回路中断条件之外,均无法中断该中断处理器。 當系統正執行其他中斷處理器時,期間所發生的中斷將進入佇列狀態;然而,系統僅將進行來自於外部觸發器的最新中斷。当系统正执行其他中断处理器时,期间所发生的中断将进入伫列状态;然而,系统仅将进行来自于外部触发器的最新中断。 舉例來說,當系統正執行Timer 1 的中斷處理器時,Timer 2 發生了5 組中斷事件。举例来说,当系统正执行Timer 1的中断处理器时,Timer 2发生了5组中断事件。 當完成Timer 1 的中斷處理器之後,接下來將僅處理Timer 2 的最後(第5) 中斷。当完成Timer 1的中断处理器之后,接下来将仅处理Timer 2的最后(第5)中断。


當設計應用時,必須注意此遺失中斷的潛在特性。当设计应用时,必须注意此遗失中断的潜在特性。 為了最小化此遺失中斷的特性,共可建置2 種常見架構。为了最小化此遗失中断的特性,共可建置2种常见架构。 方法1 即是於中斷處理器中限制可耗費的時間。方法1即是于中断处理器中限制可耗费的时间。 當主要應用執行所有系統處理器的密集計算時,可將其限制為僅讀取或寫入變數。当主要应用执行所有系统处理器的密集计算时,可将其限制为仅读取或写入变数。 除此之外,亦可建構軟體以使用單一中斷,並於中斷處理器中進行系統處理器的密集計算。除此之外,亦可建构软体以使用单一中断,并于中断处理器中进行系统处理器的密集计算。 該主要應用則將等待中斷發生之時,方可進行作業。该主要应用则将等待中断发生之时,方可进行作业。 若需要於每次中斷時定期操作資料,即可使用此架構。若需要于每次中断时定期操作资料,即可使用此架构。 在此架構中,工程師必須確定:中斷處理器的執行時間低於中斷期間,以確保不會遺失任何中斷。在此架构中,工程师必须确定:中断处理器的执行时间低于中断期间,以确保不会遗失任何中断。




0 評分| 0.00之5 0评分| 0.00之5
閱讀語言 阅读语言 列印 | 列印 | PDF



合法 &lt;br /&gt;此教學由美商國家儀器(以下簡稱NI) 開發。 合法 &lt;br /&gt;此教学由美商国家仪器(以下简称NI)开发。 此教學受NI 技術支援,但未經完整測試及檢驗。此教学受NI技术支援,但未经完整测试及检验。 NI 不保證品質,亦不為其更新版本、相關產品及驅動程式等後續支援負責。 NI不保证品质,亦不为其更新版本、相关产品及驱动程式等后续支援负责。 此教學不具任何形式保證,且不受任何特定用途規範。此教学不具任何形式保证,且不受任何特定用途规范。 ( http://ni.com/legal/termsofuse/unitedstates/us/ )







我的個人檔案 | RSS | 線上隱私保護 | 安全聲明 | 連絡NI ? 2008 National Instruments Corporation. All rights reserved. | 我的个人档案 | RSS | 线上隐私保护 | 安全声明 | 连络NI ? 2008 National Instruments Corporation. All rights reserved. |

轉寄此頁面 轉寄此頁面



search%3Fq%3Dlabview%2Binterrupt%26complete%3D1%26hl%3Dzh-CN%26newwindow%3D1&tzo=-480&ms=342


iws_nw.png

iws_ne.png

iws_sw.png

iws_se.png

iws_tap.png

iws_tap_l.png

iws_tap_u.png

iws_tap_ul.png

iws_tap_rd.png

iws_tap_ld.png

点击看大图

点击看大图

iws_w.png

iws_e.png

点击看大图

点击看大图

点击看大图

iws_tab_dl.png

iws_tab_dr.png

iws_tab_l.png

iws_tab_r.png



iw_nw.png

iw_ne.png

iw_xtap.png

iw_xtap_l.png

iw_xtap_u.png

iw_xtap_ul.png

iw_xtap_rd.png

iw_xtap_ld.png

点击看大图

点击看大图

iw_w.png

iw_e.png

点击看大图

点击看大图

点击看大图

iw_sw0.png

iw_se0.png
close.gifmaximize.gifrestore.gif


logo_smallest.png

中文(繁体)原文:
此篇線上教學將說明ARM 微控制器的NI LabVIEW Embedded Module 中斷驅動(Interrupt driven) 程式設計方式,與管理中斷時的必要步驟。

plus_sm.gif更好的翻译建议

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
10
关闭 站长推荐上一条 /3 下一条