繁体   English   中英

处理器字大小? 8位处理器= 8位字?

[英]Processor word size? 8bit processor = 8 bit word?

我想如果我有一个AVR 8位微控制器,则字数为8位/ 1字节? 但在数据表中,它表​​明大多数AVR处理器都有16位字。 但它没有说具体的处理器有这个。 通常在特定数据表中陈述一些内容很奇怪。

但是什么是8位32位MCU,如果这不是字大小?

如果wordsize = 2个字节,那么这在C中是原子的:U16位置;

位置= 1000;

但是,如果该字是1字节,我应该在写入此变量时禁用中断(中断使用此变量)? 禁用中断的速度有多慢?

传统的AVR系列(即ATtiny,ATmega,ATxmega,而非AVR32)是8位MCU,用于8位寄存器/累加器,但有一些16位指令,例如通过地址对处理指针时。

遗憾的是,没有普遍接受的“单词”定义。 在这种情况下,我怀疑作者只是将16位值称为字,而不是8位字节或32位双字。

所以,不,你不能指望以原子方式访问的16位变量。 值得庆幸的是一些最重要的I / O寄存器,例如定时器,其中有重要的内部锁存器来隐藏事实,但你需要注意与中断共享的RAM变量。

临时禁用中断非常快,每个都是CLI / SEI指令的循环。 某些编译器的问题(ImageCraft浮现在脑海中)是在函数中使用这样的内联汇编可能会禁用优化,因此实际成本可能会更高一些。 考虑仅禁用有争议的争议中断以避免此问题并减少延迟。

请注意,与其他一些MCU不同,原子位访问通常仅限于最低I / O端口范围内的一小部分寄存器,通常是几个PORT和通用寄存器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM