打印
[AVR单片机]

SPI中断模式就是不工作啊..查询就可以..WHY...

[复制链接]
940|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
newmankinds|  楼主 | 2014-8-22 16:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目的是先用MASTER模式配置RF芯片,然后切换为SLAVE模式中断接收RF输出的数据..
查询模式下配置RF芯片可以(通过读出RF的寄存器验证了).单用中断就是不工作..GCC AVR....大家瞅瞅我那里出问题....3天了...
void SPI_Init_Slave(void)
{
        //SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 :SPCR,spr1,spr0=0,fosc/4       
        DDR_SPI |=(1<<DD_MISO);          //OUTPUT
        DDR_SPI &=~(1<<DD_MOSI);  //INPUT
        DDR_SPI &=~(1<<DD_SCK);          //INPUT
        DDR_SPI &=~(1<<DD_SS);          //INPUT
        SPCR &=~(1<<MSTR);       
        SEB_ENABLE;               
}

void SPI_Init_Master(void)
{
        //SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 :SPCR,spr1,spr0=0,fosc/4       
        DDR_SPI |= (1<<DD_MOSI)|(1<<DD_SCK)|(1<<DD_SS);
        DDR_SPI &=~(1<<DD_MISO);
       
        PORTB |= (1<<DD_MISO);
        PORTB |= (1<<DD_MOSI);
        PORTB |= (1<<DD_SCK);
        //PORTB |= (1<<DD_SS);
       
        SPCR &=~(1<<CPOL);
        SPCR |=(1<<SPIE)|(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0)|(1<<CPHA);//MSB first
        SPSR = (1<<SPI2X);//double speed,10Meg frequency SCK,       
}

void SPI_MasterTransmit(unsigned char cData)
{
        while(SPI_Busy);
        SPI_Read=False;       
        SPDR = cData;
        SPI_Busy=True;
        //while(!(SPSR & (1<<SPIF)));       
}

uchar SPI_MasterRead(void)
{
   while(SPI_Busy);
   SPI_Read=True;
   SPDR=0x00;
   SPI_Busy=True;
  // while(!(SPSR & (1<<SPIF)));
  // return SPDR;
}

ISR(SPI_STC_vect)
{
   if(SPI_Read==True)          //Read SPI
   {     
         SPI_Data=SPDR;
   }        
   else//send
   {
   }
   SPI_Busy=False;   
}

相关帖子

沙发
newmankinds|  楼主 | 2014-8-22 16:26 | 只看该作者
总中断也开了(sei()), Timer0的中断也执行.就SPI的不执行.....

        SPI_MasterTransmit(0x81);                //4 bytes, start address 0x00, Operating "W"
        SPI_MasterTransmit(CONFIG1);        //Config1;434Mhz,LVD and CLK "enable"       
死在第二次发送,,,,没执行中断..SPI_Busy没清除掉...........

使用特权

评论回复
板凳
airwill| | 2014-8-23 18:05 | 只看该作者
先验证数据有没有在总线上发出去,
另外, 中断向量号有没有弄对, 查一下吧

使用特权

评论回复
地板
newmankinds|  楼主 | 2014-8-24 21:29 | 只看该作者
奥.....中断向量号对 的..查号多变了..我模拟了没中断..没测硬件

使用特权

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

本版积分规则

42

主题

99

帖子

4

粉丝