单片机采用硬件SPI方式与376通讯. 我用的字节模式读取SD卡中的信息,DO在片选无效时兼做中断查询引脚, 但在读取字节超过255个字节时,查询中断函数一直查询不到中断导致读取字节函数老是跳不出来,我用的循环查询中断方式! 这种问题该怎么解决啊?中断引脚换成#INT可行吗?还是不让函数一直查询中断?
我把我的程序给贴出来了,编程环境AVRSTUDIO GCC编程UploadImages/20099171181187.rar
单片机采用硬件SPI方式与376通讯. 我用的字节模式读取SD卡中的信息,DO在片选无效时兼做中断查询引脚, 但在读取字节超过255个字节时,查询中断函数一直查询不到中断导致读取字节函数老是跳不出来,我用的循环查询中断方式! 这种问题该怎么解决啊?中断引脚换成#INT可行吗?还是不让函数一直查询中断?
我把我的程序给贴出来了,编程环境AVRSTUDIO GCC编程UploadImages/20099171181187.rar
使用中断引脚和用DO查询中断 应该是一样的.
unsigned short len; CH376_WR_CMD_PORT(CMD2H_BYTE_READ); CH376_WR_DAT_PORT((UINT8)len); CH376_WR_DAT_PORT((UINT8)(len>>8)); p1 = &xbuf[0]; while(1) { SPI_CS_END( ); //scs 拉高 i = WaitInterrupt( ); if ( i == USB_INT_DISK_READ ) { SPI_CS_END( ); CH376_WR_CMD_PORT(CMD01_RD_USB_DATA0); i =CH376_RD_DAT_PORT(); while ( i ) { *p1 = CH376_RD_DAT_PORT(); p1++; i--; } SPI_CS_END( ); CH376_WR_CMD_PORT(CMD0H_BYTE_RD_GO); } else if ( i==USB_INT_SUCCESS ) { SPI_CS_END( ); break; } else mStopIfError( i ); } }
用参考下面的操作流程试试.一个读写操作完成操作完成之后SPI 片选变为高电平.
我也是查询中断时把片选拉高了,在读取255个字节内程序没有任何问题,只要超过255也就是说中断引脚就不中断了,导致循环查询中断函数跳不出来!
把你的程序传上来看看吧.或者把程序发到技术支持信箱 tech@wch.cn