//文件 p33pwm6.h

#ifndef _P33PWM6_H_
#define _P33PWM6_H_
//#include "p33pwm6.h" #define FSYNCOEN (1<<8)//主时基同步使能位
#define FSYNCEN (1<<7)//外步时基同步使能位 //输入时钟预分频选择
#define PWMCLK_DIV1 (0<<0)
#define PWMCLK_DIV2 (1<<0)
#define PWMCLK_DIV4 (2<<0)
#define PWMCLK_DIV8 (3<<0)
#define PWMCLK_DIV16 (4<<0)
#define PWMCLK_DIV32 (5<<0)
#define PWMCLK_DIV64 (6<<0) #define V_PTPER 720//1000 //主控时基周期值 #define POH1_ValidH IOCON1 &= ~(1<<13) //上管引脚高电平有效
#define POH1_ValidL IOCON1 |= (1<<13) //上管引脚低电平有效
#define POH2_ValidH IOCON2 &= ~(1<<13) //上管引脚高电平有效
#define POH2_ValidL IOCON2 |= (1<<13) //上管引脚低电平有效
#define POH3_ValidH IOCON3 &= ~(1<<13) //上管引脚高电平有效
#define POH3_ValidL IOCON3 |= (1<<13) //上管引脚低电平有效 #define PWMAH_ENB IOCON1bits.OVRENH = 0
#define PWMBH_ENB IOCON2bits.OVRENH = 0
#define PWMCH_ENB IOCON3bits.OVRENH = 0
#define PWMAH_DIS IOCON1bits.OVRENH = 1
#define PWMBH_DIS IOCON2bits.OVRENH = 1
#define PWMCH_DIS IOCON3bits.OVRENH = 1 //===============================================
extern void Init_Pwm6(uint16 InClkdiv,uint16 CycPwm) ;
extern void ToPwmValue(uint16 Tcon) ; #endif //文件 p33pwm6.c #include "global.h"
#include "p33pwm6.h" //***************************************
// 函数名称:Init_Pwm6
// 函数功能:初始化PWM
// 入口参数:PWM时钟分频 PWM周期值
// 出口参数:无
// 返回值:无
// pwm 的时钟源为Fosc (即系统时钟)
//***************************************
void Init_Pwm6(uint16 InClkdiv,uint16 CycPwm)
{
PTCON = 0x0000 ; //PWM模块禁止 每次比较产生触发事件
PTCON2 = InClkdiv ; //输入时钟预分频 PTPER = CycPwm ; //主控周期值 PHASE1 = CycPwm ; //主移相寄存器
PHASE2 = CycPwm ;
PHASE3 = CycPwm ; SEVTCMP = 0X0000 ; //特殊事件比较计数值位
CHOP = 0X0000 ; //斩波时钟发生器-- 禁止 MDC = 0x0000 ; //主控占空比值
PDC1 = 0x0000 ; //pwm占空比寄存器
PDC2 = 0x0000 ;
PDC3 = 0x0000 ;
/*
//PTPER 提供周期 mdc为PWM提供占空比
PWMCON1 = 0X0180 ; //禁止死区控制
PWMCON2 = 0X0180 ; //禁止死区控制
PWMCON3 = 0X0180 ; //禁止死区控制
*/ //PHASEx 提供周期 PDCx为PWM提供占空比
PWMCON1 = 0X0280 ; //禁止死区控制
PWMCON2 = 0X0280 ; //禁止死区控制
PWMCON3 = 0X0280 ; //禁止死区控制 /*
//PHASEx 提供周期 PDCx为PWM提供占空比
PWMCON1 = 0X0380 ; //禁止死区控制
PWMCON2 = 0X0380 ; //禁止死区控制
PWMCON3 = 0X0380 ; //禁止死区控制
*/ DTR1 = 0X0000 ; //死区寄存器
DTR2 = 0X0000 ;
DTR3 = 0X0000 ; ALTDTR1 = 0X0000 ; //备用死区寄存器
ALTDTR2 = 0X0000 ;
ALTDTR3 = 0X0000 ; TRGCON1 = 0X0000 ; //PWM触发控制寄存器
TRGCON2 = 0X0000 ;
TRGCON3 = 0X0000 ;
/*
PWM模块控制H管 GPIO控制L管
PWM IO引脚模式处于独立模式
*/
IOCON1 = 0X8c00 ; //PWM IO 控制寄存器
IOCON2 = 0X8c00 ;
IOCON3 = 0X8c00 ; POH1_ValidH ; //上管引脚 高电平有效
POH2_ValidH ;
POH3_ValidH ; TRIG1 = 0X0000 ;//PWM主触发比较值寄存器
TRIG2 = 0X0000 ;
TRIG3 = 0X0000 ; //PWM故障限流控制寄存器 禁止限流 禁止故障输入
FCLCON1 = 0X0003 ;
FCLCON2 = 0X0003 ;
FCLCON3 = 0X0003 ; LEBCON1 = 0X0000 ;//前沿消隐控制寄存器
LEBCON2 = 0X0000 ;
LEBCON3 = 0X0000 ; LEBDLY1 = 0X0000 ; //前沿消隐延时寄存器 限流和故障输入消隐
LEBDLY2 = 0X0000 ;
LEBDLY3 = 0X0000 ; AUXCON1 = 0X0000 ; //PWM附属控制寄存器
AUXCON2 = 0X0000 ;
AUXCON3 = 0X0000 ; PTCON |= (FSYNCOEN|FSYNCEN) ;//主时基同步使能 //当PWM不使能时 PWMH PWML管脚输出的电平状态
//第1位为上管 第0位为下管
IOCON1bits.OVRDAT = 0X00 ; //PWM禁止时 PWMH PWML输出0
IOCON1bits.OVRDAT = 0X00 ; //
IOCON1bits.OVRDAT = 0X00 ; // PWMCON1 |= 0X0001 ; //立即更新有效位
PWMCON2 |= 0X0001 ; //立即更新有效位
PWMCON3 |= 0X0001 ; //立即更新有效位 PTCON = 0x8000 ;//PWM模块使能
}
//***************************************
// 函数名称:Init_Pwm6
// 函数功能:初始化时钟
// 入口参数:时钟来源选择 处理器与CPU时钟分频比 pll倍频比
// 出口参数:无
// 返回值:无
//***************************************
void ToPwmValue(uint16 Tcon)
{
PDC1 = Tcon ; //pwm占空比寄存器
PDC2 = Tcon ;
PDC3 = Tcon ; // MDC = Tcon; //主控占空比值
} //应用实例 void main(void)
{
uint16 g_wTmp1 ; //初始化PWM
//独立时期 独立占空比 PWM固定频率16K
Init_Pwm6(PWMCLK_DIV8,V_PTPER) ;//Fosc/8 16k pwm 最大占空比值为720 while(1)
{
ToPwmValue(200) ; //设置PWM占空比 PWMAH_ENB ; //输出PWM到H1管 PWMAH_DIS ;//禁止输出PWM到H1管
} }

