原创 PIC24HJ单片机自学笔记-输出比较(PWM)

2014-1-16 06:16 1891 15 15 分类: MCU/ 嵌入式 文集: PIC24HJ单片机自学笔记
简介:
输出比较通过定时器与一个或者两个比较寄存器的值,其有多种模式可以选择,当定时器值匹配寄存器里面的值的时候,输出状态改变,可以输出一个脉冲,也可以输出一组脉冲,通过可以在匹配时间发生时产生中断。
输出比较模块有如下多种操作模式:
  • 单次时间拉高或者拉低
  • 翻转模式
  • 延时一个单次的模式
  • 连续脉冲模式
  • PWM模式(带故障和不带故障保护)
输出比较寄存器:
每一个输出比较模块都有如下的寄存器:
控制寄存器
输出比较寄存器和辅输出比较寄存器

控制寄存器:
OSCIDL:闲置时挂起还是继续有效
OCFLT:PWM的故障条件标志
OCTSEL:定时器选择
OCM:8种模式选择位

如果操作输出比较
  1. 定时器选择:定时器在控制寄存器中进行选择,选定的定时器从0开始计时,如果等于PR的值达到,则定时器清零,重新开始,定时器的时钟来源有两个,FOSC/2或者是TXCK输入的异步时钟。
  2. 模式选择,输出比较一共有8中模式选择,如下:
20140116061425124.jpg

几种模式的介绍如下:
  • 单次激活为低模式:也就是使能后,电平为低,如果匹配值到达,输出为高,同时输出一个中断。
  • 单次激活为高模式:跟上面的情况正好相反。
  • 翻转模式,用于产生50%的占空比,相当于上面的两种模式轮流开启。
  • 特殊说明,如果上面的三种模式,OCXR=0,则第一次匹配的时候不产生电平变化和中断
  • 延时单次模式:激活时为低,第一次匹配不中断,只拉高电平,再一次匹配,则拉低+中断。
  • 连续脉冲模式:激活时为低,匹配时拉高,再匹配时拉低,此时产生中断。用于产生固定占空比的方波。
  • 特殊说明:上面的两种情况下,RS,R,PRY的大小有大小要求,同样,如果OCXR=0,第一个定时器周期放弃。
  • 无故障保护的PWM模式:PWM用于产生可变占空比,此时占空比通过RS调整,它作为R的一个影子寄存器,以防止出现故障。此时R只能读,OCX激活时的电平取决于OCXR是否为0,当定时器工作,匹配R后OCX拉低。然后定时器继续,RS加载到R上,OCX电平继续取决于OCXR。
20140116061442693.jpg
简单来说,当OCXR一开始不是为0,也就是为20的时候,OCX拉高,当定时器到达20的时候,OCX拉低,然后定时器继续跑,跑完这个周期后,RS=50加载进来,同时OCX拉高继续下一个周期。
而如果OCXR一开始为0,则OCX一开始为低,跑完这个周期以后拉高,然后加载RS进来开始下一个周期。
PWM的周期和占空比通过上面的描述也容易计算出来。

  • 带故障保护的PWM模式,这种模式下,如果有FAULT的条件,输出为三态,其他和上面的相同。OCFA和OCFB就是这个异常状态的来源,如果此位被拉低,则会产生一个三态输出,同时如果设置了中断,则中断产生。使用的时候可以通过上下拉来设置输出脚,而不是三态输出。
输出比较的DMA操作
和操作其他的DMA类似,具体看程序。

在节能模式下的操作:
睡眠模式下,OC不工作,如果故障检测功能开,则也会被拉高,但是如果芯片被唤醒,会加入到中断列队中。
闲置模式,如果选择继续工作,则全速全功能工作,如果选择不工作,功能同睡眠模式。

IO的配置
如果使能OC模块,则IO被模块控制,不再需要配置LAT和TRIS,只有在带故障检测的PWM,故障的输入引脚需要配置为输入,这里要注意。但是部分芯片,这种模式下,IO要配置为输出,具体要看手册。

官网有如下的资料,如果需要可以下载深入进行了解:
20140116061456717.jpg
















PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
15
关闭 站长推荐上一条 /3 下一条