Цитата(Mik174 @ Mar 11 2008, 19:31)

Помогите любым примером работы по прерываниям с UART ADuC845 или подобного МК.
Вот в таком виде обработчик прерывания работает, при передаче через терминалку символа f назад возвращается строка "fmessage".
При передаче других символов, назад возвращаются эти же символы. Т.е. все вроде работает правильно.
void iUART () interrupt 4
{
if (RI == 1)
{
RI = 0;
uart_data = SBUF;
SBUF=uart_data;
if (uart_data=='f') printf("message");
}
else
TI=0;
}
Но мне не нужно тут же назад возвращать все что принимаю, я хочу в дальнейшем сложить принятые символы в буфер и после получения признака окончания посылки разобрать их. Когда я убираю строку
SBUF=uart_data;
т.е. не передаю символ обратно сразу после приема, все перестает работать, ничего назад не передается...
В обработчике прерываний UART вначале обычно проверяется, что вызвало прерывание: прием или передача байта. Если Вы не используете передачу по UART, то Ваша програма упрощается:
void iUART () interrupt 4
{
RI=0
*uart_data = SBUF; //сохранить принятый байт
uart_data ++;
}
Сообщение отредактировал Linker - Mar 11 2008, 16:55
Я здесь и сейчас...