完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我已经做了一些研究,找不到答案。这可能类似于此处发布的关于 ESP8266 主循环时序抖动的其他问题,但我的问题更具体。我观察到的是,平均而言,我的最小主循环时间为 4.4 us(160 MHz CPU 时钟速率),但恰好每一秒它都会变成 ~54 us。换句话说,每秒都会发生一个约 50 us 长的事件(中断?)。这搞乱了我试图从 Arduino Nano 移植到 ESP8266 的算法(步进电机的精确控制,用于焦点堆叠导轨控制)。(在 Arduino 中,时间更加一致:最长循环仅比平均循环长 30%。)
至此,我尝试禁用 WiFi(我不需要它): 代码:全选 WiFi.disconnect(); WiFi.mode( WIFI_OFF ); WiFi.forceSleepBegin(); (这有点帮助 - 从 64 us 长循环下降到 54 us)。我还尝试禁用所有中断(根本没有帮助): 代码:全选noInterrupts(); 恰好在 1 秒的间隔内可能会发生什么?我的想法是,它一定与 WiFi 有某种关系,因为对于其他任何东西,1 秒都是巨大的(就 CPU 周期而言)。也许我使用的命令没有完全禁用 WiFi 和/或相关中断? 除了 WiFi 之外还有什么可能是罪魁祸首?我想弄清楚 NMI - 它会不会是这里的错?我没有在我的代码中使用 PWM,所以也许我可以以某种方式禁用 NMI 和/或 PWM? 我在我的设置中使用 Arduino IDE。 感谢您的任何输入。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
309浏览 6评论
266浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
257浏览 5评论
259浏览 4评论
238浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-6-22 18:51 , Processed in 0.700026 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号