![]() |
1
3
简单的解决方案是
如果你不喜欢重复的分支,你可以组建一个聪明的调度器来处理
|
![]() |
2
1
“插入式更换” 意味着可以用另一个控制器替换一个控制器 身体上 ,包括:
它 并不意味着芯片是二进制兼容的 即,它们可以使用相同的二进制代码/可执行文件进行编程。 第1版: 在ATtiny87/167数据表中 "7.1 Interrupt Vectors in ATtiny87/167" , pp 57 任何一个设备的中断地址都不同。 在里面 “1.1 ATtiny87与ATtiny167的比较” ATtiny87的2个单词的矢量大小是一个Bug 在手册中。 结论ATtiny87和ATtiny167不是二进制兼容的。要获得兼容的二进制文件,需要付出一些努力。。。为ATtiny87编译代码,但需要进行以下修改:
|
![]() |
3
0
根据目录表,这两种类型都兼容硬件和软件。两者都使用两个单词作为矢量表。只有当FLASH大小小于4KiBy时,才能使用一个字(rjmp)。
因此,您可以将JMP用于两个MCU 在使用几种不兼容类型的情况下,这可以通过条件转换来解决,例如根据签名或族类型。
编辑
我被表1.1中的信息弄糊涂了。在为ATTiny87编写的地方,它使用2个字作为中断矢量表。事实上,它只使用一个单词,因为rjmp可以跳转到8KiBy(+-2KWord)。在这种情况下,可以使用条件翻译。例如在
|
![]() |
4
0
我很惊讶没有人提议使用汇编宏,假设您的中断向量例程位于
您也可以使用预处理器做一些更脏但更酷的事情:
对于第二种方法,现在基本上可以替换的每个实例
|