[AVR单片机] m16的奇怪问题……(关于SPI)

[复制链接]
2470|1
 楼主| airbunny 发表于 2008-5-4 12:16 | 显示全部楼层 |阅读模式
把一段原本用在M8上的SPI程序移植到M16上,用来连接ADS8345,结果发现,SPI根本不工作……

现象是:SPI的所有管脚都没有任何的输出,只是一直维持着高电平或者低电平。有的时候开机的前一两秒SCK上有时钟信号,然后就什么都没有了……

奇怪,不知是哪里出了问题。按理说不应该有什么问题呀……

拜托大家想想办法啦~

下面是代码~

初始化:
void vInitSPI(void)
{

    SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI
    
    vSelIO(2, 7, 1);
    vSelIO(2, 6, 0);
    vSelIO(2, 5, 1);

    vWriteIO(2, 5);
    vWriteIO(2, 6);
    vWriteIO(2, 7);
}

下面是SPI通信
uint8 nRes;
SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI
SPF=0;
SPDR=nCom;
      
while(SPF!=1)
{};
      
nRes=SPDR;
      
return nRes;
lintar 发表于 2008-5-4 14:03 | 显示全部楼层

对比寄存器

    vSelIO(2, 7, 1);
    vSelIO(2, 6, 0);
    vSelIO(2, 5, 1);

    vWriteIO(2, 5);
    vWriteIO(2, 6);
    vWriteIO(2, 7);

请问是这几条语句什么意思呀?
检查下M16和M8的特殊功能寄存器的位吧!有可能不一样!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

25

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部