概述
本次測試用的是RA生態(tài)工作室提供的R7FA2E1A72DFL demo板,控制定時器輸出互補的帶死區(qū)PWM,并通過中斷觸發(fā)一對IO口的電平切換。
問題
為什么使用GPT輸出帶死區(qū)的互補PWM,進(jìn)入比較匹配中斷后會有一小段延時才開始執(zhí)行callback。
分析
觸發(fā)中斷后沒有馬上執(zhí)行邏輯操作,在底層耗時太長。
操作
使用e2 studio配置工程分析現(xiàn)象
1、GPT模塊的設(shè)置
時鐘框圖如下,GPT0是32位定時器,GPT4、GPT5、GPT6、GPT7、GPT8和GPT9是16位定時器。
圖1 GPT框圖
2、配置工程時需要注意對應(yīng)通道是0,4,5,6,7,8,9,沒有1,2,3。
配置過程:
timer7,P302->GTIOC7A,P301->GTIOC7B,20kHz,duty=50%,打開Capture A Interrupt(compare match A),輸出互補同步三角波pwm,死區(qū)設(shè)1us。
圖2 GPT配置
3、配置IO口在callback進(jìn)行翻轉(zhuǎn)
圖3 在timer7_callback觸發(fā)IO翻轉(zhuǎn)
現(xiàn)象如下:
A:死區(qū)時間AB設(shè)定為1us,1,2通道為GTIOC7A(P302)和GTIOC7B (P301)
B:觸發(fā)比較匹配中斷后,翻轉(zhuǎn)3(P103)通道和4(P104)通道的電平
從觸發(fā)中斷到完成3,4通道電平翻轉(zhuǎn)的時間AC為3.3us。
圖4 定時器中斷觸發(fā)IO翻轉(zhuǎn)時間
分析——使用GPT輸出帶死區(qū)的互補PWM,進(jìn)入比較匹配中斷后會有一小段時間的延時才開始執(zhí)行電平翻轉(zhuǎn):
a:通過操作寄存器完成翻轉(zhuǎn)的時間為350ns,因此排除操作IO口占用時間的因素
b:在callback中完成電平翻轉(zhuǎn)需要3.3us
4、為了縮短時間,把IO翻轉(zhuǎn)改到gpt_capture_a_isr中執(zhí)行,不在r_gpt_call_callback中執(zhí)行IO翻轉(zhuǎn),
圖5 gpt_capture_a_isr
圖6 觸發(fā)中斷到完成IO翻轉(zhuǎn)時間為AC:1.22us
結(jié)論
因為執(zhí)行r_gpt_call_callback前后還需要執(zhí)行一段代碼,執(zhí)行底層耗時過長,因此把callback改為NULL,然后在ISR底層中執(zhí)行R_PORT1->PCNTR3_b.POSR,是目前測試時間最短的操作了。
來源:瑞薩MCU小百科
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進(jìn)行處理
審核編輯 黃宇
-
PWM
+關(guān)注
關(guān)注
114文章
5118瀏覽量
213165 -
定時器
+關(guān)注
關(guān)注
23文章
3231瀏覽量
114326
發(fā)布評論請先 登錄
相關(guān)推薦
評論