Цитата(=GM= @ Feb 26 2008, 19:00)

Попробуйте прямое эхо организовать, типа такого
Код
SIGNAL(SIG_USART0_RECV)
{
rxbuff=UDR;
UDR = rxbuff; //эхо
rx_int=1;
}
Будут символы теряться?
После reset'a выдается слово с потерянными символами, при нажатии клавиш в терминале,
с предложенным кодом эха символы не возвращаются. Вместо Signal пробовал ставить
ISR, результат аналогичен, а в заголовочном файле код:
#ifdef __cplusplus
#define ISR(vector) \
extern "C" void vector(void) __attribute__ ((signal)); \
void vector (void)
#else
#define ISR(vector) \
void vector (void) __attribute__ ((signal)); \
void vector (void)
#endif
/** \def SIGNAL(signame)
\ingroup avr_interrupts
\code#include <avr/interrupt.h>\endcode
Introduces an interrupt handler function that runs with global interrupts
initially disabled.
This is the same as the ISR macro.
\note Do not use anymore in new code, it will be deprecated
in a future release.
*/
#ifdef __cplusplus
#define SIGNAL(signame) \
extern "C" void signame(void) __attribute__ ((signal)); \
void signame (void)
#else
#define SIGNAL(signame) \
void signame (void) __attribute__ ((signal)); \
void signame (void)
#endif
При SIGNAL(SIG_USART0_RECV)
{
// if (bit_is_clear(UCSRA, FE))
// while ( !(UCSRA & (1<<RXC)) );
//{
rxbuff=UDR;
UDR = rxbuff; //эхо
rx_int=1;
//}
} в терминале появляется текст и сразу за ним бегут символы с мусором без остановки, при нажатии кнопок, все замирает, и символов нет.
При ISR - аналогично.