在你的微控制器上直接注册操作

我真的很喜欢我在Digilent做的事情。我使用了一些为学生、专业人士和业余爱好者提供的最好的工具。我最喜欢的一件事是,它是多么容易得到一个高质量的微控制器板,如chipKIT Uno32。

chipKIT uno32 - obl - 600
流行的chipKIT Uno32开发板与PIC32mx320F128H微控制器在板上。

但即使你有一个好的电路板,它仍然需要编程。现在,如果你曾经用汇编语言编程过微控制器,你就会知道直接处理寄存器值是多么的优雅。它很简单,很容易做,如果你做得对的话,会得到一些非常快的代码。问题是,流行的IDE格式(如MPIDE)被设计成非常友好的用户界面,因此编码语言是高级的(C/ c++)。这意味着当芯片被编程时,在编译器中会发生一些转换,将你的草图重写到汇编程序中,以便芯片能够处理它。随着高级语言的出现,更容易拥有用户友好的预构建函数,如digitalWrite(),但它们必须转换为Assembly,并与您的草图一起加载。每当你使用这个函数时,处理器就会在内存中查找并相应地执行它。这将占用内存空间和大量处理时间,如果空间或速度是一个问题,那么这将成为一个问题。

那么我们如何解决这个问题呢?有没有一种方法,仍然使用用户友好的IDE,仍然有速度和空间的直接寄存器操作?为什么,是的!是的,有。而且它出奇的简单。

Microchip PIC32芯片在每个I/O引脚上使用三个寄存器来读写数据。(像PWM, I2C或UART这样的多任务引脚有更多的寄存器。)第一个是TRISx,它设置了引脚的I/O方向,并涉及到允许引脚是输出、输入或高阻抗(既不输入也不输出)的三态能力。在TRISx中设置' 1 '将会将相应的引脚设置为输入,而设置' 0 '将会将其设置为输出。下一个寄存器是LATx,它起闩锁的作用。如果引脚在TRISx中被设置为输出,那么您可以根据需要在LATx中相同的位位置写入' 1 '或' 0 '。这将相应地将引脚上的逻辑状态设置为HIGH或LOW。最后一个寄存器是PORTx,它是使用TRISx作为输入的引脚集的输入状态。您可以从这里读取数据,并根据需要在您的草图中处理它。映射到这些寄存器的标准IDE函数是pinMode() (TRISx)、digitalWrite() (LATx)和digitalRead() (PORTx)。

要了解更深入的解释和一些示例代码,请查看我的教程

0
第一个投票。

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记