带有生锈的九个pico pio wat(第2部分)

Raspberry Pi可编程的IO陷阱,并用音乐审查说明了带有Rust的九个Pico Pio wats(第2部分)首先出现在数据科学上。

来源:走向数据科学

这是探索与微python的Raspberry Pi pico Pio编程的意外怪癖的第2部分。如果您错过了第1部分,我们发现了四个有关注册计数,指令插槽,拉诺板行为以及智能而便宜的硬件的挑战的假设。

Micropython 第1部分 WATS 拉Noblock

现在,我们将继续朝着制作类似于Theremin的乐器制作的旅程 - 该项目揭示了PIO编程的一些怪癖和困惑。准备以一种让莎士比亚悲剧的方式挑战您对常数的理解。

WAT 5:Inconstant常数 在PIO编程的世界中,常数应该是可靠的,坚定的,并且不变。但是,如果不是怎么办?这使我们对PIO中的设定指令的工作方式(或不可能)处理更大的常数时感到困惑。 常数 就像朱丽叶(Juliet)怀疑罗密欧(Romeo)的持续状态一样,您可能会发现自己想知道Pio常数是否会正如她所说的那样,“同样变量也是如此。” 问题:常数并不像它们看起来那么大 想象您正在编程超声波范围查找器,并且需要从500降低回声信号从高到低点下降。要在PIO中设置此等待时间,您可能会天真地尝试使用SET直接加载常数: set ;在Rust中,请确保'config.shift_in.direction = shiftDirection ::左;'设置y,15;负载上部5位(0B01111)MOV ISR,Y;转移到ISR(清除ISR)Y,20;在y中加载较低的5位(0b10100),5个;在ISRMOV Y,ISR中的较低位移动;转回y 旁边:不要在这里理解疯狂的JMP操作。我们将在WAT 6中讨论下一个。 旁边:不要试图理解疯狂的 JMP 在这里操作。我们将在中讨论这些内容 wat 6 。 它默默破坏整个PIO指令 Inconstant常数的解决方法 要解决此限制,请考虑以下方法: 读取值并将其存储在寄存器中: wat 1 OSR wat 2 182 216 n x

WAT 5:Inconstant常数

在PIO编程的世界中,常数应该是可靠的,坚定的,并且不变。但是,如果不是怎么办?这使我们对PIO中的设定指令的工作方式(或不可能)处理更大的常数时感到困惑。

常数

就像朱丽叶(Juliet)怀疑罗密欧(Romeo)的持续状态一样,您可能会发现自己想知道Pio常数是否会正如她所说的那样,“同样变量也是如此。”

问题:常数并不像它们看起来那么大

想象您正在编程超声波范围查找器,并且需要从500降低回声信号从高到低点下降。要在PIO中设置此等待时间,您可能会天真地尝试使用SET直接加载常数:
set
;在Rust中,请确保'config.shift_in.direction = shiftDirection ::左;'设置y,15;负载上部5位(0B01111)MOV ISR,Y;转移到ISR(清除ISR)Y,20;在y中加载较低的5位(0b10100),5个;在ISRMOV Y,ISR中的较低位移动;转回y
旁边:不要在这里理解疯狂的JMP操作。我们将在WAT 6中讨论下一个。 旁边:不要试图理解疯狂的 JMP 在这里操作。我们将在 wat 6

它默默破坏整个PIO指令

Inconstant常数的解决方法

要解决此限制,请考虑以下方法: 读取值并将其存储在寄存器中: wat 1 OSR wat 2 182 216 nx