共2条
1/1 1 跳转至页
SPI 急!为什么我用了两个定时器中断后SPI就不工作了?

问
在用一个定时中断的时候没有问题,在另外一个启动后,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个任务有冲突。要不允许中断嵌套试试,测以下是否任务冲突。 答 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 跳转至页