gpt4 book ai didi

在 Linux 中断处理程序中创建一个小延迟

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:40 25 4
gpt4 key购买 nike

我正在与一个硬件设计小组一起开发中断处理程序,我们正试图找出错误所在。我正在以 5khz 的速度通过 SPI 总线读取芯片。芯片加载 4 个字节并触发数据就绪引脚。

我的中断处理程序唤醒并从 SPI 总线读取 4 个字节并将数据存储在缓冲区中。奇怪的是,每第 17 次读取给出 4 个全 0 的字节,这是不对的。我们正在探索的选项之一是,芯片在发送数据就绪信号时并不总是真正就绪。

所以,我知道我不能在中断处理程序中休眠,但我想尝试引入 10 或 20 微秒的延迟。现在我有一个 for 循环,它计数到 100,000 然后处理中断。我没有看到任何变化,所以我想我可能会看看是否有人有更好的忙等待技术。或者至少是一种更好的方法来确定我应该经历多少次循环迭代,因为我不确定这需要多长时间,或者编译器是否只是在优化整个过程。

最佳答案

我不知道您是否可以访问嵌入式设备上的任何伪随机数生成库,但是进行大数乘法后跟 mod 肯定需要一些周期。而不是简单地加 1(这在硬件级别非常快,编译器可以优化它以进行移位,因为您正在执行静态次数)使用随机数种子(系统是否可以访问时钟? ) 如果可用并进行大数乘法、模数或阶乘运算,负数除法也需要永远。请记住,除法在硬件级别花费的时间最长。将其用于您的优势。

关于在 Linux 中断处理程序中创建一个小延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com