单片机只有2m,主频太低,所以觉得处理不了38k红外发射信号?
单片机现在只能用Fcpu=2M,所有周期是0.5us,红外发射用38K的PWM(发送15个周期,占空比1/3),这时要对接收的PWM个数进行计数,但是因为主频太低,所以觉得处理不了。求指教(电路图如下)电路作用:红外近场感应,接收部分采用带通放大器。
发射单片机与接收单片机是两个不同的mcu?
接收单片机两种方式:
1:实时待命,一直等着脉冲来。
2:中断方式,上升沿或下降沿计数。 38k是载波,编码的频率没这么高。 找颗载波38K的发射单芯片配合用就行。
红外遥控接收头,自动滤掉38K载频。 本帖最后由 neutronlmk 于 2020-6-23 16:31 编辑
没有硬件PWM,就用指令延时。
下面tb1,tb2都是变量,tb1用来产生一个38K脉冲,tb2计算n个脉冲。
carrier_38k:
clrwdt
bcr portb,PWM_IO
movia 5
movar tb1
Loop_38A:
decrsz tb1,1
goto Loop_38A
bsr portb,PWM_IO
movia 10
movar tb1
Loop_38B:
decrsz tb1,1
goto Loop_38B
decrsz tb2,1
goto carrier_38k
return
carrier_00k:
nop
nop
clrwdt
bsr portb,PWM_IO
movia 15
movar tb1
Loop_00A:
decrsz tb1,1
goto Loop_00A
decrsz tb2,1
goto carrier_00k
return 别自己折腾raw解调了,用IRM-56384或者IRM-H638之类一体化接收头,出来的直接就是基带,之后处理非常简易。 几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余 很早以前用4位MCU的时候,MCU频率是455KHz的,红外接收发射一样可以解决。 是的,而且一体式的红外接收头自带AGC和滤波,你这个电路只有在几厘米范围能稳定接收到信号,除非做红外学习,不然没法用. 38K是载波,发射的 时候 外面加个调制电路即可 Firman 发表于 2020-6-23 14:10
发射单片机与接收单片机是两个不同的mcu?
接收单片机两种方式:
1:实时待命,一直等着脉冲来。
发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算发送14个周期PWM,定时是在中断里实现的,高电平计数是在主程序里实现的 canback 发表于 2020-6-23 15:07
38k是载波,编码的频率没这么高。
PWM发送的 JY-MCU 发表于 2020-6-23 16:46
几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余 ...
一毛钱也要计较的,更何况多了几毛 tomzbj 发表于 2020-6-23 16:27
别自己折腾raw解调了,用IRM-56384或者IRM-H638之类一体化接收头,出来的直接就是基带,之后处理非常简易。 ...
对,这样处理是挺简单的,就是为了节约成本 neutronlmk 发表于 2020-6-23 16:23
没有硬件PWM,就用指令延时。
下面tb1,tb2都是变量,tb1用来产生一个38K脉冲,tb2计算n个脉冲。
这个软件PWM挺不错,就是现在用的是硬件的PWM,可以实现发送软件PWM的时候同时对接收到的高电平计数吗(该接收引脚无上升沿中断) 子不语 发表于 2020-6-25 21:22
发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算 ...
发射和接收是同个单片机,还管它38K、pwm干嘛?
发射口置高或低,延时几us,看一下接收囗状态,不完了么? 子不语 发表于 2020-6-25 21:22
发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算 ...
同一个单片机,发多少个PWM你不知道么,还数?
你想检测有没物体挡住红外发射吧? JY-MCU 发表于 2020-6-23 16:46
几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余 ...
正是我想说的,20年前大学里学51就用12M主频来做遥控器 Firman 发表于 2020-6-26 23:27
同一个单片机,发多少个PWM你不知道么,还数?
你想检测有没物体挡住红外发射吧? ...
开启PWM,想发14个周期,只能计数啦
页:
[1]