Вспух мозг.
Пытаюсь ловить конец строки с компа. По таймеру все работает. Но хочу отлавливать это дело по символу CR.
Ловлю его таки
Код: Выделить всё
putchar('\r');
putchar('\n');проходит.
, но блин, не идут символы отправленные раньше.
Терминал PuTTY.
Заранее огромное спасибо.
Код: Выделить всё
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
PORTD &=(~0x20);
status=UCSRA;
data=UDR;
if (data == 0x0d)
{
rx_end = 1;
}
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0)
{
#else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
#endif
rx_buffer_overflow=1;
PORTD |=0x40;
}
}
PORTD |=0x20;
//TCCR0=0x05;//Запускаем таймер
//TCNT0 = 0x00; //Обнуляем таймер
}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
rx_end = 1;
TCCR0=0x00;//Останавливаем таймер
}
while (1)
{
// Place your code here
i = 0;
if (rx_end)
{
rx_end = 0;
delay_ms(400);
#asm("cli")
for (i = 0; rx_counter != 0; i++)
{
test[i] = getchar();
//delay_ms(200);
}
#asm("sei")
for (i = 0; test[i] != '\0'; i++)
{
putchar(test[i]);
test[i] = 0x00;
//delay_ms(200);
}
putchar('\r');
putchar('\n');
}
//delay_ms(2000);
}
}
only pure true norwegian blackx 