вот короче рабочий код для приёма команд по уарту
- Код: Выделить всё • Развернуть
Код:
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data,;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
simvol = getchar();
if ((simvol == 'R')|(simvol == 'L')) {
i = 0;
buffer[i] = simvol;
i++;
}
if (i)
{
if (((simvol >= '0')&(simvol <= '9')))
{
buffer[i] = simvol;
i++;
}
}
if (i > 2) {
/* если i больше 2 то в массив записано 3 допустимых символа
*/
i =0;
/*
тут нужно написать код вывода символов из массива обратно в USART чтоб на терминал вывелось содержимое.
а после отладки тут написать код выполнения команды мотором
*/
}