0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Lua编写计算ML51单片机PWM时钟源的程序?

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2021-01-26 09:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

比如你想生成的PWM的时钟信号频率为10K,然后你就可以利用10K的PWM时钟源计数生成周期为(1~4095)*(1/10000)的PWM波形了。

其实再次修改程序,你还可以计算PWM周期计数器与高电平相关的值。

目前提供Lua脚本的

function get(my)--这个是选择系统的时钟源,这里默认选择内置的24M时钟HIRC Fhirc=24000000--下面几个变量都是临时变量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("pre="..pre.."CKDIV="..CKDIV) end end endend get(10000) 

37d916b0-5f63-11eb-8b86-12bb97331649.png

发现有两组参数可以满足需求
pre=16.0CKDIV=75
pre=8.0CKDIV=150

384e5d26-5f63-11eb-8b86-12bb97331649.png

CKDIV是这里,选择内部的RC振荡器后的分频

38bb5f48-5f63-11eb-8b86-12bb97331649.png

CKDIV = 75; PWM0_ClockSource(PWM_FSYS,16); 或者 CKDIV = 150; PWM0_ClockSource(PWM_FSYS,8);

function get(my)--这个是选择系统的时钟源,这里默认选择内置的24M时钟HIRC Fhirc=24000000--下面几个变量都是临时变量使用,初始化多少都行 CKDIV=0 Fsys=0 pre=1 Fpwm=0 i=0 for CKDIV=0,255 do for i=0,7 do pre=2^i if(CKDIV==0) then Fsys=Fhirc elseif((CKDIV>0)and(CKDIV<=0xFF)) then Fsys=Fhirc/(2*CKDIV) end Fpwm=Fsys/pre if(my==Fpwm) then print("PWM时钟频率为"..my.."Hz".." 需要设置".."pre="..pre..", CKDIV="..CKDIV) end end endend get(10000)print("-----------------------------------")get(15000)print("-----------------------------------")get(20000)  优化了一下显示形式,输出结果,可以看出为了达到某个结果,实际上可以通过多组分频组合实现。  

PWM时钟频率为10000Hz 需要设置pre=16.0, CKDIV=75PWM时钟频率为10000Hz 需要设置pre=8.0, CKDIV=150-----------------------------------PWM时钟频率为15000Hz 需要设置pre=32.0, CKDIV=25PWM时钟频率为15000Hz 需要设置pre=16.0, CKDIV=50PWM时钟频率为15000Hz 需要设置pre=8.0, CKDIV=100PWM时钟频率为15000Hz 需要设置pre=4.0, CKDIV=200-----------------------------------PWM时钟频率为20000Hz 需要设置pre=8.0, CKDIV=75PWM时钟频率为20000Hz 需要设置pre=4.0, CKDIV=150 END 本文系21ic论坛蓝V作者gaoyang9992006原创

原文标题:高手杂谈:用Lua编写计算ML51单片机PWM时钟源的程序

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663621
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5847

    浏览量

    223823
  • Lua
    Lua
    +关注

    关注

    0

    文章

    84

    浏览量

    11339

原文标题:高手杂谈:用Lua编写计算ML51单片机PWM时钟源的程序

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    编写简单高效单片机汇编程序

    的行数多并不一定意味着效率低。 关键在于写代码时避免冗余,灵活运用模块化设计和单片机资源。 最终程序既要高效运转,又不失结构清晰。 汇编语言的难点在于编写简短而高效的代码,需要理解单片机
    发表于 11-24 07:00

    51单片机RS485编程实例资料

    详细介绍51单片机RS485通信接线和编程代码
    发表于 10-20 14:57 2次下载

    怎么测单片机系统频率

    单片机系统频率是指单片机工作时的时钟频率,它直接影响单片机的运行速度和处理能力,准确测量系统频率对单片机应用开发、
    的头像 发表于 07-25 11:39 477次阅读

    单片机怎么烧程序

    单片机程序是将编写好的程序代码写入单片机内部存储单元,让单片机按照预设逻辑工作的过程,是
    的头像 发表于 07-23 11:47 652次阅读

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载

    单片机原理及应用

    本书全面系统地介绍了 MCS-51 系列单片机的基本结构、工作原理及应用技术。主要内容包括:微型计算机的基础知识、MCS-51 单片机的基本
    发表于 06-16 16:58

    STC单片机范例程序

    电子发烧友网站提供《STC单片机范例程序.zip》资料免费下载
    发表于 06-04 16:27 8次下载

    2.4寸TFT彩屏配套测试程序-51单片机

    如题,2.4寸TFT彩屏配套测试程序-51单片机
    发表于 06-04 16:26 0次下载

    基于51单片机PWM直流电机调速程序 0到20级的调速

    基于51单片机PWM直流电机调速程序 0到20级的调速,代码有中文详细注解,通俗易懂,不愧是初学者福利。可以看得出作者真的很用心.这也让我们学习单片
    发表于 03-20 13:44

    请问PWM要如何驱动WS2811

    使用的是2T51单片机PWM时钟为48MHz,请教各位大佬如何通过PWM写时序去驱动?
    发表于 03-05 18:51

    51单片机模块化编程设计与实例要点分析

    51单片机模块化开发教程
    发表于 02-24 16:40 4次下载

    51单片机pwm和spwm

    51单片机pwm
    发表于 01-08 15:54 3次下载

    51单片机温度报警器

    电子发烧友网站提供《51单片机温度报警器.zip》资料免费下载
    发表于 12-30 14:16 4次下载

    51单片机核心板原理图

    51单片机核心板原理图
    发表于 12-16 11:30 4次下载

    使用单片机实现直流电机的PWM调速控制原理图

    使用单片机实现直流电机的PWM调速控制
    发表于 12-10 15:29 6次下载