阅读:3330回复:24
是我弱还是片子有问题?
我用philips的D12,这个片子的中断应该是低电平有效,那常态就应该是高电平啊,可它死活就是高不上去,上拉电阻我也接了(10k)
郁闷 |
|
沙发#
发布于:2001-09-12 16:41
我不知道PHILIPS的片子是否有专用的输入/输出积存器,如果没有,你试着在程序里对管脚置高,这个问题在MCS51里有时回遇到。
否则你换个片子看看吧! |
|
板凳#
发布于:2001-09-12 17:30
这个片子根本没有寄存器:(
现在我还不能对它发命令 不是不能,是我发了它没反应 时序没有问题 电路是我按照philips提供的典型电路连的 所以我怀疑是中断的问题 郁闷++ |
|
地板#
发布于:2001-09-12 19:17
会不会是跟中断引脚相连的芯片把它拉低的?把引脚翘起来再量一下!
|
|
地下室#
发布于:2001-09-13 09:04
D12经常会犯病:一上电的时候,INT老是会自动置为低电平。你需要把所有的interrupt寄存器都读一下,就可以让它变高了。
|
|
|
5楼#
发布于:2001-09-15 17:09
要相信科学!
------------------------- 不是吗,发生任何事情都是有原因的??? |
|
|
6楼#
发布于:2004-11-01 14:56
这个问题我现在也遇到了,可是上拉电阻我也接了,寄存器我也都读过,可是我读的值都是写入的命令值呀!例如:0xf4,0xf0..等等!
各位老大,是不是我的片选地址有问题? 我使用的是SUNSAMG4510B 和d12 连接,外部供电! 这个问题困扰我一个星期了!急死偶了! 还请各位老大多多执教! |
|
|
7楼#
发布于:2004-11-01 16:45
呵呵……
我也用遇过这个问题的!也郁闷了很久的,也试过很多的方法的,后来才知道其实很简单的哦! 只要在初始化后调用一下中断函数,就可以使他变成高电平了!几乎很多人都遇过这个问题的,都是用这样的方法解决的!不信的话,你自己试一下就知道拉! |
|
8楼#
发布于:2004-11-02 16:36
现在的问题是,我向D12当中发0xF4命令,他返回的还是0xF4,从这点上看应该是CS地址不正确造成的吧?
|
|
|
9楼#
发布于:2004-11-05 10:22
楼上的大吓,我现在的问题和你的一样,你解决了吗?能交流一下吗,我的QQ是394725250。
|
|
10楼#
发布于:2004-11-05 13:25
检查一下硬件电路。
=========================================================== 测试硬件的方法有三种, 一种是通过0xFD命令读取特征字,连续的两个字节(我的是 0x1210,不管系统在什么状态下,不管是不是处于中断状态 下,都可以读取)。 第二种是通过设置CLKOUT的输出频率,通过示波器来观察 CLKOUT端的输出波形,是不是和自己设定的一致。 第三种是通过V3.3脚的电压,如果此脚输出是3.3V则电路没问 题。 =========================================================== |
|
11楼#
发布于:2004-11-05 15:07
egrias 大吓,我想问一下,我的D12的VDD电压是由外部供电有3.1V左右,V3。3管脚有2。9V左右,但我读不到ID,读到的只有00。
你能告诉我你的QQ吗,我想现在就问你,谢谢了: |
|
12楼#
发布于:2004-11-05 15:10
这是硬件的问题还是我读D12时的软件程序有问题
|
|
13楼#
发布于:2004-11-06 09:44
各位大虾帮看一下,下面是USB固件里的硬件提取层的两个函数是否有错?为什么每次进入unsigned char inportb( unsigned char A0)后,C口一设为输入,读到的就全部变为‘00000000’,到底是什么问题?我用的是PIC单片机和D12。
void outportb(unsigned char A0, unsigned char data) { int i; TRISC=0x00; //C口设为输出 RB4=0b1; //禁止写D12 RB2=(A0==0x01)?1:0;//A0=1,输出命令,A0=0,输出数据 PORTC=data; //命令字放到C口 RB4=0b0; //写D12使能 RB4=0b1; //禁止写D12 } unsigned char inportb( unsigned char A0) { int i; unsigned char data; TRISC=0xff; //C口设为输入 RB2=(A0==0x01)?1:0; //A0=0,是数据 RB3=0b1; //读D12禁止 RB3=0b0; //(通过C口)读D12使能 data=PORTC; // 使data=C口上读入的值 RB3=0b1; //读D12禁止 return data; //返回data } |
|
14楼#
发布于:2004-11-07 00:11
你的程序有点问题!
你再仔细看看! |
|
|
15楼#
发布于:2004-11-07 00:14
egrias!您好!
我用的是ARM50M与D12连接,除了硬件问题还有没有可能是时序的问题? |
|
|
16楼#
发布于:2004-11-08 15:45
哪位大虾能把硬件提取层的两个函数贴出来参考一下(:inportb和outportb),不胜感激!
|
|
17楼#
发布于:2004-11-08 21:44
本站就有下载呀!兄弟!
znsoft的开发板! void outportb(unsigned short nPort, unsigned char nVal) { #ifdef PARALLEL_BUS // These statements are very obscure for a newbie of C51. // A good way to understand them is reading the assembly language. unsigned char xdata *exAddress; exAddress = nPort; *exAddress = nVal; #else P1 &= 0xf1; // Enable D12 IC_D12_A0 = nPort & 0x01 ? 1 : 0; // If the LSB of nPort is 1, the following data is a command, otherwise a data IC_D12_WR = 0; // Write command/data to D12 P0 = nVal; // Transfer command/data to D12 IC_D12_WR = 1; // Disable writing P1 |= 0x0e; // Disable D12 #endif } unsigned char inportb(unsigned short nPort) { unsigned char nVal; #ifdef PARALLEL_BUS // Pls refer to the comments above unsigned char xdata *exAddress; exAddress = nPort; nVal = *exAddress; #else // Pls refer to the comments above. // Only converts the write action to read. P1 &= 0xf1; // Enable D12 IC_D12_A0 = nPort & 0x01 ? 1 : 0; IC_D12_RD = 0; nVal = P0; IC_D12_RD = 1; P1 |= 0x0e; // Disable D12 #endif return nVal; } |
|
|
18楼#
发布于:2004-11-09 14:31
D12我没有深入了解。当初要开发一个USB接口,我也是刚开始接触研发工作,前辈弄了一段时间没弄好,就丢了给我。我沿用了前辈留下的板子,弄了半个多月,枚举就是通不过。考虑到当初要求的速度不快,使用PL2303HX了事了。后来闲着就弄了弄D12,发现其实很简单,使用周立功提供的电路原理图就可以了,提供的源程序改改就好用。当初没搞定,可能是板子布局不好,D+、D-走线过长,总线老是被挂起导致枚举通不过。
|
|
19楼#
发布于:2004-11-09 16:16
我用1581好像也有这个问题存在,中断有一段时间然后就没有了,然后又有了。中断没有时INT脚一直为低。不知道为什么?
|
|
上一页
下一页