1. 设置外部中断触发方式:根据波形设置接收的第一个沿为触发中断的方式,如下图红外发送为上升沿,则接收设置为下降沿触发。
2. 设置定时器。定时器的作用是计算两个外部中断的时间间隔,以此来解析接收的数据。因此设置的时间间隔要大于最大的外部中断间隔时间,如下图最长的有为27T≈7.5ms,定时器应设置>8ms
3. 下降沿触发中断后,先读取当前的定时器计数,根据读取的计数判断发送的是起始码、数据0、数据1还是尾码,然后清计数重新开始计时。
上图尾码只触发定时器开始计数,当时间超过定时器时间后,触发定时器中断,认为此包数据结束。
4. 计算红外单位周期计数的最大值和最小值
遥控红外单位时间277us.本例中输入频率9.6MHz,16分频(16分频的目的是计数不会太大,不能太小,太小不准确),设置定时器为8ms定时器,则定时器最大计数=8000/(16/9.6)=4800,则一个T计数次数Count=277/(8000/4800)= 166.2 ,计算最大值和最小值需满足两个条件:
(UnitCountmax/UnitCountmin) < 2 和 UnitCountmax+UnitCountmin = 2*Count
计算出UnitCountmax = 222,UnitCountmin = 110.
UnitCountmax不能比UnitCountmin*2大,因此需要调整UnitCountmax