历史上的今天
返回首页

历史上的今天

今天是:2025年03月17日(星期一)

正在发生

2020年03月17日 | PIC单片机输出比较(PWM)模块介绍

2020-03-17 来源:eefocus

在Android红外遥控器项目中使用了输出比较OC1(PWM)模块来产生38KHz PWM脉冲,脉冲占空比与红外信号发射距离以及产品功耗有关。其中占空比越大,发射距离越远,功耗越大。红外载波的占空比一般在1/3左右。


将输出比较模块配置为PWM 操作,需要以下步骤:
1.将OCx输出配置为可用的外设引脚选择引脚之一。
2.计算所需的占空比并将计算结果装入 OCxR 寄存器。
3.计算所需的周期并将计算结果装入 OCxRS 寄存器。
4.选择当前的 OCx 作为同步源,方法是把 0x1F写入SYNCSEL<4:0>(OCxCON2<4:0>),把 0 写入OCTRIG (OCxCON2<7>)。
5.通过写 OCTSEL2<2:0> 位(OCxCON<12:10>)选择时钟源。
6.如果需要的话,允许定时器和输出比较模块中断。 使用 PWM故障引脚时需要输出比较中断。
7.通过 OCM<2:0> (OCxCON1<2:0>)位选择所需的PWM模式。
8.如果定时器被选为时钟源,请设置 TMRy 预分频值,并通过将 TON(TxCON<15>)位置 1 来使能时基。

我们选择RB13/RP13/AN11作为OC1输出管脚,未分频时钟T2作为时钟源。将OC1RS寄存器写入421, OC1R寄存器写入140,以产生占空比为1/3 38KHz PWM脉冲。1/(421*62.5ns)=38KHz。
PWM1初始化函数
void mInitPWM1(void) 
{
        _RP13R = 18 ; //红外发送,OC1的功能号为18,将OC1重映射到RB13/RP13/AN11        
        OC1CON1 = 0x0006 ; //使用Timer2,边沿对齐PWM模式   
        OC1CON2 = 0x001F ; // 选择OC1为同步源       
        OC1RS = 421 ; //周期421*62.5ns  38K Hz   
        OC1R = 140 ;  //占空比:100/421
}

定时器T2初始化
void T2_On(void)     
{
        T2CON = 0x0000 ;//未分频
        T2CONbits.TON = 1 ; 
}
定时器T2停止
void T2_Off(void)     
{
        T2CONbits.TON = 0 ; 
}

推荐阅读

史海拾趣

FREESCALE (NXP)公司的发展小趣事

FREESCALE (NXP) 公司发展的五个故事

故事一:从摩托罗拉剥离到独立上市

FREESCALE的前身可以追溯到摩托罗拉的半导体部门。2002年,面对半导体业务的持续亏损,摩托罗拉集团决定剥离该部门。2004年,摩托罗拉半导体产品事业部正式更名为FREESCALE半导体公司,并在次年成功上市。这一剥离与上市过程标志着FREESCALE作为一个独立实体的诞生,为其后续的发展奠定了基础。独立后的FREESCALE迅速调整战略,专注于嵌入式电子解决方案,特别是在汽车电子、工业控制等领域取得了显著成就。

故事二:与恩智浦(NXP)的合并

2015年,FREESCALE与另一家半导体巨头恩智浦(NXP)达成合并协议,这是半导体行业内的一次重大整合。合并后的公司成为全球最大的汽车半导体供应商之一,并在多个关键技术领域占据领先地位。此次合并不仅增强了双方的市场竞争力,还促进了资源共享和技术创新,为未来的增长开辟了更广阔的空间。合并后的公司在全球范围内拥有更强大的研发和销售网络,能够更好地服务于全球客户。

故事三:从亏损到盈利的转型

在成为独立公司之前,FREESCALE的前身——摩托罗拉的半导体部门曾长期面临亏损困境。然而,在剥离并独立运营后,FREESCALE通过一系列战略调整和市场拓展措施,成功实现了从亏损到盈利的转型。公司注重技术创新和产品研发,不断推出符合市场需求的新产品,同时加强与客户和合作伙伴的合作,共同推动行业发展。这些努力使得FREESCALE在激烈的市场竞争中脱颖而出,成为半导体行业的佼佼者。

故事四:技术创新的引领者

FREESCALE一直致力于技术创新,不断推动半导体技术的进步。公司在嵌入式处理器、模拟芯片、射频芯片等多个领域拥有深厚的技术积累和丰富的产品线。例如,FREESCALE推出的基于Arm Cortex-M系列的微控制器在智能家居、智能穿戴等领域得到了广泛应用;其汽车半导体产品更是广泛应用于高级驾驶员辅助系统、车载网络等领域,为汽车行业的智能化转型提供了有力支持。FREESCALE的技术创新不仅提升了自身产品的竞争力,也为整个行业的发展注入了新的活力。

故事五:全球布局与本地化服务

为了更好地服务全球客户,FREESCALE(及合并后的NXP)在全球范围内进行了广泛的布局。公司在多个国家和地区设立了研发中心、生产基地和销售网络,能够快速响应客户需求并提供本地化服务。同时,FREESCALE还积极与全球各地的合作伙伴建立紧密关系,共同推动技术创新和市场拓展。这种全球布局与本地化服务的策略使得FREESCALE能够更好地融入当地市场,为客户提供更加贴心和高效的服务。

