MSP430G2253 产生占空比可调的PWM

发布者:码字徜徉最新更新时间:2020-02-12 来源: eefocus关键字:MSP430G2253  占空比可调  PWM 手机看文章 扫描二维码
随时随地手机看文章

最近刚刚做了一个用430驱动白光LED的代码   其中用到了以前用到的ADC和PWA这些常用的外设  发现对片子掌握的还是太基础 现在复习一下  以后用到的时候也算有个参考 今天就只学习一点最基本的功能 用430产生一个占空比可调的PWM


先说一下步骤:

1:首先我们要知道那个引脚可以作为定时PWM的输出引脚 如果不太熟悉引脚 就去查阅册  


2:配置这个IO  这种情况下 无论那个系列的片子 基本作为PWM输出的时候 IO配置为输    出 选择其端口复用功能 详细配置  看手册


3:设置PWM的周期  TACCR0 或者CCR0  貌似是一个冬冬吧  这里面的数值决定了你PWM的   周期 举个简单的例子 比如你使用1MHZ的时钟频率  CCR0=100 则PWM的周期为100us     那么相应的频率就是10Khz


4:设置寄存器TACTL  设置输出模式 这里输出模式有7种  这里我贴一个图片 可以很好的理解这几种模式:



大家可以仔细观察一下  七种输出模式的2和6两种模式  他们输出的PWM恰好是互补的  其实这为我们需要互补的两个PWM提供了一个很好的生成方法  特别使我们在驱动全桥的让对角线交互导通的时候需要用到这种互补的PWM并且 他还可以生成死区区间  这点在英文手册中有讲到 有需要的可以去看一下  死区时间=时钟周期*(TACCR1-TACCR2)


5:设置相应的占空比 就是定时器捕获比较寄存器  其实就是CCR1和CCR2的赋值问题 


6:操作TACTL 也就是定时器A控制寄存器 选择时钟源和计数模式 至于分频和中断什么这里暂时不考虑了 寄存器里面的计数模式决定你是否开启了定时器 以及你的计数模式

如图:


配置完成这些自然就能产生相应的PWM了  但是我们如何改变占空比呢  其实比较简单  只需要我们按键改变一下CCR1或者CCR2里面的值皆就可以了


下面附上一段代码 仅供参考  按键接P1.3和P1.4  P1.2产生PWM  在示波器上可以明显看到用按键控制波形的变化 


代码如下:

#include

long int flag=10;//决定PWM占空比的变量

/****************************************************************************

函数名称 :delay

函数功能:延时   延时的长短由tmp的数值决定

函数参数:无

函数返回值:无

*****************************************************************************/

void delay(void)

{

    unsigned int tmp;

    for(tmp = 120;tmp > 0;tmp--);

}

 

/*****************************************************************************

函数名称 :Key

函数功能 :检测按键  用来改变flag的值 进而改变PWM的占空比  目前PWM的精确度为1%

函数参数:无

函数返回值:无

*****************************************************************************/

void Key()

  P1DIR&=~(BIT3+BIT3);//设置IO为输入模式

  P1REN|=BIT3+BIT4;//启用上拉/下拉模式

  P1OUT|=BIT3+BIT4;//设置为上拉模式               

  {         

    if((P1IN&BIT3)==0)//按键按下

    {

      delay();                  //延时用来消除按键的抖动

      while(!(P1IN&BIT3));      //等待按键松手

      flag+=1;                  //flag+1   用来改变占空比

      if(flag>100)              //占空比到100  清零

        flag=0;

    }

    if((P1IN&BIT4)==0)//同上注释

    {

      delay();

      while(!(P1IN&BIT4));

      flag-=1;

      if(flag>100)

        flag=0;

    }

  }

}

 

/**************************************************************************

函数名称: PWM_Init

函数功能:初始化PWM

函数参数:无

函数返回值:无

***************************************************************************/

void  PWM_Init()

{

  P1DIR |= BIT2;                            // 设置P1.2为输出

  P1SEL |= BIT2;                            // 选择P1.2的PWM功能

  P1SEL2 = 0;     //选择默认引脚功能 

  CCR0 = 100;                              // 设定PWM  周期  

  CCTL1 = OUTMOD_7;                         

  TACTL = TASSEL_2 + MC_1;                  // SMCLK时钟  增计数模式 

}

 

int main(void)

{

  WDTCTL = WDTPW + WDTHOLD;                 // 关闭看门狗

  PWM_Init();

  for (;;)

  {

    Key();

    CCR1 = flag;

  }

}

关键字:MSP430G2253  占空比可调  PWM 引用地址:MSP430G2253 产生占空比可调的PWM

上一篇:msp430TIME_B PWM输出
下一篇:基于msp430G2553的低频方波频率、占空比、峰峰值测量函数

推荐阅读最新更新时间:2024-11-11 09:32

