大神好,帮帮我吧。
问题:我在使用TLV5625时出现如下问题,在主函数里面的FOR循环中对两通道赋值,2通道DA可以正常更新输出,但是同样的语句放到定时器中断中,只有一个通道正常,另一个通道不能更新数据,请指教,谢谢。程序如下:
CS=0; if(Spi_TxReady()==1) //发送准备已就绪
{
SpiaRegs.SPITXBUF=0x1A00; //OUTB发送数据
}
while(Spi_TxReady()==0); CS=1;
delay(10);
CS=0;
if(Spi_TxReady()==1)
{
SpiaRegs.SPITXBUF=0x8A00; //OUTA发送数据
}
while(Spi_TxReady()==0); CS=1;
user151383853:
看程序没有什么问题.
会不会是定时中断的速率太高了, 导致来不及响应?
其它地方影响了时序, 比如干扰了 CS 信号?
wentao jiang:
回复 user151383853:
您好,谢谢。定时器的中断是10K,SPI是1M的,而且我把定时器中断变慢过,也不行。而且程序很简单,只有一个定时器中断,其他什么都没有,在进入定时器中断时,我屏蔽了所有中断。