ESP32处理器实时性以及算力测试

全栈开法理论2024-05-31 14:01:20  57

外部中断响应延时

图1. 外部中断响应的测试波形

将频率为50kHz的PWM信号输入ESP32的GPIO口,使能该GPIO口的外部中断功能,在中断函数中,翻转另一个GPIO口电平,用于测试。

使用逻辑分析仪抓取这两个GPIO口的信号,上图的绿色通道为50KHz的输入信号,蓝色通道为中断函数中用于测试GPIO口电平翻转信号;

两个信号的边缘时间差为2us,

在一段比较长的时间段内,两个通道的脉冲数一样,均为161521个脉冲,可见,ESP32的SDK或者是外设模块的运行不会影响50kHz以内的外部中断的响应。

结论:

中断响应延时时间约为2us,

50KHz以内的外部输入中断可以被快速、可靠地响应

中断优先级

同时使能1ms的定时器中断以及频率为50KHz的外部输入中断,

在1ms的定时器中断程序中,翻转第1个GPIO口,同时循环延时翻转第2个GPIO口的电平,输出若干个测试脉冲之后,再退中中断程序;

在外部输入中断程序中,翻转第3个GPIO口的电平;

图2.定时器中断和外部中断的响应测试波形

蓝色通道为第3个GPIO口的波形,

绿色通道为第1个GPIO口的波形,

黄色通道为第3个GPIO口的波形,

当处理器运行定时器中断程序时,外部中断的测试GPIO口不会翻转电平,即不响应外部中断;

图3.定时器的周期测试

A1-A2 时间是983uS,B1-B2时间是936uS。

结论:

ESP32没有中断优先级;

中断的响应速度会受其其它中断的影响

测试浮点、乘除法运算的耗时

测试代码如下,通过该代码测试浮点除法运算,以及整数的乘、除法运算的耗时,

float a= 100.12;float b = 200.34;volatile float c;uint32_t a1 = 100;uint32_t b1 = 2006;uint32_t c1;gpio_on;for(i=0;i<100;i++){ c = a / b;}gpio_off;gpio_on;for(i=0;i<100;i++){ c1 = a1 / b1;}gpio_off;gpio_on;for(i=0;i<100;i++){ c2 = a2 * b2;}gpio_off;

图4. 测试算力的输出波形a

如上图,

A1-A2 对应为100次浮点数除法运算的耗时,为28.7us,单次浮点数除法运算耗时287ns;

B1-B2 对应为100次整数除法运算的耗时,为4.1us,单次整数除法运算耗时为41ns;

C1-C2 对应为100次整数乘法运算的耗时,为4.96us,单次整数除法运算耗时为49.6ns;

转载此文是出于传递更多信息目的。若来源标注错误或侵犯了您的合法权益,请与本站联系,我们将及时更正、删除、谢谢。
https://www.414w.com/read/625127.html
0
最新回复(0)