3个帖子/ 0新
最后一篇
Herrkaefer.
离线
最后一次露面:1个月2周前
加入:2017-12-16 15:38
如何精密测载gpio波形时长?

我用来超声波传感器(HC-SR04),需要销量某个gpio上回声波形的时光,误差要求是几十个微秒以下。

尝试过的方法:

1)检测到gpio值进出发锰化时,直接直接定时器1的寄存器材。结果误差很大。

2)使用Timer1的GPIO触发功能,需要需要dg_configuser_can_use_timer1和dg_configuse_hw_timer0。结果:编译不错,sys_power_mgr似乎不允许dg_configuser_can_use_timer1为1。

3)使用Timer0,设置on_reload为1,T0_Reload为(0,0),即时设置中间数。这样中断被调使用的频率应该是32k / 4 = 8khz。在中间监理中查询gpio值,并并次数。结果测得的时尚是1÷2个计数。

请问这些方法哪种是可行的,问题是什么?有没有任何东西的合适的解决法?谢谢!

设备:
cyibin.
离线
最后一次露面:5个月3周前
职员
加入:2017-12-14 02:48
你好,

你好,

Timer1为RTOS。

可用计时器0或定时器。

因为从休眠中间的时间比较长,无法满足你的精致要求,

所以,建议你在开始数码冲前,先有一个信号,把da1468x系统,然后才使用计时器计数分数判断冲长。

Herrkaefer.
离线
最后一次露面:1个月2周前
加入:2017-12-16 15:38
谢谢回复!我们试了定时器0,使用下载的方法,

谢谢回复!我们试了计时器0,使用下载的方法,没能否得到一下面有问题?

1)设置Timer0 by

hw_timer0_init(null);
hw_timer0_set_clock_source(hw_timer0_clk_src_slow);// 32khz(慢)时钟
hw_timer0_set_on_clock_div(false);//不要划分10
hw_timer0_set_t0_reload(0,0);
hw_timer0_set_on_reload(1);

hw_timer0_register_int(timer0_interrupt_cb);
hw_timer0_enable();

希望有了这个设置,我们可以获得32k / 4 = 8k Hz的中断频率。

2)在中断功能中,检测GPIO状态并进行计数。

波形高电平的时代约毫秒。如果timer0中间是8k Hz(或者125空间隔)被调用的话,测得的结果总。这是一个125岁125岁。

请问这样的语言是不是不合同?遇有问题呢?多重!