【发布时间】:2011-02-26 03:13:19
【问题描述】:
我正在尝试将两个 PIC 16f627 芯片(使用 PICC-Lite 编程)与一个 I/O 引脚(RA2,在已知点改变方向)和一个由其中一个芯片驱动的 CLK 引脚连接在一起。
我最初设置了它,所以有一个主人和一个奴隶。主机将写入 8 位“命令”,I/O 引脚的 TRIS 位将被翻转,从机将以 16 位“应答”响应。
我已经进行了(暂时的、很大的)延迟,以确保没有时间问题。
写/读命令工作正常,两端翻转状态(TRISA)。然而,此时,当主机从之前写入的引脚读取时,即使引脚物理上为 1,它也始终读取 0!
据我所知,TRISA 设置正确(=如果输入则设置为位),CMCON (=7) 也是如此,并且我相信 CONFIG 字;两个芯片都是一样的(嗯,倒置),输入在从机上工作......我还试图确保两个芯片的 TRISA 永远不会同时为 0。
我尝试过的: - 改变从机,而不是试图发回数据,它只是在很长的时间间隔内切换它的输出引脚的值。这可以在输出线上看到,但在输入引脚的值上看不到。 - 只是将状态从输入引脚传递到不同的输出引脚(输出保持为零;虚拟放置表明该引脚上的一般输出有效) - 将 PORTA 和 TRISA 的值写入 LCD - TRISA 正确,但 PORTA 为 0(即使连接到引脚的线为高电平) - 将 I/O 线连接到 LED 显示它正在改变,但端口上的输入值没有 - 连接电压表显示合适的电压(等于 V+) - 我尝试将Master换成替代品(它认为它可能遭受了一些物理损坏),但这没有任何区别 - 我读过这可能是一个“读取-修改-写入”问题,但我找不到任何建议来确保 Pic16s 上不是这种情况......(没有 LAT 端口 AFAIK?)
我正用头撞墙。任何提示或想法将不胜感激!我可能不得不依靠使用两个引脚(尽管我有点希望我能够在某个时候通过一条共享 I/O 线插入多个从站......)
【问题讨论】:
-
我认为问题在于 TRISA 在(不受支持的)pic 16f628 上使用时无法在 picc-lite 中正常工作 - 结果其中一个芯片是 16f628。将 i/o 引脚移至 PORTB 似乎可行——不过,能够将引脚用作 PORTA 上的输入会很好!
-
您使用的是电压参考模块吗?您是否在将 CMCON 设置为 7 时设置了存储库 1?
-
VRCON[6] 应该是0。是这样吗?
-
你能把代码放在这里吗?
标签: io hardware pic master-slave microchip