N76E003 PWM之极性控制

关于N76E003 最简单的PWM程序及分析可以看这里
可能一些同学可能对PWM的极性控制不怎么理解(对,说的就是我自己。。。),那么就让我们在本次博文中,一起来探究下极性控制的原理及程序吧。如果有描述错误的情况,希望各位大佬指出。

首先我们来看看官方手册中对极性控制的描述,其中可以发现,对于PWM极性,是通过PNPn来进行控制的。
这里写图片描述
N76E003 PWM之极性控制_第1张图片

知道极性控制寄存器后,我们再来看看单片机内部的模块图,我们可以发现,PNPn寄存器,是对应通道二选一选择器的选择端,在默认情况下,PNPn为0,即正常输出,当PNPn寄存器置高时,PWM信号会被一个取反器控制。通俗一点来说,就是原先的占空比是控制高电平持续时间,现在通过这个取反器,使得占空比为低电平持续时间,之后变为高电平。
N76E003 PWM之极性控制_第2张图片
既然原理都明白了,接下来就让我们来看看官方例程中的相关代码吧(有一点小小修改),将disable更改为enable。
关闭使能后会造成无法无PWM输出的问题。

		PWM5_P03_OUTPUT_ENABLE;//使能PWM5_P03的输出
		PWM_IMDEPENDENT_MODE;//配置模式
		PWM_CLOCK_DIV_8;//8分频
		PWMPH = 0x07;//周期设定1ms
		PWMPL = 0xCF;
/**********************************************************************
	PWM frequency = Fpwm/((PWMPH,PWMPL) + 1)  
								= (16MHz/8)/(0x7CF + 1)
								= 1KHz (1ms)
***********************************************************************/
		set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
	    PWM5H = 0x01;//500(Dec)                
	    PWM5L = 0xf4;
		clr_SFRPAGE;											
		// PWM output inversly enable 
		PWM5_OUTPUT_INVERSE;//开启极性控制
		//-------- PWM start run--------------
    set_LOAD;
    set_PWMRUN;

但在官方例程中,要实现极性控制需要先关闭相关PWM的使能,在配置完频率及占空比后,再将该通道PWM设定为为极性控制。PWM5_P03_OUTPUT_DISABLE;但实际测试得知,这样配置PWM,会造成最终没有PWM输出

接下来我们将程序下载到单片机中,通过逻辑分析仪,看看实际运行效果
N76E003 PWM之极性控制_第3张图片
使能P0.1和P0.3两个管脚,程序中PWM5为极性控制输出,PWM4为正常输出,占空比均设定为0.25ms,周期1ms。
N76E003 PWM之极性控制_第4张图片

你可能感兴趣的:(N76E003,N76E003,单片机,学习,极性控制,PWM,新唐单片机,N76E003)