社区
驱动程序开发区
帖子详情
一个GPIO接了一个方波输入,如何计算方波周期
Mr. Code
2018-09-27 02:07:36
以前用MCU做这样的事情,就是gpio中断+定时器计时,但是linux下怎么做比较合理?
linux下的一个gpio口接了一个方波,怎么计算这个方波的周期比较好。比如:
GPIO驱动中使用中断,但是不确定是否会频繁中断造成占用CPU过高;而且中断之后,如何精确计算两次中断之间的时间?
精通linux驱动的,是否有更好或者说更标准的方法?
...全文
1624
4
打赏
收藏
一个GPIO接了一个方波输入,如何计算方波周期
以前用MCU做这样的事情,就是gpio中断+定时器计时,但是linux下怎么做比较合理? linux下的一个gpio口接了一个方波,怎么计算这个方波的周期比较好。比如: GPIO驱动中使用中断,但是不确定是否会频繁中断造成占用CPU过高;而且中断之后,如何精确计算两次中断之间的时间? 精通linux驱动的,是否有更好或者说更标准的方法?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
蜗牛哦
2019-03-01
打赏
举报
回复
linux不是一个硬实时os,这样计算的精度肯定不准的,建议用单片机裸跑做就准
freedom0009
2019-02-26
打赏
举报
回复
用中断可以实现,主要看你的方波的速率和你想要的计算的精度了, 如果只是简单的计算周期,直接在中断下半部函数里处理就好了。
john_liqinghan
2018-12-04
打赏
举报
回复
中断采样,采样越多,计算就越准确,只要你中断不要干太多业务,不会造成高CPU耗费的。
john_liqinghan
2018-09-29
打赏
举报
回复
linux并非实时操作系统
udelay_mdelay延时函数的具体实现
1、个人原创,代码已经在兆讯系列的芯片上验证OK; 2、验证方法,整合代码到系统中,控制
GPIO
口输出
方波
,用示波器测量
方波
的
周期
,看是否与预期一致; 3、此代码可轻松移植到STM32、BCM58101、K21、MH19XX等系列单片机上,实现准确的延时; 4、代码的实现,参照Linux中udelay()、mdelay()的实现方法,用Linux思想去开发单片机,具有极强的参考意义;
基于STM32单片机设计的PWM的呼吸灯控制KEIL工程源代码.zip
基于STM32单片机设计的PWM的呼吸灯控制KEIL工程源代码,PWM信号是一种脉宽调制信号,广范用于LED和电机控制等场合。PWM信号其实类似于
方波
,只有0和1两种状态。PWM信号可以调节占空比。不同占空比可以使LED产生不同的亮度。占空比就是指在
一个
周期
内, 信号处于高电平的时间占据整个信号
周期
的百分比, 例如上图中所示脉冲的占空比就是25%。PWM波可以由
GPIO
口产生,通过
GPIO
口输出高电平,延时,输出低电平,延时来产生PWM波。还可以使用定时器,利用比较寄存器形成PWM。本实验就是利用PWM信号这一特性控制LED产生不同亮度,从而实现呼吸灯的效果。 int main(void) { u16 led0pwmval=0; u8 dir=1,key; double t = 1; delay_init(); // while(1) { TIM4_PWM_Init(899,0); // delay_ms(10); key = KEY_Scan(1); if(key==1) t = 0.5; if(key==2)
基于DSP2812的PWM方案设计.doc
基于DSP2812的PWM方案设计 摘 要:本文研究了基于dsp2812的pwm方案,实现了由dsp控制的pwm波形输出,并通过软件 编程得到占空比不同的pwm脉冲序列,完成了pwm信号到模拟信号的数模转换(d/a)功能 。实验结果表明,应用dsp的pwm输出,具有极强的可控性,并且pwm经过简单的变换电路 就可以实现dac,这不仅能提高dac调制信号的精度,还将大大降低数模转换设备成本。 关键词:tms320f2812;脉宽调制(pwm);数模转换 中图分类号:tm461 脉宽调制(pwm:pulse width modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术 ,广泛应用于测量、通信和功率控制与变换的许多领域。目前,虽然pwm控制技术的实现 方法的研究已经取得了一系列成果,但这些方法仍存在缺陷,如产生pwm波形的速率和精 度不高、可控性不强等等。此外,在电子和自动化技术的应用中,单片机和dac是经常需 要同时使用的,然而许多单片机内部并没有集成dac,即使有些单片机内部集成了dac精 度也往往不高,在高精度的应用中还需外
接
dac,这样增加了成本。正是由于dac芯片价 格相对昂贵,使得其广泛应用受到限制。基于此,本文研究采用具有高运算精度(32位 )和强大系统处理能力的tms320f2812芯片,对pwm输出波形进行深入的研究,并将pwm波 形通过低通滤波器实现dac的功能。 1 pwm调制算法的研究 对于任意波形的实现,可以在
一个
周期
内,对信号进行等间距采样,只要采样频率足够 高,就可以根据采样点对信号重新进行刻画的。所以当采样频率取得足够高的时候,可 以将任意相邻两个采样点之间用直线连
接
起来,通过与三角载波的比较,输出pwm波,从 而生成所需要的信号。下面将具体介绍实现的过程,采用规则采样法使每个脉冲的中点 与三角波的中心重合,使得
计算
大为简化。 图1 图2 如图1所示,a,b为相邻的两采样点。tc为采样
周期
。若取载波
周期
,n为整数,g为三角载波的幅值,k为直流电压幅值,则相邻采样点间有n个三角载波。 取第n个三角波作分析(1 n n),设等腰三角形的中心线与信号线的交点为d点,过d点 做一条跟横轴平行的直线与等腰三角载波相交于e点和f点,由图2可知,取te,tf作为控 制时刻,根据等腰三角形的比例
计算
得到脉冲的宽度δ为: (1) 根据面积相等原则,a,b点与横坐标轴组成的面积应该等于响应的脉冲部分的面积,可 以推导出: ,即三角载波的幅值是等于直流电压的幅值。从公式(1)中各个变量均可确定,即可以 根据各个变量求得pwm脉冲的宽度。 1.1 系统pwm软件实现 利用tms320lf2812来生成任意波形脉冲的基本思想是利用dsp的事件管理器中的全比较单 元、通用定时器、死区发生单元以及输出逻辑来生成pwm波,经复用的i/o引脚输出。ds p设置在连续增/减计数方式工作时,产生对称的pwm脉冲输出。在这种计数方式下,计数 器的值由初始值开始增加,当达到txpr值时,开始递减,直到变成0后又重新增加。在计 数器跳变的过程中,计数器的值与比较寄存器cmprx的值作比较,当计数器的值与比较寄 存器的值相等时对应的
方波
输出发生电平转换。在
一个
定时器
周期
内,输出
方波
将发生 2次翻转,从而形成
一个
脉冲。根据公式(1),写入dsp cmpr的值应该为: 系统软件部分分为初始化模块和运行模块,包括主程序、系统初始化子程序、定时器中 断服务程序、
gpio
端口配置子程序。具体程序流程如下: 1.2 硬件电路 图6 定时器功能框图 本研究中,由通用定时器t1产生pwm输出,定时器功能框图如图6所示。tms320f2812作为 控制器,用于处理采集到的数据和发送控制命令。由ccs环境下的c程序设置相关寄存器 ,产生不同占空比的pwm输出。用仿真器将pc机与系统硬件电路建立通信。tms320f2812 控制器首先采集t1pwm波形,然后将产生的pwm信号送入示波器,观察并分析。改变通用 定时器比较寄存器的值,可以以改变pwm信号的占空比。在本设计中,选取正弦波形的等 间距抽样值作为比较寄存器值,不仅可以得到随机的pwm输出,而且pwm调制信号通过低 通滤波器后仍可恢复正弦波。在系统运行中,驱动保护电路检测当前系统的运行状态, 如果系统中出现过流或欠压状况,pwm信号驱动器(ir2131)启动内部保护电路,锁存后 继pwm信号输出,同时通过fault引脚拉低tms320f2812控制器的pdpinta引脚电压,启动 dsp控制器的电源驱动保护。这时所有ev模块的输出引脚将被硬件置为高阻态,从而保护 控制系统。 1.3 pwm输出实验结果及分析 在硬件电路的基础上,示波器
接
到pwm输出引脚,通过软件编程得到图7
matlab代码做游戏-Shao-Peng-Yang:该存储库包含Shao-Peng(Paul)从事的所有项目
matlab代码做游戏邵鹏扬 杨少鹏是电气工程专业的大三学生,对嵌入式系统,物联网,无线通信系统,FPGA和SoC设计,神经形态
计算
和硬件安全性感兴趣。 流利的中文。 擅长与具有不同专业背景的人一起工作。 热衷于学习新知识。 愿意面对并解决任何挑战和障碍。 看看他的 项目资料库 完全的 以下链
接
将引导您到项目的存储库 即将来临 Verilog中的AES系统 Verilog中的RISC 项目与活动 这是项目的简要说明: 十年柜台 使用D触发器,Nand Gates和BCD到7段解码器 图为电路原理图和所建立的电路 该项目在20到30分钟内建成 IDEA Arduino LED研讨会 该研讨会是为工业设计专业的学生设计的,他们具有LED,电路和编程的基本知识 图为为IDEA Arduino LED Workshop设计的最终项目 它为与会者提供了有关如何将Arduino应用于其Lantern项目的总体思路 创建
一个
带有终端
接
口的
方波
发生器以控制信号的频率 在
GPIO
端口上使用“位撞击”方法生成具有特定频率的
方波
深入了解MCU的频率和每个组装命令的
周期
创建
一个
简单的秒表,能够通过外围开关
六足机器人之24路舵机控制器驱动板资料分享-电路方案
可能感兴趣的项目设计:https://www.cirmall.com/circuit/5729/detail?3(备战2017电赛,开源8路舵机控制器驱动板) 应用场景: 该控制器主要应用于以模拟、数字舵机为关节的电子机械结构电气控制。例如:双足、六足、机器狗、搏击机器人、竞步机器人等。 24路舵机控制器驱动板实物展示: 主要特性: 24路
周期
20ms、500-2500us高精度宽度可调
方波
输出,强制高低电平输出,可以设置的上电初始位置 32位高性能MCU主控器 动力电源电压检测、低压报警功能 3个通用
GPIO
接
口,可读可写,支持Servo bus协议 USB转串及TTL串行
接
口 可固件升级,不定期发布更新固件 原理框图开源,基本驱动开源,满足用户个人开发需求 支持蓝牙透传模块HC-05/HC-06连
接
至电脑 高达4M bits FLASH存储多达17500条指令 图形化程序开发界面WAY STUDIO,仿真模型实时位置显示,时间线组织方式,简单易用,动作设计更加灵活 安卓系统控制台软件Way Pocket,通过蓝牙透传模块HC-05/HC-06实现无线控制。 实时控制、本地控制可选,控制信号端口强制高、低电平输出 该版本为“无极” 舵机控制器系列成员,性能稳定可靠,扩展能力强 丰富的视频指导教程,入门快捷简单 该集成环境抢先版使用教程:https://www.56.com/u41/v_MTQwNjM4NjM4.html 实力用事实说话,驱动六足视频演示:https://www.56.com/u19/v_MTQwODA3NTc2.html 实物购买链
接
:https://item.taobao.com/item.htm?spm=a1z10.5-c.w40... 《舵机机器人开发环境》仿真界面:
驱动程序开发区
1,319
社区成员
2,173
社区内容
发帖
与我相关
我的任务
驱动程序开发区
主要是开发驱动技术
复制链接
扫一扫
分享
社区描述
主要是开发驱动技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章