标题:
cf卡测试时出现的怪现象
[打印本页]
作者:
hhh_gjf
时间:
2005-8-18 15:02
标题:
cf卡测试时出现的怪现象
我在测试cf卡时,main函数首先调用初始化函数
前面运行正常
但当执行到如下语句时:
/* Enable card insertion/removal interrupt */
alt_irq_register(ctl_irq, 0, CTLTrapHandler);
IOWR_ALTERA_AVALON_CF_CTL_CONTROL(ctl_base,
ALTERA_AVALON_CF_CTL_STATUS_POWER_MSK +
ALTERA_AVALON_CF_CTL_STATUS_IRQ_EN_MSK);
/* Enable IDE interrupts */
alt_irq_register(ide_irq, 0, IDETrapHandler);
IOWR_ALTERA_AVALON_CF_IDE_CTL(ctl_base, ALTERA_AVALON_CF_IDE_CTL_IRQ_EN_MSK);
程序运行到
IOWR_ALTERA_AVALON_CF_IDE_CTL(ctl_base, ALTERA_AVALON_CF_IDE_CTL_IRQ_EN_MSK);
后面的code 就好象被屏蔽了
比如说我在alt_irq_register(ide_irq, 0, IDETrapHandler);和
IOWR_ALTERA_AVALON_CF_IDE_CTL(ctl_base, ALTERA_AVALON_CF_IDE_CTL_IRQ_EN_MSK);之间
加了一个printf语句能正确显示
但加在
IOWR_ALTERA_AVALON_CF_IDE_CTL(ctl_base, ALTERA_AVALON_CF_IDE_CTL_IRQ_EN_MSK);
后面就什么也不显示了。。。。。
为什么啊???????????????
作者:
hhh_gjf
时间:
2005-8-18 16:50
还有一个问题就是
我想读取一下状态寄存器的值,也出现怪现象:
unsigned short usStatus;
usStatus = IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base);
printf("%d",usStatus);
printf("\n");
结果为:0033
寄存器为8位,这应该说明寄存器的值为33,即00110011吧
可当我设usstatus为8位时,出现结果如下:
alt_u8 usStatus;
usStatus=IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base) ;printf("%u",usStatus);
出现结果却为55,即01010101
而当我如下运算时:
usStatus=IORD_ALTERA_AVALON_CF_IDE_ALTERNATE_STATUS(ide_base) & 0x80;
printf("%u",usStatus);
结果是22。结果应该是0或者1才对啊
为什么会这样啊
[此贴子已经被作者于2005-8-18 16:49:59编辑过]
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0