Desco Tools公司的发展小趣事

Desco Tools公司一直注重客户服务和品质保障。公司建立了完善的客户服务体系,为客户提供全方位的技术支持和解决方案。同时,公司还建立了严格的质量管理体系,确保每一件产品都符合高标准的质量要求。这些举措赢得了客户的信任和好评,也为公司的长期发展提供了有力保障。

AZM [Arizona Microtek, Inc]公司的发展小趣事

在技术创新的基础上,AZM公司开始积极拓展市场。公司制定了详细的市场拓展计划,通过参加国际电子展会、建立销售网络、开展合作伙伴关系等多种方式,逐步打开了国内外市场。同时,AZM公司注重品牌建设,通过提升产品质量、优化客户服务、加强品牌宣传等手段,逐渐树立了良好的品牌形象。

GradConn Ltd公司的发展小趣事

GradConn深知不同客户对连接解决方案的需求各不相同,因此公司特别注重提供定制化服务。通过与客户紧密合作,GradConn能够深入了解其特定需求,并据此设计出符合客户要求的定制化产品。这种服务不仅提升了客户的满意度,还增强了GradConn在市场上的竞争力。许多知名企业都选择GradConn作为其连接器和电缆组件的供应商,正是看中了其强大的定制化能力。

CYANLITE公司的发展小趣事

CYANLITE公司一直秉持着绿色环保的理念,致力于推广节能减排的照明产品。他们不仅在产品设计上注重节能和环保,还积极参与各种环保公益活动,向公众普及LED照明的优势。这种积极的环保态度使得CYANLITE公司在市场上树立了良好的形象,也吸引了越来越多的消费者选择他们的产品。同时,公司还积极与政府部门合作,推动LED照明在公共领域的普及和应用。

DAYA公司的发展小趣事

大雅智能,一家以智能厨电产品为主的电子科技公司,自创立之初就致力于技术研发和创新。在电子行业竞争激烈的今天,大雅智能凭借其独特的智能控制技术,成功打造了一系列具有市场竞争力的产品。从最初的智能电饭煲到如今的智能厨房生态系统,大雅智能通过技术创新,不断满足消费者对智能生活的追求,逐渐在电子行业中崭露头角。

问答坊 | AI 解惑

求助如何求解该放大电路的共模和差模输入阻抗

谁能求解仪用放大器的共模和差模输入阻抗,对了,这论坛怎么才能把我的原理图贴进去啊…

查看全部问答>

MCGS组态软件设计及其应用

一、引言     过去工业控制计算机系统的软件功能都靠软件人员编程实现。工作量大,软件通用性差,且易产生错误。随着工业控制要求的不断提高,专门用于工业控制的组态软件应运而生,它是一套功能齐全的组态生成工具软件,通用性强,而 ...…

查看全部问答>

ARM c程序的问题

_irqHandler PROC    1. STMFD   sp!,{r0-r4,r12,lr}    2. mov     r4,#0x80000000  //中断控制寄存器首地址(假设的)    3. ldr     r0,[r4,#0] ...…

查看全部问答>

请教一个sd卡驱动的问题

最近在做sd卡驱动的移植,读手册时有几个参数看不明白。比如,我板子的sd卡控制器寄存器有两个位可以设置sd卡dma的类型,原文如下: DMA type: It indicates which DMA transaction type is used. These 2 bits are valid when the DMA_EN is e ...…

查看全部问答>

请教: 文件读写

本帖最后由 dontium 于 2015-1-23 13:25 编辑 #include(iostream.h) #include(stdio.h) fid=fopen(\\"d:/en_dsp/enc.sea\\",\\"rb\\"); if (fid==NULL)     {      cout<<\\"can\\\'t open f ...…

查看全部问答>

PCI设备识别不正常

首先我的程序在某些主板上是可以正常工作的(具体型号我也搞不懂),设置的是从设备,内部只有从设备状态机。没有接入奇偶检验,仲裁和热插拔。 问题是在一些主板上发现设置为从设备时无法找到设备,设置为主设备可以找到,但是通过软件读取配置信 ...…

查看全部问答>

麻烦大家,初学者求解

#include        \"config.h\" #define                BEEPCON                0x00000080            &n ...…

查看全部问答>

RAW_TASK.C 具体教学问题

RAW_TASK.C具体教学问题1  raw_task_create教学问题: 1 代码是怎么实现系统只能创建一个 idle 任务的? 2 RAW_TASK_OBJ 结构体第一个成员task_stack 的地址等于结构体的地址吗? 3 RAW_TASK_OBJ 结构体成员中task_stack 为什么是放在第 ...…

查看全部问答>

最近申请了一个省创项目,关于无线通信的战术动作命令腕表,不知带怎么开始,望大...

二、项目研究背景(可以是已有的基础,与本项目有关的研究积累和已取得的成绩,已具备的条件,尚缺少的条件及方法等)    随着社会的发展,人们身边的不安全因素越来越多。当人们处于特殊紧急环境,并且需要及时对威胁自己或他人的生命安 ...…

查看全部问答>

如何用程序检测18B20的好坏,

如何用程序检测18B20的好坏,我现在有三个传感器,如果检测到一个坏了,那么剩下的两个取平均值,怎样实现…

查看全部问答>