历史上的今天
今天是:2025年03月06日(星期四)
2020年03月06日 | 【PIC32MZ】PWM呼吸灯
2020-03-06 来源:eefocus
PWM类似于开关电源,将高电压中间插入地脉冲,来将有效电压降低,在某些电压不敏感器件中,可以实现电压降低的效果。例如LED的亮度变化。
前文有说过,Harmony的Dynamic还不是很完善,在PWM上就有体现,PWM需要OC与静态Timer配合,如果有其它Timer在在使用Dynamic,不想全部改为Static,可以直接使用PLIB函数,可以从其它Static函数往底层去看,也是通过static调用的PLIB函数。
所以,在这里我们只配置OC,而对应的Timer则采用直接调用底层函数的方法使用static驱动。
注意,PWM的占空比指的是高电位占空比,例如80%指的是80%为高电位。
呼吸灯则是使用另外一个Timer,来分段设置不同的占空比,0-100% 、100%-0 不断修改占空比,Timer分的越细,呼吸灯越流畅,例如定时器每隔10ms变化1%与每隔1ms变化0.1%相比,都是1s由亮变暗或者由暗变量,后者肯定比前者过渡更好,更细腻。但是为了确保不会出现频繁终端,在人眼无法分辨情况下,定时器间隔越大越好。
1、配置驱动

2、配置输出引脚

3、生成代码,使用PWM
//high level occupy timer period Percentage,example:80 express 80% time high,20% low
void Start_PWM_OUT(uint8_t DutyCycle)
{
DRV_OC0_Start();
PLIB_OC_PulseWidth16BitSet(OC_ID_1, 2000*DutyCycle/100);
/* Initialize Timer Instance0 */
/* Disable Timer */
PLIB_TMR_Stop(TMR_ID_2);
/* Select clock source */
PLIB_TMR_ClockSourceSelect(TMR_ID_2, TMR_CLOCK_SOURCE_PERIPHERAL_CLOCK);
/* Select prescalar value */
PLIB_TMR_PrescaleSelect(TMR_ID_2, TMR_PRESCALE_VALUE_256);
/* Enable 16 bit mode */
PLIB_TMR_Mode16BitEnable(TMR_ID_2);
/* Clear counter */
PLIB_TMR_Counter16BitClear(TMR_ID_2);
/*Set period */
PLIB_TMR_Period16BitSet(TMR_ID_2, 2000);
PLIB_TMR_Start(TMR_ID_2);
}
void Stop_PWM_OUT(void)
{
DRV_OC0_Stop();
PLIB_TMR_Stop(TMR_ID_2);
}
史海拾趣
|
嵌入式音频系统广泛应用于GPS自动导航、PDA、3G手机等嵌入式领域,但目前国内在这方面的研究较少。 M开发论坛 音频系统设计包括软件设计和硬件设计两方面,在硬件上使用了基于IIS总线的音频系统体系结构。IIS(Inter-IC Sound bus)又称I2S,是菲利 ...… 查看全部问答> |
|
前些天在完成了NXP LPC1343开发板 学习之旅序言后,继续研习一些基础知识,所谓工欲善其事必先利其器吗,但是学习完后就没有时间来和大家一起分享和讨论下,有时候,跟产品打交道就是比较麻烦,硬件很稳定了,又要降价,到处找便宜的可替代的芯片, ...… 查看全部问答> |
|
一个鼠标和键盘,通过连接,控制两台电脑 就和一台电脑两台显示器的使用一样 鼠标能从这个显示器的桌面移动到另一个显示器桌面 因为我有多台电脑,很烦人的事情出现了 桌子上摆满了键盘和鼠标,我如果用一个鼠标和键盘控制,那该多好啊 当我用 ...… 查看全部问答> |
|
由于实验室没有3V的单片机和3V的MAX232,我焊上了5V的单片机STC89C516RD和MAX232,把PCB板子上的线路稍微改动了下,单片机工作正常,能下载程序,现在还没有驱动传感器,不知道能否成功驱动传感器 … 查看全部问答> |




