PIC 18f和PORT-B

尝试使用PIC 18f4685获得4x4键盘。

I've turned on weak-pulls ups. Set the appropriate pins to either input/output but when I send a signal out I'm not getting it back on bits 6 & 7. It just gets zeros...

我试图使用PicKit3进行调试,但似乎它使用RB7,并在该行的按钮被按下时崩溃。当然,这告诉我,信号必须通过,到一定程度。

还有什么特别的,我需要在PORT B的配置中设置?

一如既往......您的帮助非常感谢。

0
额外
意见: 1
非常感谢所有关于可能的配置问题的其他想法。我设法让它运行。 Ya,在调试过程中不能使用PicKit3,我的一个焊点很糟糕。你是最好的论坛!总是得到一个快速友好的回应!
额外 作者 Chef Flambe,
哪些引脚是输入,哪些是输出?假设RB4-7是输入...
额外 作者 ajs410,

3 答案

你可以使用你的代码来设置三态寄存器(TRISB)以及你如何阅读。在按钮按下之前和期间,您是否使用数字万用表(DMM)检查了输入引脚上的电压?他们是10美元,值得。

Finally, did you disable the analog pins? On PIC24 chips you have to do:

AD1PCFG = 0xFFFF

在数字输入读取之前将工作。你的芯片可能是一样的。

你能给我们你的芯片的EXACT型号吗?

0
额外

由于EE网站在你得到答案之前如此粗暴地关闭你,我想我会来这里回答你的问题。

检查第135页上的表10-3,它列出了端口B引脚的所有功能。请注意,RB6和RB7也是调试引脚,所以我不会使用这些。

Also, are you writing to LATx and reading from PORTx? It's important to do this when reading and writing to the same port. If you read and write to PORTx, you can accidentally read a stale value from an output that has not had enough time to change yet, and your next write will obliterate your intended value. This is particularly pernicious on PICs that don't have a LATx register; any operation, even bit-wise operations like BSF/BCF, will do a read-modify-write of the ENTIRE port register, affecting more than the bit that you intended to modify. See the answer to this EE question: https://electronics.stackexchange.com/questions/28744/interfacing-a-keypad-with-a-microcontroller

0
额外
关于LATx寄存器的好处。
额外 作者 Adam Casey,

不确定您的原理图(草图可能有所帮助),但PIC GPIO中的常见错误不是将ADC寄存器设置为数字输入。它们作为模拟输入从复位中退出。

请查看 PIC18F4685数据表中的寄存器描述19-2。

ADCON1 comes out of reset as 0x00. To set all the analog pins to digital I/O, PCFG3:0 need to be set to 1.

ADCON1bits.PCFG = 0x0F;
0
额外
谢谢...我会仔细检查一下。但是我认为这实际上可能是一个硬件问题......焊点不好。重新流动并检查ADCON1寄存器是否正确设置。
额外 作者 Chef Flambe,
您也可以将配置位PBADEN置1以避免必须设置ADCON1。
额外 作者 ajs410,
我会用@Adam来回答,因为这是一个常见的错误:) +1。
额外 作者 Diego Garcia,