dsPIC33EP 高速PWM模块初始化设置及应用的更多相关文章

  1. STM8S TIM1 PWM初始化设置

    #define TIM1_DIV1 (uint16)(1-1) #define TIM1_DIV2 (uint16)(2-1) #define TIM1_DIV4 (uint16)(4-1) #def ...

  2. nginx源码分析之模块初始化

    在nginx启动过程中,模块的初始化是整个启动过程中的重要部分,而且了解了模块初始化的过程对应后面具体分析各个模块会有事半功倍的效果.在我看来,分析源码来了解模块的初始化是最直接不过的了,所以下面主要 ...

  3. 嵌入式davinci电路元素基础和PWM模块

    1,DAC_OUT和DAC_OUTB是AD9912输出的差分信号. 2,电容器储存电荷的能力,常用的单位是F.uF.nF.pFUF大了好还是UF小了好,要根据电路自身需要而设计, 要看电路滤波是在高频 ...

  4. JobTracker等相关功能模块初始化

    [Hadoop代码笔记]Hadoop作业提交之JobTracker等相关功能模块初始化 一.概要描述 本文重点描述在JobTracker一端接收作业.调度作业等几个模块的初始化工作.想过模块的介绍会在 ...

  5. Framebuffer 驱动学习总结(二)---- Framebuffer模块初始化

    ---恢复内容开始--- Framebuffer模块初始化过程:--driver\video\fbmem.c 1.  初始化Framebuffer: FrameBuffer驱动是以模块的形式注册到系统 ...

  6. Windows加载器与模块初始化

    本文是Matt Pietrek在1999年9月的MSJ杂志上发表的关于Windows加载器与模块初始化方面的文章.作者深入分析了LdrpRunInitialize璕outines例程的作用,用C语言写 ...

  7. UI设计之PS界面初始化设置

    一.PS界面初始化 1.新建设置  web设计的基础标准:宽度为1920px,高度自定义,分辨率72px,背景模式RGB 8位.(提示:可以“存为预设”以便以后直接调用) 注意:背景内容为透明!!! ...

  8. IIS 7.5 使用URL Rewrite模块简单设置网页跳转

    原文 IIS 7.5 使用URL Rewrite模块简单设置网页跳转 我们都知道Apache可以在配置文件里方便的设置针对网页或网站的rewrite,但是最近接手了一组IIS服务器,发现这货简单的没有 ...

  9. nginx-push-stream模块源码学习(二)——模块初始化

    本文重点介绍push stream模块的构成,至于nginx如何启动.维护该模块不会详细阐述,以后有时间会做详细阐述. 一.模块定义 1.1.  模块配置 通用nginx模块的配置struct有三种, ...

