
实验14:PWM调节LED亮度
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本实验通过编程控制PWM信号,实现对LED灯亮度的精细调节,探索模拟信号在数字电路中的应用原理。
尽管nrf51822芯片缺少PWM模块,但可以通过巧妙地结合PPI(硬件事件发生器)与定时器中断来实现类似功能。其基本思路是利用定时器的三个比较通道CC0、CC1以及CC2,在任一比较事件触发时通过PPI翻转GPIO引脚的状态。
在初始化阶段会这样配置这三个比较通道:
- `NRF_TIMER2->CC[0] = MAX_SAMPLE_LEVELS + next_sample_get();`
- `NRF_TIMER2->CC[1] = MAX_SAMPLE_LEVELS;`
- 初始情况下,`CC2`的值为零。
这种设置可能导致一个问题:当计数器达到比较通道cc0时会继续向下计数,并且在下一次溢出回到cc2(即归零)前,波形会被分为三段。这显然不是我们所期望的结果。因此要实现PWM功能,需要将CC2的值调整至超过CC0的位置。
有两种方法可以解决这个问题:一种是通过中断重置计数器来避免冲突;另一种是在第一次cc1比较中断中重新设置cc1为两倍初始值,并且同时更新cc2到`cc1 + N`, 其中N代表占空比参数。在第二次中断时,将CC0的值设为新的目标。
通过以上步骤,可以实现利用nrf51822芯片生成PWM波形的功能。
全部评论 (0)
还没有任何评论哟~


