大家好、
我正在尝试编写一个小型 HET 程序、以生成占空比居中的 PWM、直到其周期。 目前、我正在使用 HET IDE 对代码进行仿真。我在只使用低分辨率的情况下实现了一个工作程序、并使用了以下代码:
l00 CNT{next = L01、reg = A、IRQ = OFF、max = 10、data = 0}; L01 ECMP{next = L02、hr_lr = low、en_pin_action=on、cond_addr=L00、pin = 0、action= set、reg = a、data= 4}; L02 ECMP{next = r_pin、action=6、hr_action=on、alt = rn、alt = r_action= rn、alt、alt = 0、alt = r_action=on、alt、alt = rn、alt、alt = r_action=
这将生成占空比为20%并以周期为中心的 PWM。
现在、如果我想使用高分辨率以较小的步长设置占空比、我尝试了以下代码:
l00 CNT{next = L01、reg = A、IRQ = OFF、max = 10、data = 0}; L01 ECMP{next = L02、hr_lr = HIGH、En_PIN_ACTION = ON、COND_addr = L00、PIN=0、ACTION = SET、RE= A、DATA=3、hr_DATA=64};r_ACT_CONTACTION = Lr、LMP=ON、LMP=64、RAPin、ACT_ACT_ACT_ACT_CONTRATE、LMP=ON、LMP=ON、LMP=0、RAME = 0、RANT、LMP=ON、LMP=ON、RANT=6、RAPin、RAME
如果我理解正确、这应该会生成占空比为30%的 PWM。 但实际上、在经过3个半循环后、该引脚正确设置为高电平、但绝不会再次清零为低电平。 它永远保持高电平。
我用不同的设置做了一些小的播放、但没有找到任何解决方案或提示。
我不理解的另一点是 hr_data=64命令。 我的预分频器是 HR = 1和 LR = 32、如果我查看仿真、我会在一个 LR 环路中得到32个 HR 环路。 但是、为什么我必须为半循环分辨率写入 hr_data=64呢? 当我将该值写入指令时、存储器中的实际数据 HR 字段会正确填充16 (半个循环)。 转换发生在哪里?
如果有人能向我解释我的错误、我会非常高兴。
您好!
Steffen