|
Есть два прерывания: первое по переполнению таймера 0 и второе по
окончанию приему (UART). Например, по таймеру 0 на выход D7 выдается меандр.
Почему при обработке прерывания от UART_RX изменяется частота меандра?
Ведь прерывание T0_OFV имеет более высокий преоритет чем UART_RX_interrupt!!!
Или я чего-то не понимаю? Как тогда сделать так чтобы я мог использовать UART на прием и передачу и при этом небыло влияния на прерывание по таймеру T0_OFV_vect ?
char temp=0;
. . .
. . .
__interrupt void T0_OFV(void)
{
if(temp==0)
{
temp=1;
PORTD |=(1<<7);
}
else
{
temp=0;
PORTD &=~(1<<7);
}
}
#pragma vector=UART_RX_vect
__interrupt void UART_RX_interrupt( void )
{
char data;
data = UDR; /* read the received data */
if(data==0x30) // PRINT (USING UART) VARIABLES
{
while(!(USR&(1<<5))); //ожидаем установки флага UDRE (UDR-пуст)
UDR=symbol;
}
}
E-mail: info@telesys.ru