主题中讨论的其他器件: HALCOGEN
大家好、
我在 TMS570LS3137上运行一个16kHz 的三相对称 PWM。
HET 代码基于 TI 的示例、该示例在该论坛的多个修订版中发布。
我的主要新增功能是生成 ISR 和 ADC 触发(32kHz 时)以及旋转变压器激励(8kHz 时)的其他几个计时器。
下面是一个代码 snip:
;--- 程序入口点
;处于循环中将所有引脚初始化为输出低电平,并清除计数器和状态(NXTxLOON)
;直到软件通过写入非零数据来启用 PWM 程序
启动 SUB {src1 = IMM、src2 =零、dest=none、data=0、hr_data=0}
br {event=NZ、COND_addr= TBASEINT}
添加 {src1 = IMM、src2 =零、dest=T、rdest=REM、remote=TBASE1、 DATA=1FFFFFFh、hr_data=0}
MOV64{en_pin_action=on、 reg=T、pin=PEROUT、action=clear、data=0、 HR_DATA=0、COND_addr=PERSET、REMOTE =PERPIN、COMP_MODE=ECMP}
添加 {src1 =零、src2 =零、dest=none、rdest=REM、data=0、 HR_DATA=0、REMOTE =PERCLR}
添加 {src1 =零、src2 =零、dest=none、rdest=REM、data=0、 HR_DATA=0、REMOTE =NXTALOON}
添加 {src1 =零、src2 =零、dest=none、rdest=REM、data=0、 HR_DATA=0、REMOTE =NXTBLOON}
添加 {src1 =零、src2 =零、dest=none、rdest=REM、data=0、 HR_DATA=0、REMOTE =NXTCLOON、NEX=AHIONINIT}
;中断:应用程序定时的主计数器
TBASEINT CNT {reg = A、max = defperint、data = defdladc}
;ADC:下降沿将触发 ADC 采样(请参阅 HALCoGen ADC 事件组设置),重要提示:启用此行以在 HALCoGen HET 设置中生成中断!!!
ADCCTRL ECMP {reg = A、IRQ = on、en_pin_action = on、hr_lr = HIGH、pin = defpinadc、 操作= PULSELO、数据= defdcadclr、hr_data = defdcadchr}
; ADC:与 ADC 触发器进行相同的比较,但没有 IRQ,并且在不同的引脚上下降以支持调试
ADCTEST ECMP {reg = A、en_pin_action = on、hr_lr = HIGH、pin = defpintest、action = PULSELO、 数据= defdcadclr、hr_data = defdcadchr}
;旋转变压器:重要:我们使用不同的计时器!!!
TBASERES CNT {reg = B、max = deferres、data = defdlres}
RESCTRL ECMP{reg = B、en_pin_action = on、hr_lr= HIGH、pin = defpinres、action = PULSELO、 数据= defdcreslr、hr_data = defdcreshr}
TBASE1 CNT {comp=GE、reg=T、max=cntmax_LR、data=1FFFFFFh};
(笑声)
新的项目要求是同步两个完全相同的反相器的 PWM (每个反相器都使用自己的 TMS570)。
要实现这一点的总体算法仍在开发中、但最后我需要做的是在线更改计时器的所有周期和相移寄存器!
HETGCR.CMS[16]看起来很有希望、但似乎只对片上产品有所帮助...
是否有任何关于调整 HET 计划的想法或提示?
此致、
Ralph