随机推荐

  1. Intent相关

    Intent是什么? 翻译为:意图,目的(名词) 其实根本没必要管它是什么,看看它能做什么就好了. 不过后来我知道了,它就是个机制----通信机制-----android的许多组件间的交流要依赖它. ...

  2. .hpp文件

    hpp在C++中的含义 以前在开源代码里面遇到过,今天看boost源码的时候又遇到了,故学习一下. hPP,计算机术语,用C/C++语言编写的头文件,通常用来定义数据类型,声明变量.函数.结构和类.而 ...

  3. WCF配置文件全攻略

    參考:http://www.cnblogs.com/wayfarer/archive/2007/08/24/867987.html http://www.cnblogs.com/scy251147/a ...

  4. Fedora20 编译安装qemu-system

    安装简介: 1.1. 本次编译安装所有的操作都在Fedora 20 x86-64上,内核版本为: 3.14.4-200.fc20.x86_64.如果在其他系统编译安装,请看其他文章. 2.安装准备: ...

  5. Maven默认周期与插件

    运行 cmd mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId= ...

  6. 解决“运行arm-linux-gcc命令,提示No such file or directory”的问题

    今天在ubuntu14.04上安装arm的交叉编译器arm-linux-gcc,环境变量配置好以后,运行arm-linux-gcc命令,总提示No such file or directory.然后去 ...

  7. Javascript模板及其中的数据逻辑分离思想(MVC)

    #Javascript模板及其中的数据逻辑分离思想 ##需求描述 项目数据库的题目表描述了70-120道题目,并且是会变化的,要根据数据库中的数据描述,比如,选择还是填空题,是不是重点题,题目总分是多 ...

  8. gson在java和json串之间的应用

    public class JsonToJavaUtil { /** * 将json转成成javaBean对象 * * @param <T> * 返回类型 * @param json * 字 ...

  9. Java基础 —— DOM

    DOM:文档对象模型(Document Object Model) 定义: 文档:标记型文档:html,xml 对象:将文档或文档中的标签等内容都封装到对象中 模型:只要是标记型文档都通用 将html ...

  10. Hadoop学习记录(1)|伪分布安装

    本文转载自向着梦想奋斗博客 Hadoop是什么? 适合大数据的分布式存储于计算平台 不适用小规模数据 作者:Doug Cutting 受Google三篇论文的启发 Hadoop核心项目 HDFS(Ha ...