打印
[PIC®/AVR®/dsPIC®产品]

遇到一个奇怪的问题。

[复制链接]
1630|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nemogg|  楼主 | 2014-1-15 14:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最近遇到一个比较奇怪的问题,我用p18lf46k22 写了一段程序,RD0,RD1,RD2接到一个74LS138的芯片的地址线。所以每次改变74LS138的输出时都要修改这三个输出。开始用单片机内部的16MHZ晶震输出都是正常的。但奇怪的是当我吧PLL打开的时候(FOSC X4 ,也就是说内部时钟工作在64MHZ)RD0怎么都没有输出,RD1,RD2,工作正常,用示波器观察RD0一直是低电平,奇怪的是把这一段程序去掉,单独把RD0置1的时候输出又是正常的。

.......
case 1:{LATD2=0;
        LATD1=0;
        LATD0=1;
        LED_EN=1;break;}(这段程序大概每3ms调用一次)。

查了半天,发现只要把LATDx=x的指令重复几次就可以实现想要的功能了。也就是:
case 1:{LATD2=0;
        LATD2=0;
        LATD2=0;
        LATD1=0;
        LATD1=0;
        LATD1=0;
        LATD0=1;
        LATD0=1
        LATD0=1
        LED_EN=1;break;}
请问有人知道这是神马原因呢。。。。难道是端口根本就不能工作在64MHZ的时钟下,中间需要插点延迟?
沙发
leehp| | 2014-1-15 15:51 | 只看该作者
你把74LS138换成74HC138试试。

使用特权

评论回复
板凳
yewuyi| | 2014-1-15 20:14 | 只看该作者
去掉外部挂的一切电路和元件再测。

使用特权

评论回复
地板
nemogg|  楼主 | 2014-1-16 11:02 | 只看该作者
leehp 发表于 2014-1-15 15:51
你把74LS138换成74HC138试试。

74HC138的延迟跟74LS138比几乎慢了一个数量级,HC的大概是150~200纳秒,LS最不会超过20多纳秒。而单片机的本身的指令周期就是62nS左右的(64Mhz),所以HC的芯片可能还没响应过来单片机可能已经跑到下面的使能指令了。

在我的程序里在修改完138的输入之后马上就会打开138的使能端子,所以如果延迟太大可能会导致会有短暂的错误输出。

使用特权

评论回复
5
nemogg|  楼主 | 2014-1-16 11:09 | 只看该作者
yewuyi 发表于 2014-1-15 20:14
去掉外部挂的一切电路和元件再测。

我好像试过断开所有线试了以下。但是RD0始终是0.所以后面线重新接回去了。

后面用示波器去看发现RD0会有非常窄的脉冲,感觉是刚打开又关上的。。。但是查来查去都找不到有置0的地方,晕死了:dizzy:

使用特权

评论回复
6
frank303| | 2014-1-16 12:20 | 只看该作者
用pll吗?设置有木问题。

使用特权

评论回复
7
nemogg|  楼主 | 2014-1-16 13:22 | 只看该作者
frank303 发表于 2014-1-16 12:20
用pll吗?设置有木问题。

没问题,我用示波器观察RA7输出内部时钟波形,频率是正确的。

使用特权

评论回复
8
yewuyi| | 2014-1-16 17:25 | 只看该作者
nemogg 发表于 2014-1-16 11:09
我好像试过断开所有线试了以下。但是RD0始终是0.所以后面线重新接回去了。

后面用示波器去看发现RD0会有 ...

检查RD0的相关数据手册描述,看看是否有复用模块

使用特权

评论回复
9
nemogg|  楼主 | 2014-1-19 12:36 | 只看该作者
yewuyi 发表于 2014-1-16 17:25
检查RD0的相关数据手册描述,看看是否有复用模块

RD0是有复用模块的,但是TRIS,ANSEL都应该设置正确了,唯一不明白是这个输出优先级的功能是怎么配置,DATASHEET的意思好像是会由PERIPHERAL控制,但是查不到到底是怎么控制的。

截图00.png (77.72 KB )

截图00.png

使用特权

评论回复
10
lnulibin| | 2014-1-19 19:54 | 只看该作者
个人认为LATD寄存器和PORTD寄存器还是有区别的。
RD0

LATD0
也有不同。仔细理解一下这个问题或许有用。

使用特权

评论回复
11
shuidi_wangdan| | 2014-1-21 07:54 | 只看该作者
我觉得是延时不够,加段延时!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

48

帖子

0

粉丝