⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplepwmp.c

📁 《dsPIC通用数字信号控制器原理及应用》源码
💻 C
字号:
/*************************************************
** 功能描述: 带故障保护输入引脚的PWM,空比49.27%**
*************************************************/

#include "p30f6014.h"

//系统初始化子程序,放在程序首部
void InitializeSys()
{
    INTCON1 = 0x0000; //关中断				
    INTCON2 = 0x0000;					
    IEC0 = 0x0000; //IECx中断禁止					
    IEC1 = 0x0000;
    IEC2 = 0x0000;			
}

//输出比较模块初始化子程序
void ConfigOC8()
{
    OC4CON = 0x0000; //Timer2是比较4的时钟源
    T2CON = 0x0000;	//预分频1,16位定时器,使用内部时钟
    TMR2 = 0x0044;
    OC8RS = 0x0022;	//赋值OC8R值为0x0022
    PR2 = 0x0044; //设置PWM周期0x0044
    IFS2bits.OC8IF = 0;	//清除输出比较中断标志位
    IEC2bits.OC8IE = 1;	//使能输出8比较中断
    IPC8bits.OC8IP = 6;	//设置输出比较8中断优先级7
    IFS0bits.T2IF = 0; //清除定时器2中断标志位
    IPC1bits.T2IP = 7; //设置定时器2中断优先级7
    IEC0bits.T2IE = 1; //使能Timer2定时器中断
}

//中断子程序:定时器2中断
void __attribute__((__interrupt__)) _T2Interrupt()
{
    IFS0bits.T2IF = 0; //清除定时器2中断标志位
}

//中断子程序:输出比较8中断,OCFA脚检测到逻辑“0”,OC8IF置位,
//进入中断服务程序
void __attribute__((__interrupt__)) _OC8Interrupt()		
{ 
    IFS2bits.OC8IF = 0;	//清除输出比较4中断标志位
    OC8CONbits.OCM = 6;	//重新写入OCM <2:0>,重新使能PWM模式
}

main()
{
    InitializeSys();
    ConfigOC8();
    T2CONbits.TON = 1; //打开定时器2
    OC8CONbits.OCM = 7; //OC8处于带故障保护输入引脚的PWM模式,当OCFB引脚检测到低电平
                        //PWM通道被关闭。
 	while(1)
	{
	; //可编写其它程序
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -