一種用arm單片機產生快速指數型脈沖輸出方法
【技術領域】
[0001]本發明涉及AMR單片機技術設備領域,具體是一種用ARM單片機產生快速指數型脈沖輸出方法。
【背景技術】
[0002]單片機是一種集成電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器R0M、多種I/O 口和中斷系統、定時器/計數器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、Α/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的微型計算機系統,在工業控制領域廣泛應用。從上世紀80年代,由當時的4位、8位單片機,發展到現在的300M的高速單片機。
[0003]在單片機+步進伺服馬達驅動系統中,要求運行時馬達有加減速的功能,以減少機械裝置的沖擊,現在多是采用簡單的定時器+10端口操作,模擬輸出線性脈沖和采用運動控制器的驅動方案來實現,采用運動控制器的驅動方案會導致成本過高,不能用在要求低成本的場合,采用單片機模擬線性肪沖輸出,精度差,頻率不穩定,不能平滑過渡,運動機構沖擊大。
【發明內容】
[0004]本發明的目的在于提供一種用ARM單片機產生快速指數型脈沖輸出方法,以解決上述【背景技術】中提出的問題。
[0005]為實現上述目的,本發明提供如下技術方案:
一種用ARM單片機產生快速指數型脈沖輸出方法,包括以下步驟:
(1)定時器設置:
1.1初始化定時器硬件,使其工作在脈沖調寬模式,占空比設為50% ;
1.2開通定時器周期更新中斷功能,將脈寬比較器設為最大值;
1.3使定時器開始計時工作,并允許ARM單片機可以響應定時器的周期中斷信號;
1.4使定時器處于系統周期中斷狀態,此狀態沒有脈沖輸出;
(2)輸入所要輸出脈沖序列的必要參數;
(3)計算指數曲線并將每個點的值保存于數組中;
循環執行以下步驟,循環次數等于總脈沖數:
3.1計算最終頻率與步驟3.3的計算結果(首次計算時取啟始頻率值)的差值;
3.2將步驟3.1的計算結果加步驟3.5的計算結果(首次計算時取0值)再除以加速時間;
3.3將步驟3.2的計算結果取整;
3.4將步驟3.3的計算結果保存入數組中備用;
3.5將步驟3.2的計算結果取余數;
3.6若步驟3.2的計算結果與最終的頻率相等則退出循環,完成計算; (4)在定時器的中斷更新周期中執行下列步驟,實現將已計算完成的曲線數組輸出:
4.1清除相關的中斷標志位;
4.2判斷曲線計算已完成,在本次脈沖序列的首次輸出時,執行步驟4.3,否則跳過步驟4.3,執行步驟4.4 ;
4.3將定時器的更新中斷周期設置為啟始頻率,定時器的比較器值設置為更新周期的一半;
4.4對輸出脈沖進行計數;
4.5如果步驟4.4的結果等于脈沖序列的總數時,設置定時器的比較器為最大值,使脈沖輸出停止;
4.6如果步驟4.4的結果小于脈沖序列的總數的一半,從預先計算的數組中,從頭開始順序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半;
4.7將步驟4.4的結果大于或等于脈沖序列的總數的一半,從預先計算的數組中,從尾部開始倒序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半。
[0006]作為本發明進一步的方案:所述步驟(2)中所要輸出脈沖序列的必要參數為脈沖序列的總脈沖數、脈沖序列的最終頻率、脈沖序列的啟始頻率和脈沖序列的加速時間。
[0007]與現有技術相比,本發明提供了一種用ARM單片機產生快速指數型脈沖輸出的方法;實現了指數曲線的計算,并保存在數組中;實現了用定時器對曲線的快速輸出;實現了指數曲線的加減速的對稱輸出。
【具體實施方式】
[0008]下面結合【具體實施方式】對本專利的技術方案作進一步詳細地說明。
[0009]一種用ARM單片機產生快速指數型脈沖輸出方法,包括以下步驟:
(1)定時器設置:
1.1初始化定時器硬件,使其工作在脈沖調寬模式,占空比設為50% ;
1.2開通定時器周期更新中斷功能,將脈寬比較器設為最大值;
1.3使定時器開始計時工作,并允許ARM單片機可以響應定時器的周期中斷信號;
1.4使定時器處于系統周期中斷狀態,此狀態沒有脈沖輸出;
(2)輸入所要輸出脈沖序列的必要參數;
(3)計算指數曲線并將每個點的值保存于數組中;
循環執行以下步驟,循環次數等于總脈沖數:
3.1計算最終頻率與步驟3.3的計算結果(首次計算時取啟始頻率值)的差值;
3.2將步驟3.1的計算結果加步驟3.5的計算結果(首次計算時取0值)再除以加速時間;
3.3將步驟3.2的計算結果取整;
3.4將步驟3.3的計算結果保存入數組中備用;
3.5將步驟3.2的計算結果取余數;
3.6若步驟3.2的計算結果與最終的頻率相等則退出循環,完成計算; 本步驟實現了脈沖序列以指定的上下限頻率和加速時間按指數規律進行變化的計算;用數組保存第一點的計算結果,并在定時器中斷程序中直接使用,使定時器的脈沖輸出頻率按數組中的元素值輸出,實現按脈沖的頻率指數規律變化;并且,由于實施了步驟3.1和步驟3.2,實現了在中斷程序中免去進行復雜計算,提高了實時性能,實現了快速脈沖輸出。
[0010](4)在定時器的中斷更新周期中執行下列步驟,實現將已計算完成的曲線數組輸出:
4.1清除相關的中斷標志位;
4.2判斷曲線計算已完成,在本次脈沖序列的首次輸出時,執行步驟4.3,否則跳過步驟4.3,執行步驟4.4 ;
4.3將定時器的更新中斷周期設置為啟始頻率,定時器的比較器值設置為更新周期的一半;
4.4對輸出脈沖進行計數;
4.5如果步驟4.4的結果等于脈沖序列的總數時,設置定時器的比較器為最大值,使脈沖輸出停止;
4.6如果步驟4.4的結果小于脈沖序列的總數的一半,從預先計算的數組中,從頭開始順序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半;
4.7將步驟4.4的結果大于或等于脈沖序列的總數的一半,從預先計算的數組中,從尾部開始倒序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半。
[0011]本步驟實現脈沖的自動輸出和自動停止,實現加速和減速對稱輸出。
[0012]作為本發明進一步的優選:所述步驟(2)中所要輸出脈沖序列的必要參數為脈沖序列的總脈沖數、脈沖序列的最終頻率、脈沖序列的啟始頻率和脈沖序列的加速時間。
[0013]本發明提供了一種用ARM單片機產生快速指數型脈沖輸出的方法;實現了指數曲線的計算,并保存在數組中;實現了用定時器對曲線的快速輸出;實現了指數曲線的加減速的對稱輸出。
[0014]上面對本專利的較佳實施方式作了詳細說明,但是本專利并不限于上述實施方式,在本領域的普通技術人員所具備的知識范圍內,還可以在不脫離本專利宗旨的前提下做出各種變化。
【主權項】
1.一種用ARM單片機產生快速指數型脈沖輸出方法,其特征在于,包括以下步驟: (1)定時器設置: 1.1初始化定時器硬件,使其工作在脈沖調寬模式,占空比設為50% ; 1.2開通定時器周期更新中斷功能,將脈寬比較器設為最大值; 1.3使定時器開始計時工作,并允許ARM單片機可以響應定時器的周期中斷信號; 1.4使定時器處于系統周期中斷狀態,此狀態沒有脈沖輸出; 輸入所要輸出脈沖序列的必要參數; 計算指數曲線并將每個點的值保存于數組中; 循環執行以下步驟,循環次數等于總脈沖數: 3.1計算最終頻率與步驟3.3的計算結果(首次計算時取啟始頻率值)的差值; 3.2將步驟3.1的計算結果加步驟3.5的計算結果(首次計算時取0值)再除以加速時間; 3.3將步驟3.2的計算結果取整; 3.4將步驟3.3的計算結果保存入數組中備用; 3.5將步驟3.2的計算結果取余數; 3.6若步驟3.2的計算結果與最終的頻率相等則退出循環,完成計算; 在定時器的中斷更新周期中執行下列步驟,實現將已計算完成的曲線數組輸出: 4.1清除相關的中斷標志位; 4.2判斷曲線計算已完成,在本次脈沖序列的首次輸出時,執行步驟4.3,否則跳過步驟4.3,執行步驟4.4 ; 4.3將定時器的更新中斷周期設置為啟始頻率,定時器的比較器值設置為更新周期的一半; 4.4對輸出脈沖進行計數; 4.5如果步驟4.4的結果等于脈沖序列的總數時,設置定時器的比較器為最大值,使脈沖輸出停止; 4.6如果步驟4.4的結果小于脈沖序列的總數的一半,從預先計算的數組中,從頭開始順序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半; 4.7將步驟4.4的結果大于或等于脈沖序列的總數的一半,從預先計算的數組中,從尾部開始倒序取出元素值,每次只取一個,將定時器的更新中斷周期設置為元素值,將定時器的比較器值設置為更新周期的一半。2.根據權利要求1所述的一種用ARM單片機產生快速指數型脈沖輸出方法,其特征在于,所述步驟(2)中所要輸出脈沖序列的必要參數為脈沖序列的總脈沖數、脈沖序列的最終頻率、脈沖序列的啟始頻率和脈沖序列的加速時間。
【專利摘要】本發明公開了一種用ARM單片機產生快速指數型脈沖輸出方法,包括以下步驟:(1)定時器設置:(2)輸入所要輸出脈沖序列的必要參數;(3)計算指數曲線并將每個點的值保存于數組中;(4)在定時器的中斷更新周期中執行下列步驟,實現將已計算完成的曲線數組輸出。本發明提供了一種用ARM單片機產生快速指數型脈沖輸出的方法;實現了指數曲線的計算,并保存在數組中;實現了用定時器對曲線的快速輸出;實現了指數曲線的加減速的對稱輸出。
【IPC分類】H02P8/14, H03K4/00
【公開號】CN105375904
【申請號】CN201510835332
【發明人】王偉程, 羅永明
【申請人】深圳市思榕科技有限公司
【公開日】2016年3月2日
【申請日】2015年11月26日