amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 1086|回复: 13

大神们有单片机接收航模遥控器接收机的程序吗?

[复制链接]
发表于 2018-5-27 22:05:49 | 显示全部楼层 |阅读模式
求助如题,有吗?
发表于 2018-5-27 22:09:42 | 显示全部楼层
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

STC单片机估计做不到用硬件直接捕获。

那你只能开启一个时钟计数,去计算一个上升沿外部中断和一个下降沿外部中断的时间差。

发表于 2018-5-27 22:12:52 | 显示全部楼层
接收机输出的信号是周期20ms,高电平0.5-2.5ms 的PWM信号
发表于 2018-5-28 11:07:30 | 显示全部楼层
这个用C8A8K系列或STC8A4K系列很容易,用4路PCA捕捉高电平时间(上升沿、下降沿捕捉),我的四轴飞控就是这样做的,非常好。
发表于 2018-5-28 11:15:38 | 显示全部楼层
发表于 2018-5-28 11:22:27 | 显示全部楼层
有的话,我也跟着收点
发表于 2018-5-28 11:36:47 | 显示全部楼层
cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

STC单片机估计做不到用硬件直接捕获。

硬件直接捕获是很高级的功能吗
发表于 2018-5-28 11:52:24 | 显示全部楼层
modbus 发表于 2018-5-28 11:36
硬件直接捕获是很高级的功能吗

算是。

低端单片机(51 AVR)没有这个功能。

MSP430、STM32等16位/32位单片机往上就有了。
发表于 2018-5-28 12:23:06 | 显示全部楼层
本帖最后由 ayumi8 于 2018-5-28 13:33 编辑

萝莉3  航模遥控器  开源的    原理  源代码都有的  自己搜吧

萝丽新版6通接收机A版程序.rar (6.6 KB, 下载次数: 96)
 楼主| 发表于 2018-5-29 19:57:02 | 显示全部楼层
ayumi8 发表于 2018-5-28 12:23
萝莉3  航模遥控器  开源的    原理  源代码都有的  自己搜吧

这头像是滨崎步啊
 楼主| 发表于 2018-5-29 20:01:37 | 显示全部楼层
cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

STC单片机估计做不到用硬件直接捕获。

我现在是使用STC的外部中断检测上升沿下降沿触发,上升沿触发时启动定时器,下降沿触发时关闭定时器,通过定时器走过的时间来判断,但是程序一直有问题,所以很无奈
发表于 2018-5-30 09:25:36 | 显示全部楼层
本帖最后由 xrb2936 于 2018-5-30 09:26 编辑

用支持 SBUS输出的接收机最简单,那就是个串口格式,随便啥MCU都可以搞定,通道数量还多
发表于 2018-5-30 11:02:44 | 显示全部楼层
cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

STC单片机估计做不到用硬件直接捕获。

STC单片机估计做不到用硬件直接捕获?

2005年量产的STC12C5410AD系列就有4路PCA(可编程计数器阵列),可以捕捉4路脉冲。
之后STC带PCA的MCU就多了,STC12C5A60S2、STC15W408AS、STC15W4K60S4系列、STC8A8K64S4A12系列、STC8A4K64S4A12系列,等等,都带PCA,捕捉功能是PCA功能之一。
发表于 2018-11-17 08:55:26 | 显示全部楼层
sanmaodeai 发表于 2018-5-29 20:01
我现在是使用STC的外部中断检测上升沿下降沿触发,上升沿触发时启动定时器,下降沿触发时关闭定时器,通 ...

/**************************************************************************************************       
函数名:
功能:         
作者:        数码人科技/唐荣永/15070964452
时间:        2018-4-5
备注:         
/***************************************************************************************************/

void Timer2Init(void)                //微秒@12.000MHz
{
        AUXR &= 0xFB;                //定时器时钟12T模式
        T2L = 0x0;                //设置定时初值
        T2H = 0x0;                //设置定时初值
        AUXR &= 0xEF;                //定时器2开始计时
}
/**************************************************************************************************       
函数名:
功能:         
作者:        数码人科技/唐荣永/15070964452
时间:        2018-4-5
备注:         
/***************************************************************************************************/
void   INT0_Init( void )
{
    IT0 = 0;                    //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    EX0 = 1;                    //使能INT0中断
        EA = 1 ;

}
/**************************************************************************************************       
函数名:
功能:         
作者:        数码人科技/唐荣永/15070964452
时间:        2018-4-5
备注:         
/***************************************************************************************************/

void exint0() interrupt 0       //INT0中断入口
{
if( INT0 == 1 ) { AUXR &= 0xEF;;PWM_ALL_1 = T2H*255 + T2L ;T2H = T2L = 0 ; AUXR |= 0x10; }
else   { PWM_H_1 = T2H*255 + T2L ;}
}


有的片子没有T2,就用T0
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-5-27 22:43

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表