使用 Atmega 128 作为实时逻辑单元

Using Atmega 128 as real time logic units

目前正在设计简单的电钢琴模型。我使用了大量解码器和 And's 来构建我的项目。在模拟中,这些 AND 被连接并启用外部 int0。因此,如果按下任何按钮,则无论其他进程如何,都会触发按钮播放功能。但在 PCB 和焊接中,我发现这些 AND 非常烦人。所以我试图通过更改我的代码来省略那些 AND。如果任何单个输入达到零,是否有任何软件中断会自动触发?或者 Atmega 128 中类似 FPGA 的组件?或者我是否必须在我的主代码的每一行中编写按钮扫描代码(我扫描了数据表但没有成功)

74148为8转3编码器

好吧,如果你的时间是 'slow',你可以很容易地实现一个二极管并用 1n4148 二极管(74148 的阴极)和一个独特的上拉电阻替换所有的 AND 到所有的阳极......当任何输入都会将二极管驱动到 GND,它会拉低 avr 上的中断...

通过适当的上拉 (4.7k),您可以达到 10us 的帧响应时间(可能更多)

如果有很多键,您可能需要使用一系列并行输入移位寄存器(例如 74HC(T)165 ... 每个单元 8 个键)- 彼此菊花链式连接 - 并读取它们的所有值每 10 毫秒左右一次使用 ATMega128 SPI 接口

further reading