電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 72|回復(fù): 0
收起左側(cè)

RA2單片機(jī)定時器帶死區(qū)互補(bǔ)PWM中斷延時問題

[復(fù)制鏈接]

418

主題

418

帖子

4293

積分

四級會員

Rank: 4

積分
4293
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-5 17:31:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)注+星標(biāo)公眾,不錯過精彩內(nèi)容
直接來源 | 瑞薩嵌入式小百科
概述:本次測試用的是RA生態(tài)工作室提供的R7FA2E1A72DFL demo板,控制定時器輸出互補(bǔ)的帶死區(qū)PWM,并通過中斷觸發(fā)一對IO口的電平切換。
問題:為什么使用GPT輸出帶死區(qū)的互補(bǔ)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),輸出互補(bǔ)同步三角波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ū)的互補(bǔ)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,是目前測試時間最短的操作了。

------------ END ------------


Modbus的學(xué)習(xí)路徑及技術(shù)要點(diǎn)


MPU使用GCC編譯的過程


單片機(jī)和PHY芯片連接時的注意事項
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表