乐鑫技术交流
直播中

宜家

8年用户 1110经验值
私信 关注
[问答]

esp8266中断不准的原因?

我使用esp8266 及 http服务来控制servo

servo需要约每10ms更新一次pwm值 (从i2c写值给pwm ic控制)

但是 esp8266在接收http来的资料时

会影响每10ms一次的更新

接一次http request大约要100m

造成servo断断续续

有没有办法自已弄一个中断,他会高于所有如http等的权限

如此就算处理http的资料时也能正常慢速转servo

谢谢
               

回帖(1)

洪茗苞

2024-7-11 16:15:28
ESP8266中断不准确的原因可能有以下几点:

1. **中断优先级**:ESP8266的中断优先级可能不足以覆盖其他任务,如HTTP请求处理。这可能导致中断被延迟或丢失。

2. **中断服务例程(ISR)执行时间过长**:如果ISR执行时间过长,可能会导致其他中断丢失或延迟。

3. **任务切换开销**:ESP8266在处理HTTP请求时,可能需要在不同的任务之间切换,这会导致中断处理的延迟。

为了解决这个问题,你可以尝试以下方法:

1. **提高中断优先级**:确保你的中断优先级高于HTTP请求处理任务的优先级。这可以通过修改中断服务例程的优先级来实现。

2. **优化中断服务例程**:确保ISR尽可能简洁,避免执行耗时的操作。如果需要执行耗时的任务,可以在ISR中设置一个标志,然后在主循环中处理这些任务。

3. **使用定时器中断**:ESP8266具有硬件定时器,你可以使用硬件定时器中断来实现每10ms更新一次PWM值的功能。这样,即使在处理HTTP请求时,定时器中断也会被优先处理。

4. **使用RTOS**:考虑使用实时操作系统(RTOS)来管理任务调度。RTOS可以确保高优先级的任务(如PWM更新)在低优先级任务(如HTTP请求处理)之前执行。

5. **分离PWM更新和HTTP处理**:如果可能的话,尝试将PWM更新和HTTP处理分离到不同的硬件或软件模块。这样,即使HTTP处理受到影响,PWM更新也可以正常进行。

通过以上方法,你应该能够解决ESP8266中断不准确的问题,并确保servo的正常运行。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分