|
基本数据
功能说明
Question 1
HT45FM03B提供几个PWM输出?
Answer
HT45FM03B提供6个PWM输出通道,分别是PWM0H, PWM0L, PWM1H, PWM1L, PWM2H, PWM2L。也可以设定为互补式输出,PWM0H, PWM0L一组、PWM1H, PWM1L一组与PWM2H, PWM2L一组。
Question 2
如何设定PWM为Active High或是Active Low?
Answer
请在IDE3000底下的Tools Configuration Option选项中
1. PWMLEV选项中选择PWMxH输出为Active High或是Active Low
2. PWMCLEV选项中选择PWMxL输出为Active High或是Active Low
Question 3
如何设定PWM的分辨率为(8+2) bit?
Answer
请在IDE3000底下的Tools Configuration Option选项中PWM Mode选择(8+2) Mode
Question 4
如何设定PWM的频率?是否可以设定3组PWM都不同的频率?
Answer
设定PWMC1寄存器当中的Bit7~Bit5 PWMPS2~PWMPS0这三个Bit,详细情形请参考Data Sheet的第32页与第33页。6个PWM只能有一个PWM频率,无法各别设定。
Question 5
如何设定PWM的Duty Cycle?是否可以设定3组PWM都可以有不同的Duty Cycle?
Answer
1. 将PWM Duty Cycle的值分别写入PWMxH与PWMxL寄存器,特别注意PWM0H与PWM0L输出的PWM Duty Cycle相同、PWM1H与PWM1L输出的PWM Duty Cycle相同、PWM2H与PWM2L输出的PWM Duty Cycle相同。
2. 在IDE3000底下的Tools Configuration Option选项中PWM Duty Mode可以选择3组PWM都可以有不同的Duty Cycle或是都相同的Duty Cycle
Question 6
如何让PC0, PC3, PC5输出PWM讯号?
Answer
设定步骤如下:
1. 设定PWMxH与PWMxL为Active High或是Active Low
2. 设定PWM Mode为10 bit或(9+1) bit或(8+2) bit或(7+3) bit
3. 设定PWM的频率。
4. 设定PCPWMC寄存器的Bit 0, Bit 3, bit 5为High,表示PC0, PC3, PC5切换成PWM模式,其余Bit设定为0表示当I/O使用。
5. 设定PCPWMD寄存器的Bit 0, Bit 3, bit 5为High,表示PWM0HD, PWM1LD, PWM2LD输出为PWM讯号,其余Bit设定为0表示当I/O使用。
6. 将PWMC0的Bit 0 PWMEN设为Enable (High)
7. 将PWMC0的Bit 6 PWMCTRL设为Active (High)
8. 将PWM Duty Cycle的值分别写入PWMxH与PWMxL寄存器。
9. 将方向控制寄存器PCC0, PCC3, PCC5设为Low,将I/O寄存器当中的PC0, PC3与PC5设为High
Question 7
PCPWMC寄存器当中的PWM Buffer的作用为何?
Answer
当
1. PWMBUF为Low时,表示PWM Duty Cycle寄存器内的值有更新时马上改变目前的PWM Duty Cycle。
2. PWMBUF为High时,表示PWM Duty Cycle寄存器内的值有更新时等到下一个PWM周期开始时再改变PWM Duty Cycle。
Question 8
如何设定PWM为互补式输出?
Answer
步骤如下
1. 将PWMC0寄存器的Bit 1 PWMCEN设为High,表示PWMxH与PWMxL切成互补式PWM输出。
2. 如果要产生Dead Time,将PWMC0寄存器的Bit 2 DTEN设为High,表示PWMxH与PWMxL互补式PWM输出要加入Dead Time。
Question 9
如何设定Dead Time时间长短?
Answer
步骤如下:
1. 设定Dead Time与系统频率间的关系,可以先设定MISC寄存器当中的Bit7与Bit6 DTPS1, DTPS0。
2. 设定PWMC0寄存器当中的Bit5~Bit3 PWMDT2~PWMDT0这三个Bit来取的Dead Time长短。详细情形请参考Data Sheet的第42页。3组PWM只能有一个Dead Time,无法各别设定。
Question 10
如何让PWM输出产生中断?
Answer
设定INTC1寄存器当中的Bit 0 EPWMI为Enable (High)与INTC0寄存器当中的Bit 0 EMI为Enable (High)就可以让PWM在每个上升缘产生中断。
Question 11
有那些方式可以关掉PWM输出?
Answer
步骤如下:
1. 在IDE3000底下的Tools Configuration Option选项中Comparator Interrupt Source选PA3 Falling Edge或是Comparator Output Falling Edge来关掉PWM输出
2. 设定PWMC1寄存器当中的Bit 4~Bit 2 PWMSP2~PWMSP0这三个Bit来决定用那些条件关掉或是打开PWM输出。说明如下:
| PWMSP2~PWMSP0 |
说明 |
000 |
由使用者程序来关掉或是打开PWM输出 |
001 |
当比较器输出产生下降缘或是PA3输入有下降缘产生时关掉PWM输出 |
010 |
外部中断编号1产生中断时关掉PWM输出 |
011 |
当比较器输出产生下降缘或是PA3输入有下降缘产生时关掉PWM输出或是外部中断编号1产生中断时关掉PWM输出 |
100 |
- 当比较器输出产生下降缘或是PA3输入有下降缘产生时让PWMxH输出Inactive电位、PWMxL输出Active电位。
- 当比较器输出产生上升缘或是PA3输入有上升缘产生时PWM回复到触发前的状态
|
PWMSP2~PWMSP0 |
说明 |
101 |
- 当比较器输出产生下降缘或是PA3输入有下降缘产生时让PWMxH输出Inactive电位,但是PWMxL依然是输出PWM讯号。
- 当比较器输出产生上升缘或是PA3输入有上升缘产生时,PWMxH的输出回复到触发前的状态
|
110 |
当比较器输出产生下降缘或是PA3输入有下降缘产生时让PWMxH输出Inactive电位,但是PWMxL依然是输出PWM讯号。 |
111 |
当比较器输出产生下降缘或是PA3输入有下降缘产生时让PWMxH输出Inactive电位、PWMxL输出Active电位。 |
Question 12
如何让PWM产生中断时触发ADC转换?
Answer
设定步骤如下:
1. 设定INTC1寄存器当中的Bit 0 EPWMI为Enable (High)与INTC0寄存器当中的Bit 0 EMI为Enable (High)就可以让PWM在每个上升缘产生中断。
2. 设定PWMC2寄存器当中的Bit 0 PWMTAD为Enable (High)
3. 当PWM中断产生后经过3个ADC Clock才开始作转换,ADC转换完之后可以到ADRH寄存器与ADRL寄存器读取转换当时的模拟讯号电压大小
Question 13
DBTC寄存器的Bit 4 BLDCMD的用途为何?
Answer
在BLDC马达的应用中有可能上下臂的驱动讯号都是PWM讯号、也有可能上臂是PWM讯号,下臂是High或Low电位。如果驱动的方式是上臂是PWM讯号,下臂是High或Low电位,为了防止上下臂可能同时导通 (因为程序切换的关系),因此,当BLDCMD等于Enable(High)时表示用硬件的方式防止上下臂同时导通(优先权高于程序切换结果)。
应用说明
注意事项
Question 1
若 Holtek MCU 使用 HIRC,且使用与 OSC1共用的 I/O pin做过零检测 (AC zero Crossing) 时,对 HIRC 的频率是否有影响?若有影响,哪些 MCU会受到这种影响?如何处理这种影响?
Answer
当 Holtek MCU 使用 HIRC,并使用与OSC1共用的 I/O pin 做过零检测时,会影响 HIRC 的频率。
受到这种影响的 MCU 范围:
所有OSC1 与 I/O pin共用的 MCU (包含增强型 OTP Type MCU和Flash Type MCU 等)
对这种影响的处理方法:
1.请尽量避开使用与OSC1 共享的 I/O pin 做过零检测;
2.若无法避开,则需添加外围电路,将输入到 OSC1 pin 的电压限制在 VDD 与 VSS 之间。
其它
|