sanmaodeai 发表于 2018-5-27 22:05:49

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

求助如题,有吗?

cpholr1 发表于 2018-5-27 22:09:42

捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

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

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

fly7817 发表于 2018-5-27 22:12:52

接收机输出的信号是周期20ms,高电平0.5-2.5ms 的PWM信号

小李非刀 发表于 2018-5-28 11:07:30

这个用C8A8K系列或STC8A4K系列很容易,用4路PCA捕捉高电平时间(上升沿、下降沿捕捉),我的四轴飞控就是这样做的,非常好。

mashan75 发表于 2018-5-28 11:15:38

https://www.amobbs.com/forum.php?mod=viewthread&tid=959357&highlight=%E5%9B%BA%E5%AE%9A%E7%BF%BC%E9%A3%9E%E6%9C%BA

let8011 发表于 2018-5-28 11:22:27

有的话,我也跟着收点

modbus 发表于 2018-5-28 11:36:47

cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

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


硬件直接捕获是很高级的功能吗

cpholr1 发表于 2018-5-28 11:52:24

modbus 发表于 2018-5-28 11:36
硬件直接捕获是很高级的功能吗

算是。

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

MSP430、STM32等16位/32位单片机往上就有了。

ayumi8 发表于 2018-5-28 12:23:06

本帖最后由 ayumi8 于 2018-5-28 13:33 编辑

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

sanmaodeai 发表于 2018-5-29 19:57:02

ayumi8 发表于 2018-5-28 12:23
萝莉3航模遥控器开源的    原理源代码都有的自己搜吧

这头像是滨崎步啊

sanmaodeai 发表于 2018-5-29 20:01:37

cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

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


我现在是使用STC的外部中断检测上升沿下降沿触发,上升沿触发时启动定时器,下降沿触发时关闭定时器,通过定时器走过的时间来判断,但是程序一直有问题,所以很无奈

xrb2936 发表于 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功能之一。

tangrongyong90 发表于 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

sanmaodeai 发表于 2020-9-20 22:39:40

tangrongyong90 发表于 2018-11-17 08:55
/************************************************************************************************* ...

好的,我尝试下

小李非刀 发表于 2020-9-21 16:26:53

cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

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


我就是用STC的MCU直接捕捉PPM信号,比如STC8A8K64S4Q12,4路PCA硬件捕捉4个PPM信号(油门、航向、横滚、俯仰),还可以用定时器0和1硬件捕捉2路PPM。
飞控可以输出8路15位PWM直接输出控制的PPM或PWM信号,比如可以做4轴、6轴、8轴的多旋翼,也可以做固定翼的。

小李非刀 发表于 2020-9-21 16:31:58

cpholr1 发表于 2018-5-28 11:52
算是。

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


上世纪90年代我就用8031硬件捕捉PPM信号了(定时器0和1测量外部高电平时间是常用的功能),为什么你说没这个功能?AVR也有的。STC也有好多型号有这个功能,比如2005年供货的STC12C5410AD,后来的ATC12C5608AD等等,带4路PCA,捕捉4个脉冲,2个定时器还可以捕捉2路PPM。

sanmaodeai 发表于 2020-10-4 20:47:20

小李非刀 发表于 2020-9-21 16:31
上世纪90年代我就用8031硬件捕捉PPM信号了(定时器0和1测量外部高电平时间是常用的功能),为什么你说没 ...

你好,在吗?能否深入交流下?

wangbin526 发表于 2020-10-5 16:28:20

cpholr1 发表于 2018-5-28 11:52
算是。

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


表示很老的avr一样有输入捕捉定时器啊,arduino用的mega328都有,虽然只有16位定时器支持,也就是只有1个在引脚8

Fitz_wu 发表于 2020-10-5 23:22:51

cpholr1 发表于 2018-5-27 22:09
捕获高电平时间。。。如果是STM32,用个硬件PWM输入捕获即可。

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


STC 15的单片机有PCA功能快速捕获,内部是硬件计时捕获的。挺准的。
页: [1]
查看完整版本: 大神们有单片机接收航模遥控器接收机的程序吗?