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

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

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

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

[復(fù)制鏈接]

332

主題

332

帖子

3064

積分

四級(jí)會(huì)員

Rank: 4

積分
3064
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-5 17:31:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容
直接來源 | 瑞薩嵌入式小百科
概述:本次測(cè)試用的是RA生態(tài)工作室提供的R7FA2E1A72DFL demo板,控制定時(shí)器輸出互補(bǔ)的帶死區(qū)PWM,并通過中斷觸發(fā)一對(duì)IO口的電平切換。
問題:為什么使用GPT輸出帶死區(qū)的互補(bǔ)PWM,進(jìn)入比較匹配中斷后會(huì)有一小段延時(shí)才開始執(zhí)行callback。
分析:觸發(fā)中斷后沒有馬上執(zhí)行邏輯操作,在底層耗時(shí)太長(zhǎng)。
使用e2 studio配置工程分析現(xiàn)象
1
GPT模塊的設(shè)置
時(shí)鐘框圖如下,GPT0是32位定時(shí)器,GPT4、GPT5、GPT6、GPT7、GPT8和GPT9是16位定時(shí)器。


圖1 GPT框圖

2
配置工程時(shí)需要注意對(duì)應(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ū)時(shí)間AB設(shè)定為1us,1,2通道為GTIOC7A(P302)和GTIOC7B (P301)
B:觸發(fā)比較匹配中斷后,翻轉(zhuǎn)3(P103)通道和4(P104)通道的電平
從觸發(fā)中斷到完成3,4通道電平翻轉(zhuǎn)的時(shí)間AC為3.3us。

圖4 定時(shí)器中斷觸發(fā)IO翻轉(zhuǎn)時(shí)間
分析——使用GPT輸出帶死區(qū)的互補(bǔ)PWM,進(jìn)入比較匹配中斷后會(huì)有一小段時(shí)間的延時(shí)才開始執(zhí)行電平翻轉(zhuǎn):
a:通過操作寄存器完成翻轉(zhuǎn)的時(shí)間為350ns,因此排除操作IO口占用時(shí)間的因素
b:在callback中完成電平翻轉(zhuǎn)需要3.3us

4
為了縮短時(shí)間,把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)時(shí)間為AC:1.22us

結(jié)論

因?yàn)閳?zhí)行r_gpt_call_callback前后還需要執(zhí)行一段代碼,執(zhí)行底層耗時(shí)過長(zhǎng),因此把callback改為NULL,然后在ISR底層中執(zhí)行R_PORT1->PCNTR3_b.POSR,是目前測(cè)試時(shí)間最短的操作了。

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


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


MPU使用GCC編譯的過程


單片機(jī)和PHY芯片連接時(shí)的注意事項(xiàng)

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

本版積分規(guī)則


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