STC单片机(具有PCA功能的),怎么实现可变频率的PWM输出?很多朋友还在使用定时器做可变频PWM, 这里我就介绍怎么使用硬件PWM,在定时器0的分频基数下设计PWM。
首先看CMOD这个寄存器,这里我们主要关注 CPS0,CPS1,CPS2,这三个位控制选择PCA的计数脉冲源。 对应PWM功能,则是选择频率。 首先可以选择 6个固定分频,可以看图片看出,分别是1,2,4,6,8,12的系统分频。我们需要做可变频率的PWM,所以我们需要选择模式2,选择定时器0的溢出作为系统分频基数。
然后,我么看怎么具体的去计算,去实现分频。 这里就需要上面这个图片的计算规则。 这里我举一个例子来说明,比如我们单片机的晶振使用的是12MHZ,而我们需要实现300HZ的频率。 如果得到呢?
首先,如果我们采用CMOD的固定分频,可以发现,无论是1,2,4,8,12,分频下来的频率都不是300HZ。 所以这里也体现我们使用定时器0做分频基数的好处了。
我们继续计算,12MHZ需要转化为300HZ,那么根据上图,首先我们需要确定PCA时钟输入频率,根据公式 300*256=76800HZ,这个值就是我们需要的PCA时钟输入频率。现在问题就是 ,我们怎么把12MHZ,转化为76.8KHZ, 12000KHZ/76.8KHZ=156.25 ,这个156.25就是分频基数,而这个分频基数由我们的定时器溢出参数来设定,意思就是当我们定时器如果计数156.25溢出就可以做到分频基数为156.25, 所以我们在设置定时器0的计数起始值就是65536-156=65380,对应TH0=0XFF,TL0=0X64。
好了,怎么计算PWM在定时器0下实现我们自己需要的任意频率的计算方式这里就介绍完了。 如果要动态实现频率可变,我们就可以通过通讯去动态调整定时器0的计数基数,(实际就是调整了分频基数),就可以实现频率的改变了。 另外,说明:这里的定时器0,不需要中断,并且该定时器也不是作为产生PWM用的,是作为一个分频基数用!
关键字:STC单片机 硬件PWM 使用分析
引用地址:
STC单片机硬件PWM的使用分析
推荐阅读最新更新时间:2024-11-20 15:08
使用示波器进行信号频谱分析(FFT)的设置教学
对信号中的频率分量进行分析是十分重要的,因为他们常常会在设计中引起噪声,一旦超出允许的公差,就可能进而导致器件发生故障功能失常。严重的还可能导致电压尖峰,损坏器件。如果我们在设计的时候没有进行正确的测试,那么上述问题就很可能发生。那么如何对信号进行频率分量的分析呢? 也许大家会认为这个活只有频谱分析仪能干,但实际上示波器也能部分胜任,示波器除了时域分析外,还有一个FFT的功能,就可以用来做这个事。FFT是快速傅里叶变换的缩写。简单的说,FFT其实是一种算法,可以帮助我们对时域信号进行分离,然后再将这些分离的信号转换到频域,此时示波器将从时域转换成频域,显示的是信号幅值与频率之间的关系。 如下gif图所示,可以清楚的看到示波
[测试测量]
频谱分析仪的基本使用方法
一、使用前须知 在使用频谱分析仪之前,有必要了解一下分贝(dB)和分贝毫瓦(dBm)的基本概念,下面作一简要介绍。 1.分贝(dB) 分贝是增益的一种电量单位,常用来表示放大器的放大能力、衰减量等,表示的是一个相对量,分贝对功率、电压、电流的定义如下: 分贝数:101g(dB) 分贝数=201g(dB) 分贝数=201g(dB) 例如:A功率比B功率大一倍,那么,101gA/B=10182’3dB,也就是说,A功率比B功率大3dB, 2.分贝毫瓦(dBm) 分贝毫瓦(dBm)是一个表示功率绝对值的单位,计算公式为: 分贝毫瓦=101g(dBm) 例如,如果发射功率为lmw,则按dBm进行
[测试测量]
1_5.1.3_U-boot分析与使用_u-boot分析之源码第1阶段_P
我们以前写裸机程序时: 初始化:关看门狗,初始化时钟,初始化SDRAM; 把程序从nand拷贝到SDRAM; 设置sp,调用C语言函数; 继续执行… uboot作为一个裸机程序的集大成者,这些都会做,而且还要读出内核并启动内核。 之前分析过,uboot上电会先调用cpu/arm920t/start.S,我们就从这个文件来入手分析。 首先会跳到reset段。 然后将CPU设为SVC32模式(管理模式)并关闭看门狗。 第四步设置时钟,视频里面是用了函数调用,但是我本地打完补丁使用的是汇编,这里不做深究,理解为主。 从这里,我们就可以看到栈是怎么划分的,从0x33F80000开始,依次是堆,bdinfo
[单片机]
STC单片机程序下载失败问题总结
STC为宏晶公司推出的国产51单片机,其优点在于价格低廉,功能强大,使用方便,尤其是其串口ISP下载程序的方式方便了大量用户,免去了购买昂贵的编程器,非常适合单片机入门学习使用。 但是初学者常会遇到程序无法下载的情况,很多人甚至因此放弃了学习,实在可惜,在此给大家总结了常见的出错原因、判断方法和解决方法。 STC单片机下载程序需要的硬件主要分三部分: 单片机最小系统、下载电路、计算机端。 下载失败一般就从这三个方面来解决问题。 如果你有或者能向别人借到一套可以正常下载程序的电脑、单片机下载线、开发板,通过控制变量的方法,很快就能找到问题出在哪个环节。 1、你可以将自己的开发板连接在能正常下载的电脑上进行下载
[单片机]
STC单片机的下载协议
关于STC的下载在Linux平台下面一直是一个老大难的问题。我最近一段时间去ourdev网站,和数码之家,包括有一些热心人的协助。以及一些前人开发的开源软件,类似gSTC-ISP之类的软件。才让我完全的搞懂了STC的ISP协议。 本文以GPL v3条款发布。但是切勿胡乱传播。影响宏晶的利益。这个逆向工程做的并不妥当。望宏晶包涵,毕竟你并未公开协议。导致我们使用Linux的人痛苦不堪。 现在先放出用Gambas写的两个ISP软件。分别对应89系列和12系列。15系列正在分析。别的系列因为不常用暂无协议。 SerialPort kSTC89-ISP 那么呢,我就先从STC89系列的讲起。大同小异的。 STC89系列的单片机
[单片机]
STC单片机AD和EEPROM的程序设计C代码
/*---------------------------------------------------------------- *File Name: stc_AD.c - *Description: A/D 转换程序 *Project: - *MCU type: STC12C5410AD - - *Company: WY - *Compiler: KEI
[单片机]
使用OMD-640氧气分析仪如何检测管道泄漏
管道运输是五大运输方式之一(铁路、公路、水运、空运、管道),亦是石油和天然气产品的主要运输方式,是国家的能源动脉,因此,安全是油气管道的生命。下面和大家一起来了解一下管道泄漏如何检测? 管道的泄漏是管道工程中的一个重要环节,因为管道泄漏直接导致能源浪费和环境 污染 ,造成重大的经济损失,因此建立管道监测系统实现对管道泄漏的实时检测确定发生泄漏的位置以便及时维修尽可能减少经济损失和能源浪费具有十分重要的意义。随着管道的建设,泄漏检测技术也得到发展。目前已有的检漏方法,从最简单的人工分段沿管段巡视,发展到较为复杂的 计算机 软硬件结合的方法。 从陆上检测发展到海底检测,甚至利用飞机进行空中对地下管道的检测。根据检测对象的不同,
[测试测量]
示波器FFT频谱分析的使用方法和注意点
对信号中的频率分量进行分析是十分重要的,因为他们常常会在设计中引起噪声,一旦超出允许的公差,就可能进而导致器件发生故障功能失常。严重的还可能导致电压尖峰,损坏器件。如果我们在设计的时候没有进行正确的测试,那么上述问题就很可能发生。那么如何对信号进行频率分量的分析呢? 也许大家会认为这个活只有频谱分析仪能干,但实际上示波器也能部分胜任,示波器除了时域分析外,还有一个FFT的功能,就可以用来做这个事。FFT是快速傅里叶变换的缩写。简单的说,FFT其实是一种算法,可以帮助我们对时域信号进行分离,然后再将这些分离的信号转换到频域,此时示波器将从时域转换成频域,显示的是信号幅值与频率之间的关系。 如下gif图所示,可以清楚的看到示波
[测试测量]