【发布时间】:2010-08-13 16:25:34
【问题描述】:
我看到一些代码将读取/写入一些外围寄存器。我看到写操作都有一些延迟。在我看来,SW 需要等待该值对 HW 生效。一些网页说寄存器会在每个时钟周期更新。我想这就是等待的原因。好吧,我的问题是:
- 读取操作是否也需要这样的延迟?如果是,当 SW 想要读/写一个寄存器时,这样做的正确顺序是什么?喜欢
[延迟]
tmp=some_register //读取
some_register=tmp+1 //写
[延迟]
或
tmp=some_register //读取
[延迟]
some_register=tmp+1 //写
[延迟]
如果 SW 在写操作后没有这样的延迟怎么办?我实际上看到一些没有延迟的写操作可以在一些较慢的 CPU 上正常工作。但是当代码在更快的 CPU 上运行时,它会失败。我认为延迟是合理的。我只需要解释一下为什么它适用于较慢的 CPU。
我对寄存器的功能不是很熟悉。任何有用的材料或链接?
【问题讨论】:
-
什么平台/CPU、x86、SPARC、BBC Micro? :D
-
您使用哪种微控制器或微处理器和外部硬件?
-
外接硬件为串口板