N76E003 PWM之极性控制
关于N76E003 最简单的PWM程序及分析可以看这里
可能一些同学可能对PWM的极性控制不怎么理解(对,说的就是我自己。。。),那么就让我们在本次博文中,一起来探究下极性控制的原理及程序吧。如果有描述错误的情况,希望各位大佬指出。
首先我们来看看官方手册中对极性控制的描述,其中可以发现,对于PWM极性,是通过PNPn来进行控制的。
知道极性控制寄存器后,我们再来看看单片机内部的模块图,我们可以发现,PNPn寄存器,是对应通道二选一选择器的选择端,在默认情况下,PNPn为0,即正常输出,当PNPn寄存器置高时,PWM信号会被一个取反器控制。通俗一点来说,就是原先的占空比是控制高电平持续时间,现在通过这个取反器,使得占空比为低电平持续时间,之后变为高电平。
既然原理都明白了,接下来就让我们来看看官方例程中的相关代码吧(有一点小小修改),将disable更改为enable。
关闭使能后会造成无法无PWM输出的问题。
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
void main(void)
{Set_All_GPIO_Quasi_Mode;//所有IO设置为双向模式PWM5_P03_OUTPUT_ENABLE;//使能PWM5_P03的输出PWM4_P01_OUTPUT_ENABLE;//使能PWM4_P01的输出PWM_IMDEPENDENT_MODE;//配置模式PWM_CLOCK_DIV_8;//8分频PWMPH = 0x07;//周期设定1msPWMPL = 0xCF;
/**********************************************************************PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) <Fpwm = Fsys/PWM_CLOCK_DIV> = (16MHz/8)/(0x7CF + 1)= 1KHz (1ms)
***********************************************************************/set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page PWM5H = 0x01;//500(Dec)这里的500,是07CF+1=1999/4得到的PWM5L = 0xf4;PWM4H = 0x01;PWM4L = 0xf4;clr_SFRPAGE; // PWM output inversly enable PWM5_OUTPUT_INVERSE;//开启极性控制//-------- PWM start run--------------set_LOAD;set_PWMRUN;while(1){//构建你的代码,LOAD会自动重载,PWM持续输出。}
}
但在官方例程中,要实现极性控制需要先关闭相关PWM的使能,在配置完频率及占空比后,再将该通道PWM设定为为极性控制。PWM5_P03_OUTPUT_DISABLE;
但实际测试得知,这样配置PWM,会造成最终没有PWM输出
接下来我们将程序下载到单片机中,通过逻辑分析仪,看看实际运行效果
使能P0.1和P0.3两个管脚,程序中PWM5为极性控制输出,PWM4为正常输出,占空比均设定为0.25ms,周期1ms。
N76E003 PWM之极性控制相关推荐
- 基于STM32使用PWM调速控制直流电机
PWM调速控制直流电机 网上找的历程,实现可以,但是无法随我自己的意愿改变速度,还是有问题. 代码如下: #include "delay.h" #include "sys ...
- 【飞控开发基础教程9】疯壳·开源编队无人机-PWM(电机控制)
COCOFLY教程 --疯壳·无人机·系列 PWM(电机控制) 图1 一.PWM 简介 脉冲宽度调制(PWM),是英文"Pulse Wi ...
- 基于L298N的STM32的直流电机PWM调速控制
这两天研究了一下基于L298N与stm32的直流电机调速,实验结果良好,可以根据调节STM32的PWM占空比来进行直流电机的调速.实验系统图如下: 首先整个PWM实验选用的是stm32f103系列,驱 ...
- 【开源教程16】疯壳·开源编队无人机-PWM(电机控制)
COCOFLY教程 --疯壳·无人机·系列 PWM(电机控制) 图1 一.PWM 简介 脉冲宽度调制(PWM),是英文"Pulse Wi ...
- linux pwm控制蜂鸣器 滴滴_51单片机PWM直流电机PID控制转速源程序
\ AT89C51单片机PWM直流电机转速PID控制源程序,重点介绍利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法.设计中采用了专门的芯片组成了PWM信号的发生系统并且对 ...
- pwm整流器及其控制_T型三相三电平整流器的控制实现和仿真
前言: 我在六月份制作了使用DQ控制维也纳整流器的视频:<基于dq双闭环控制的三相三电平Vienna整流器 Part2>和<基于dq双闭环控制的三相三电平Vienna整流器 Par ...
- #小车记4--树莓派 GPIO PWM 实现初步控制
树莓派 GPIO PWM 实现初步控制 写在前面的废话 1.L298N与树莓派的连线 2.Python 编程控制 (1).GPIO (2).PWM 写在前面的废话 有兴趣的读者,可以去看看本人主页里的 ...
- 疯壳AI开源无人机PWM(电机控制)
一.PWM简介 脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术 ...
- PWM实验(控制蜂鸣器,风扇,马达)
cortex-A7核实现PWM对蜂鸣器,风扇,马达的控制 1.PWM概念 PWM为一种对模拟信号电平进行数字编码的方法,通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码 ...
最新文章
- 大数据应用开发八大基本原则
- 解压RK3288的boot.img修改init.rc 添加开机自启动脚本
- 【深度学习】上海交大发布 MedMNIST 医学图像分析数据集 新基准
- 3000元电脑配置_2019年全新九代i59400F配RTX2060打游戏的装机电脑配置清单及价格...
- 如何在跑cts的时候生成log_为什么要买奥铃CTS?听听用户的评价
- 优先队列——二项队列(binominal queue)
- linux内核中分配4M以上大内存的方法
- spring源码分析第五天------springAOP核心原理及源码分析
- recipe for target 'aclocal.m4' failed
- GitHub 开源官方命令行工具登顶 TOP1,5 分钟极速上手!
- C++基本语法简介,C++程序简介
- Mysql 慢查询和慢查询日志分析
- matlab得到小波参数,MATLAB|高频信号的小波分析技术要点
- Tkinter教程之Frame篇
- spring bean作用域之间有什么区别
- SARscape之DInSAR处理(双轨法)
- 【CCF CSP】201903-1小中大
- Google 按图搜索的原理
- 磁盘阵列服务器安装操作系统,板载RAID功能制作磁盘阵列并安装操作系统
- 产品学习:智能生产调度管理系统
热门文章
- 雷蛇 笔记本 装linux,顺应民意:雷蛇考虑开发Linux版Blade游戏本
- 用指针实现将字符串2合并在字符串1后面
- The Mana World 有感
- C++ Primer 学习札记(二)
- 【东大自控笔记9】一文掌握根轨迹法
- 2019年“五一”大数据出行预测报告出炉!
- python把文字矢量化_如何将点阵汉字矢量化 | indienova
- OSChina 周五乱弹 —— 又到周五,我想静静
- DataBinding源码分析
- 两台W7系统的电脑,A电脑可以ping通B电脑,B电脑ping不通A电脑。