通用定时器PWM输出实验
本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分 和上一讲相同,时基时钟来源于内部默认时钟 对此有疑问请参考 : 定时器中断实验 中 定时器时钟选择部分 和 定时器时钟来源部分 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 PWM工作过程 每个定时器有四个通道,每一个通道都有一个捕获比较寄存器, 将寄存器值和计数器值比较,通过比较结果输出高低电平,实现PWM信号 先简单说明一下: 如图为向上计数:
[单片机]
通用定时器<font color='red'>PWM</font>输出实验
【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: PWM工作原理 STM32CubeMX创建PWM例程 HAL库定时器PWM函数库 PWM创建呼吸灯 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非
[单片机]
【STM32】HAL库 STM32CubeMX教程七---<font color='red'>PWM</font>输出(呼吸灯)
STM32 PWM输出控制步进电机-3000转每分钟串口显示+电位器调速
用电位器控制步进电机转速,可以控制正反转,在电位器中点停止;越往左翻转越快,越往右正转越快。速度均匀,包含滤波。付完整代码。全部测试正常。 单片机源程序: #include led.h #include delay.h #include key.h #include sys.h #include usart.h #include timer.h #include adc.h int main(void) { u16 adcx; float temp; int a=3999; //int b=0 u16 led0pwmval=200; u8
[单片机]
基于软开关技术的PWM变频调速系统
简介:软开关电力电子技术利用在零电压(零电流)条件下控制开关器件的导通和关断,从而在理论上实现了开关器件的零损耗。介绍一个基于软开关技术的 PWM 变频调速系统。利用8051单片机组成控制系统,来控制 IGBT 的导通和关断。在主电路中,采用辅助二极管谐振极 PWM 逆变器来实现软开关技术。 1引言 PWM(脉宽调制)功率变换技术省去了庞大笨重的工频变压器,减小了装置的体积重量,提高了电源的功率密度与整机效率。然而,在硬开关状态下工作的PWM变换器,随着开关频率的上升,一方面开关管的开关损耗会成比例地上升,使电路效率降低,处理功率的能力减小;另一方面,会产生严重的电磁干扰(EMI)。 由于功率开关管并不是理想开关,开通和关
[单片机]
基于软开关技术的<font color='red'>PWM</font>变频调速系统
STC12C5A60S2利用PCA时钟溢出做的PWM信号
1.程序里面想详细的算法 思路, 2.在晶振和CPU满足计算的情况下,理论是你要多少你就通过编码器调节多少 3.本程序任意频率调试是通过编码器来切换的, 4.关于精度问题 在100hz内非常准,在最大255HZ的时候相差20hz左右, 问题可能出现在 定时器计数这个位置, 我全部取整数了 所以误差比较大 如果计数的出来本来机是整数的,那频率相对准确的, 在100hz的时候就是标准的100hz 单片机源程序如下: /*------------------------------------------------------------------*/ /* --- 功能 pwm输出 频率可调 -----------------
[单片机]
STC12C5A60S2利用PCA时钟溢出做的<font color='red'>PWM</font>信号
N76E003 PWM之极性控制
可能一些同学可能对PWM的极性控制不怎么理解(对,说的就是我自己。。。),那么就让我们在本次博文中,一起来探究下极性控制的原理及程序吧。如果有描述错误的情况,希望各位大佬指出。 首先我们来看看官方手册中对极性控制的描述,其中可以发现,对于PWM极性,是通过PNPn来进行控制的。 知道极性控制寄存器后,我们再来看看单片机内部的模块图,我们可以发现,PNPn寄存器,是对应通道二选一选择器的选择端,在默认情况下,PNPn为0,即正常输出,当PNPn寄存器置高时,PWM信号会被一个取反器控制。通俗一点来说,就是原先的占空比是控制高电平持续时间,现在通过这个取反器,使得占空比为低电平持续时间,之后变为高电平。 既然原理都明白了
[单片机]
N76E003 <font color='red'>PWM</font>之极性控制
用TIM的PWM输出模式写一个步进电机的Stepper库函数
这是之前写平衡小车时自己用 TI M的PWM输出模式写了一个 步进电机 的Stepper库函数。 1 调用顺序 1.1 init函数 1.2 begin函数 1.3 setSpeed函数 2 Stepper类结构 3 TIM结构框图 Stm32手册中的结构框图很重要,只要理解了外设的运行逻辑,按照逻辑一步一步给寄存器设值就可以让外设按我们的要求运行。 #ifndef __STEPPER_H #define __STEPPER_H #include peripheral.h #include math.h #ifdef __cplusplus extern C { #endif
[嵌入式]
用TIM的<font color='red'>PWM</font>输出模式写一个步进电机的Stepper库函数
脉宽调制(PWM)电机驱动器电源分析
  1 概述   三相交流电机工作可靠、高效、费效比高,需要少量维修或根本不需要维修,一直是工业领域的主力。此外,交流电机(如感应电机和磁阻电机)无需与转子的电气连接,因此很容易实现阻燃,适用于矿山等危险环境等应用场合。   采用脉宽调制( PWM )的三相电机驱动电路工作原理框图如图1所示,为电机提供三相供电电源,电压和频率可以变化。 PWM 交流电机 驱动器 可以高效提供从零速到全速的全转矩,并且通过改变驱动电源的供电相位相序,可以很容易实现电机双向运转。   2 脉宽调制电机 驱动器 原理   三相交流输入供电电源经过整流和滤波后,产生直流总线,为 驱动器 的逆变器部分提供电源。逆变器由3 对半导体开关(MOSF
[电源管理]
脉宽调制(<font color='red'>PWM</font>)电机驱动器电源分析
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved