//文件 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. MFC类目录及头文件(转)

    类 描述 头文件 CAnimateCtrl 自动化通用控件 afxcmn.h CArchive afx.h CArchiveException afx.h CArray afxtempl.h CAsy ...

  2. air开发中的requestedDisplayResolution 扫盲

    app.xml里面requestedDisplayResolution 取值可以为high/standard, 如果为high表示设备跟ios声明它需要使用高清屏(其实就是需要最大分辨率) 这里我猜测 ...

  3. BOX2D测试

    ; ; Box2DTestLayer = cc.Layer.extend({ world:null, //GLESDebugDraw *m_debugDraw; ctor:function () { ...

  4. 轻松学习Linux之Shell文件和目录属性详解

    轻松学习Linux之Shell文件和目录属性详解 轻松学习Linux之理解Sitcky 轻松学习Linux之理解umask 轻松学习Linux之理解SUID&SGUID 本系列多媒体教程已完成 ...

  5. 构建Spark作业

    首先,要清楚,一个Java或Scala或python实现的Spark作业. 1.用sbt构建Spark作业 2.用Maven构建Spark作业 3.用non-maven-aware工具构建Spark作 ...

  6. 编译安装-Apache

    一.配置选项说明 二.安装apache 1.环境准备 2.安装apr 3.安装apr-util 4.安装pcre 5.安装httpd 6.修改配置文件 7.开机自启动 8.注册为服务 9.测试 一.配 ...

  7. JAVA自定义注释(Target,Retention,Documented,Inherit)

    java自定义注解 Java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能.注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用.包含在 java.l ...

  8. ASP.NET读取配置文件发送邮件

    之前写过一篇文章C#使用SMTP发送邮件 后来做了改进,改成读取独立的配置文件,本文只记录读取配置文件的部分,发送部分见上面的链接. 读取配置文件C#代码: using System; using S ...

  9. Slave延迟很大的优化方法总结(MySQL优化)

    [http://www.cstor.cn/textdetail_9146.html] 一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在m ...

  10. ADO与ADO.NET的区别

    ADO是使用ole db接口并基于微软的COM技术,ADO.NET使用自己的ADO.NET接口并基于微软的.NET体系架构,所以ADO.NET与ADO是两种数据访问方式. ADO以recordset存 ...