求助:硬件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 static/image/common/back.gif
我没看到你的问题,请仔细描述你的问题。
看逻辑分析仪,只产生了3次SPI数据,后面都没有,仿真时候有数据. CodeMonkey 发表于 2013-4-19 13:12 static/image/common/back.gif
看逻辑分析仪,只产生了3次SPI数据,后面都没有,仿真时候有数据.
我看你这里是从端口读数据再写出去的,所以你的端口本来就那一个值吧。你不妨把数据就设为0xAA或0x55,然后就能看出怎么回事了。 wye11083 发表于 2013-4-19 14:26 static/image/common/back.gif
我看你这里是从端口读数据再写出去的,所以你的端口本来就那一个值吧。你不妨把数据就设为0xAA或0x55,然 ...
MISO端口接GND一样无效,我是输出SPI_Test变量,只输出了三次就没输出了.
页:
[1]