开源改变世界

移植到 ATmega2561 中断 #306

推推 grbl 3年前 (2023-01-21) 189次浏览

关闭
WD24 开启了这个issue 2017 年 11 月 12 日 · 3条评论
关闭

移植到 ATmega2561 中断#306

WD24 开启了这个issue 2017 年 11 月 12 日 · 3条评论

注释

移植到 ATmega2561 中断 #306

有没有人将 GRBL 移植到 ATmega2561 上?

据我所知,与 ATmega2560 和 ATmega328 不同,ATmega2561 只有 1 个端口可处理引脚更改中断 (PCINT)。GRBL 需要两个端口,一个用于处理硬限制,一个用于处理控制引脚。

Atmega2561 确实有其他中断 (INT)。据我了解,这些中断只有在被拉低时才会触发。而如果引脚从低电平变为高电平或从高电平变为低电平,则引脚变化中断触发。

我可以使用这些 INT 而不是 PCINT 吗?如果是这样,您将如何实施?

移植到 ATmega2561 中断 #306

阅读数据表第 15 节外部中断:

外部中断由 INT7:0 引脚或任何 PCINT23:0 引脚触发。请注意,如果启用,即使 INT7:0 或 PCINT23:0 引脚配置为输出,中断也会触发。此功能提供了一种生成软件中断的方法。如果任何启用的 PCINT23:16 引脚切换,引脚更改中断 PCI2 将触发,如果任何启用的 PCINT15:8 切换,则引脚更改中断 PCI1 和如果任何启用的 PCINT7:0 引脚,引脚更改中断 PCI0 将触发toggles.PCMSK2、PCMSK1 和 PCMSK0 寄存器控制哪些引脚有助于引脚更改中断。异步检测 PCINT23:0 上的引脚变化中断。这意味着这些中断也可用于将器件从空闲模式以外的睡眠模式唤醒。外部中断可由下降沿或上升沿或低电平触发。这是按照外部中断控制寄存器规范中的指示设置的——EICRA (INT3:0) 和 EICRB (INT7:4)。当外部中断使能并配置为电平触发时,只要引脚保持低电平,中断就会触发

移植到 ATmega2561 中断 #306
作者

当您在 Arduino IDE 中编译 GRBL 时,对于 ATmega2561,它会产生错误,指出它无法识别 PCMSK2 和 PCINT2。

如果您查看数据表(第 1 节引脚配置)中的图形以了解 64 引脚 ATmega1281/2561 的引脚布局(图 1-3),它​​只有引脚 PB0-7 上的 PCINT0-7 和 PE0 上的 PCINT8(这也是 RX0)

与图 1-1 相对应的 100 引脚 ATmega640/1280/2560 在引脚 PB0-7 上有 PCINT0-7,
在 PE0 上有 PCINT 8,在 PJ0-6 上有 PCINT 9-15,在 PK0-7 上有 PCINT 16-23

所以在 ATmega2561 上没有足够的端口可用于所有控制引脚和限制引脚。

我错过了什么吗?

您可以使用 INT 引脚代替 PCINT 吗?如果可以,如何使用?

移植到 ATmega2561 中断 #306
贡献者

此问题已关闭,因为它与支持的 2560 处理器无关。

喜欢 (0)