【问题标题】:PIC32MX cannot change select TRIS bitsPIC32MX 无法更改选择的 TRIS 位
【发布时间】:2015-03-18 00:50:19
【问题描述】:

希望我在这里有合适的论坛。

首先:

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

IDE: MPLAB X IDE v2.26

编程器/调试器: PicKIT 3

我正在尝试将一些端口引脚设置为输出,以便我可以将通信协议位连接到另一个设备。但是,当我使用 pickit 3 作为调试器运行 PIC 时,我发现某些 TRIS 位不会切换到 0。

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

我尝试切换的引脚是:

  • TRISF4 (SDA3A/SDI3A/U3ARX/PMA9/CN17/RF4)
  • TRISG3 (D-/RG3)
  • TRISG2 (D+/RG2)

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

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

粘性 TRIS 位的某些原因可能是什么?

【问题讨论】:

  • 存在许多可能的问题,因此更多信息可能有助于确定确切原因。例如,哪些引脚工作,哪些引脚不工作?您的配置位设置为什么?您是否将零加载到 LATx 或 PORTx 寄存器中?理想情况下,您可以发布一个代码的最小示例(删除了额外内容)来帮助回答这些问题。

标签: microcontroller pic microchip


【解决方案1】:

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

同样,如果您启用了 UART3,RF4 将成为 RX 输入。

您需要确保启用/禁用共享这些引脚的外设并非常仔细阅读数据表。有时它是一个完整的 PITA,但我从未发现数据表有问题 - 只是有时东西隐藏得很好!

【讨论】:

  • 最终数据表将是正确的。最初的 dspic[24/33]e 表是一场火车事故
【解决方案2】:

两个重要的原因是一个为模拟配置的引脚和一个为其他功能(如 JTAG)配置的引脚。

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

我没有检查您的特定设备的数据表,所以我不能更确定。

更新:

请参阅罗杰罗兰的回答。无法替代阅读数据表!

【讨论】:

  • ANSELx 寄存器影响输入。我还没有看到一个 PIC 的输出受到 ANSELx 的影响。
  • @MathieuL。从 PIC32MZ 数据表的 12.1.2 开始:“如果在 ANSELx 位置位时清除(输出)TRIS 位,则数字输出电平(Voh 或 Vol)由模拟外设转换,例如 ADC 模块或比较器模块。”和“为了将端口引脚用于数字模块的 I/O 功能,例如定时器、UART 等,必须清除相应的 ANSELx 位。”
  • @MathieuL。我刚刚根据本文档清除了相应的 ANSELx 位。如果你不这样做,我还没有实际测试过会发生什么。
  • 我可以认输。如果规格。单子这么说,很可能是真的。
猜你喜欢
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2016-07-02
  • 2018-03-15
  • 2015-07-06
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
相关资源
最近更新 更多