CodeMonkey 发表于 2013-4-19 12:35:19

求助:硬件SPI与仿真存在差距

本帖最后由 CodeMonkey 于 2013-4-19 13:12 编辑

逻辑分析:

代码:
#include <avr/io.h>

int main(void)
{
        unsigned char SPI_Test = 0x00;
        DDRB |= ((1<<PORTB5)|(1<<PORTB7));
        DDRA |= ((1<<PORTA0)|(1<<PORTA1));
        PORTA |= (1<<PORTA0);
        SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
        while(1)
      {
                PORTA &= ~(1<<PORTA0);
                SPDR = ++SPI_Test;
                while(!(SPSR & (1<<SPIF))){
               PORTA ^= (1<<PORTA1);
                }                       
                PORTA |= (1<<PORTA0);
      }
}

仿真的Debugger


调了一个晚上,都是这样.

程序足够简单了,为什么会这样.

文档在http://www.atmel.com/Images/doc2466.pdf 的140页.

补充:看逻辑分析仪,只产生了3次SPI数据,后面都没有,仿真时候有数据.

wye11083 发表于 2013-4-19 12:54:49

我没看到你的问题,请仔细描述你的问题。

CodeMonkey 发表于 2013-4-19 13:12:06

wye11083 发表于 2013-4-19 12:54 static/image/common/back.gif
我没看到你的问题,请仔细描述你的问题。

看逻辑分析仪,只产生了3次SPI数据,后面都没有,仿真时候有数据.

wye11083 发表于 2013-4-19 14:26:47

CodeMonkey 发表于 2013-4-19 13:12 static/image/common/back.gif
看逻辑分析仪,只产生了3次SPI数据,后面都没有,仿真时候有数据.

我看你这里是从端口读数据再写出去的,所以你的端口本来就那一个值吧。你不妨把数据就设为0xAA或0x55,然后就能看出怎么回事了。

CodeMonkey 发表于 2013-4-19 17:00:52

wye11083 发表于 2013-4-19 14:26 static/image/common/back.gif
我看你这里是从端口读数据再写出去的,所以你的端口本来就那一个值吧。你不妨把数据就设为0xAA或0x55,然 ...

MISO端口接GND一样无效,我是输出SPI_Test变量,只输出了三次就没输出了.
页: [1]
查看完整版本: 求助:硬件SPI与仿真存在差距