PIC32MX 无法更改 select TRIS 位

PIC32MX cannot change select TRIS bits

希望这里有合适的论坛。

首先:

处理器: PIC32MX795F512L(在 chipKIT mx32 开发板上)

IDE: MPLAB X IDE v2.26

Pogrammer/Debugger: PicKIT 3

我正在尝试将一些 PORT 引脚设置为输出,这样我就可以将通信协议位转换为另一个设备。然而,当我 运行 PIC 使用 pickit 3 作为调试器时,我发现一些 TRIS 位不会切换到 0。

到目前为止,这是我在使用 TRISF 和 TRISG 时遇到的问题,我在其他帖子中看到过一些提及,但没有解决方案。

我尝试切换的引脚是:

这是我如何做的一个例子。

ODCDCLR = 0xFFFF;
ODCFCLR = 0xFFFF;
TRISDCLR = 3<<14;
TRISFCLR = 3<<5;

粘性 TRIS 位可能是什么原因造成的?

两个主要原因是一个引脚配置为模拟,一个引脚配置为其他功能,如 JTAG。

对于 F 和 G,您可以设置 ANSELF = 0ANSELG = 0。对于 JTAG,您需要检查数据 sheet,然后设置适当的配置位。

我还没有检查过您的特定设备的数据 sheet,所以我无法确定。

更新:

请参阅罗杰罗兰的回答。无可替代读取数据 sheet!

如果您查看 page 36 of the datasheet,您会发现 G2 和 G3 在用作数字 I/O 而不是 USB 时仅作为输入。摘录如下:

同样,如果您启用了 UART3,RF4 将是一个 RX 输入。

您需要确保 enable/disable 外围设备共享这些引脚并非常 仔细阅读数据表。有时它是一个完整的 PITA,但我从未发现数据表有误 - 只是有时事情隐藏得很好!