这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » SPI 急!为什么我用了两个定时器中断后SPI就不工作了?

共2条 1/1 1 跳转至

SPI 急!为什么我用了两个定时器中断后SPI就不工作了?

院士
2006-09-17 18:14:16     打赏
SPI 急!为什么我用了两个定时器中断后SPI就不工作了?



关键词: 为什么     用了     两个     定时器     断后     就不     作了    

院士
2006-12-22 22:43:00     打赏
2楼
问 在用一个定时中断的时候没有问题,在另外一个启动后,SPI就不能收到任何东西了,如果定时结束,SPI又恢复了。不知是什么原因?是不是因为定时器中断比SPI的高?可是只有一个时也工作正常啊!:( 1: 我用三个定时器(Basic Timer,Timer_A,Timer_B)中断,同时用SPI,也没有出现问题啊. 2: 类似的问题我以前也遇到过。
我估计可能中断时间逻辑没处理好,2个任务有冲突。要不允许中断嵌套试试,测以下是否任务冲突。 3: CounterTime1=600;
TACTL = TASSEL1 + TACLR;
CCTL0 = CCIE;
CCR0 = 35795;
TACTL |= MC0 + MC1;
_EINT();

CounterTime0=100;
P6DIR |= BIT5;
P6OUT |= BIT5;
TACTL = TASSEL1 + TACLR;
CCTL0 = CCIE;
CCR0 = 35795; //设定中断间隔
TACTL |= MC0 + MC1;
_EINT();

Init_spi();P3SEL &= ~0x10; //初始化SPI
buffer_rite_flash(0x55,20); //读页(spi操作)
read_buffer(0x56,206) 写buffer(spi操作)

interrupt[TIMERA0_VECTOR] void Timer_A (void)
{
if(CounterTime0)
{
CounterTime0--;
if(!CounterTime0)P6OUT &= ~BIT5; //BIT2取反,关背光
}
if(CounterTime1)
{
CounterTime1--;
if(!CounterTime1)End_communication();
}
}
interrupt[UART0RX_VECTOR]void UART0RX(void) spi中断接收
{
RxSPINoEmp=1;
recei_SPI=RXBUF0;
} 4: :confused:

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]