子不语 发表于 2020-6-23 00:42:03

单片机只有2m,主频太低,所以觉得处理不了38k红外发射信号?

单片机现在只能用Fcpu=2M,所有周期是0.5us,红外发射用38K的PWM(发送15个周期,占空比1/3),这时要对接收的PWM个数进行计数,但是因为主频太低,所以觉得处理不了。求指教(电路图如下)
电路作用:红外近场感应,接收部分采用带通放大器。

Firman 发表于 2020-6-23 14:10:36

发射单片机与接收单片机是两个不同的mcu?
接收单片机两种方式:
1:实时待命,一直等着脉冲来。
2:中断方式,上升沿或下降沿计数。

canback 发表于 2020-6-23 15:07:08

38k是载波,编码的频率没这么高。

shuiyu 发表于 2020-6-23 15:12:23

找颗载波38K的发射单芯片配合用就行。

hzpyl 发表于 2020-6-23 16:07:51

红外遥控接收头,自动滤掉38K载频。

neutronlmk 发表于 2020-6-23 16:23:42

本帖最后由 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

tomzbj 发表于 2020-6-23 16:27:04

别自己折腾raw解调了,用IRM-56384或者IRM-H638之类一体化接收头,出来的直接就是基带,之后处理非常简易。

JY-MCU 发表于 2020-6-23 16:46:39

几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余

cocom 发表于 2020-6-23 16:50:45

很早以前用4位MCU的时候,MCU频率是455KHz的,红外接收发射一样可以解决。

apple_eat 发表于 2020-6-23 17:00:10

是的,而且一体式的红外接收头自带AGC和滤波,你这个电路只有在几厘米范围能稳定接收到信号,除非做红外学习,不然没法用.

LinuxTux.China 发表于 2020-6-23 20:06:33

38K是载波,发射的 时候 外面加个调制电路即可

子不语 发表于 2020-6-25 21:22:58

Firman 发表于 2020-6-23 14:10
发射单片机与接收单片机是两个不同的mcu?
接收单片机两种方式:
1:实时待命,一直等着脉冲来。


发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算发送14个周期PWM,定时是在中断里实现的,高电平计数是在主程序里实现的

子不语 发表于 2020-6-25 21:23:24

canback 发表于 2020-6-23 15:07
38k是载波,编码的频率没这么高。

PWM发送的

子不语 发表于 2020-6-25 21:24:00

JY-MCU 发表于 2020-6-23 16:46
几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余 ...

一毛钱也要计较的,更何况多了几毛

子不语 发表于 2020-6-25 21:24:45

tomzbj 发表于 2020-6-23 16:27
别自己折腾raw解调了,用IRM-56384或者IRM-H638之类一体化接收头,出来的直接就是基带,之后处理非常简易。 ...

对,这样处理是挺简单的,就是为了节约成本

子不语 发表于 2020-6-25 21:28:46

neutronlmk 发表于 2020-6-23 16:23
没有硬件PWM,就用指令延时。
下面tb1,tb2都是变量,tb1用来产生一个38K脉冲,tb2计算n个脉冲。



这个软件PWM挺不错,就是现在用的是硬件的PWM,可以实现发送软件PWM的时候同时对接收到的高电平计数吗(该接收引脚无上升沿中断)

Firman 发表于 2020-6-26 23:18:36

子不语 发表于 2020-6-25 21:22
发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算 ...

发射和接收是同个单片机,还管它38K、pwm干嘛?
发射口置高或低,延时几us,看一下接收囗状态,不完了么?

Firman 发表于 2020-6-26 23:27:15

子不语 发表于 2020-6-25 21:22
发射和接收是同一个单片机,发送的只38k的PWM,开启发送PWM,开启接收电源,然后我定时器定时25us,打算 ...

同一个单片机,发多少个PWM你不知道么,还数?
你想检测有没物体挡住红外发射吧?

tsb0574 发表于 2020-6-27 07:31:25

JY-MCU 发表于 2020-6-23 16:46
几毛钱一个的红外接收头出来后直接就是载波,12M时钟也就是1M的CPU时钟的51处理起来都绰绰有余 ...

正是我想说的,20年前大学里学51就用12M主频来做遥控器

子不语 发表于 2020-6-27 23:35:00

Firman 发表于 2020-6-26 23:27
同一个单片机,发多少个PWM你不知道么,还数?
你想检测有没物体挡住红外发射吧? ...

开启PWM,想发14个周期,只能计数啦
页: [1]
查看完整版本: 单片机只有2m,主频太低,所以觉得处理不了38k红外发射信号?