//文件 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. STL中用erase()方法遍历删除元素 .xml

    pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...

  2. bzoj 3594 [Scoi2014]方伯伯的玉米田(DP+二维BIT)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3594 [题意] 给定一个n个数的序列,有K次将一个区间内的数加1的机会,问最长不下降子 ...

  3. effective c++:对象的赋值运算

    operator 中处理”自我赋值“ operator=操作符缺省情况下返回引用——TYPE& TYPE::operator=(const TYPE&),原因很简单,operator= ...

  4. 性能测试-Jmeter

    缘由 很多情况下我们写程序过程中只会对固定模块采取并发限制,而且asp.net对于多线程也有他自己的处理机制,尤其对于注重业务,结果导向的团队可能更注重一定时间节点给出满意的产品,但是你的模块到底是否 ...

  5. 【Python学习笔记】字符串操作

    字符串的表示 python中的字符串是一个常量,可以使用单引号'',双引号""或三引号""" """来创建一个字符串常量 ...

  6. 设置sudo权限

    由于CentOS安装之后,普通用户无sudo权限,故应该设置sudo权限. 此处假设当前用户为“cloudgis”. 1. 设置sudo权限,则设置如下: $ su root 输入root 密码 $ ...

  7. Spark的任务处理流程

    持续推送....

  8. 【多线程同步案例】Race Condition引起的性能问题

    Race Condition(也叫做资源竞争),是多线程编程中比较头疼的问题.特别是Java多线程模型当中,经常会因为多个线程同时访问相同的共享数据,而造成数据的不一致性.为了解决这个问题,通常来说需 ...

  9. LightOJ 1370 - Bi-shoe and Phi-shoe (欧拉函数思想)

    http://lightoj.com/volume_showproblem.php?problem=1370 Bi-shoe and Phi-shoe Time Limit:2000MS     Me ...

  10. 什么是S-OFF,什么是S-ON,HBOOT命令,玩转Android

    什么是S-OFF?S代表 Security Lock,是安全锁,保护锁的意思.S-OFF就是安全保护关,S-ON就是安全保护开.Secure Lock 就是安全锁.是硬件设计厂商用于保护固件不被刷写而 ...