定时器T0检测脉宽,初始化定时多少?
定时器T0检测脉宽,初始化定时多少?
void Init_Timer0(void)//11.0592MHz
{
AUXR &= 0x7F;//定时器时钟12T模式
TMOD &= 0xF0;//设置定时器模式
TMOD |= 0x01;//设置定时器模式,16位不自动重载模式
TL0 = 0;//设置定时初值
TH0 = 0;//设置定时初值
TF0 = 0;//清除TF0标志
TR0 = 0;//关闭定时器0计时
EX0 =1;//允许外部中断1中断
EA=1;//开总中断
}
备注是:定时器初始化,24MHz,1ms看不明白?? 用官方工具自动生成
用 PWM 来测脉宽
测脉宽,用 带ADC的 MCU, 带 ADC的 MCU, 都标配了 PWM,
用 PWM 来测脉宽 380091044 发表于 2023-11-25 10:03
备注是:定时器初始化,24MHz,1ms看不明白??
怎么看的?确实没看明白?? 本帖最后由 王昱顺 于 2024-1-31 11:06 编辑
定时器是个自加计数器,如果使能以后就一直自加直到溢出。
可以用检测脉宽。但是不如PWM检测来的精准。
一般的流程是通过外部IO的上升沿/下降沿触发中断开启定时器,再通过上升沿/下降沿触发中断关闭定时器,并且读出当前定时器的值,就可以得到这个脉冲的宽度。
不过这个方法一是需要来回转换上升沿下降沿或者占用资源,二是对系统占用有点大。
使用PWM可以方便的将PWM时钟拉高,这时候脉冲宽度的分辨率也会增高。并且PWM模式捕获脉冲宽度还是自动的,直接开中断读取值就可以。
王昱顺 发表于 2024-1-31 10:57
定时器是个自加计数器,如果使能以后就一直自加直到溢出。
可以用检测脉宽。但是不如PWM检测来的精准。
一 ...
检测的是无线信号的脉宽,使用PWM波检测,还没有用过,需要一个DEMO,学习一下。 本帖最后由 jmg 于 2024-1-31 12:54 编辑
Use T0_GATE =1 to enable INT0 pin as an AND gate.
T0_CE = (TR0==1) AND (INT0 == 1)
See also STC8H.PDF 15.8.6
jmg 发表于 2024-1-31 12:53
Use T0_GATE =1 to enable INT0 pin as an AND gate.
T0_CE = (TR0==1) AND (INT0 == 1)
定时器T0结构图,想说什么呢? 380091044 发表于 2024-1-31 11:32
检测的是无线信号的脉宽,使用PWM波检测,还没有用过,需要一个DEMO,学习一下。 ...
手册的例程就有
页:
[1]
2