Доброго времени суток.
Пытаюсь передать циферки с ПК (программа Terminal 1.91) на МК (Tiny2313) по USART.
Воспользовался мастером начального кода CVAVR. Так как передавать обратно ничего не надо настроил только приемник.
Включил прерывания и настроил скорость передачи 1200 бод.
Сделал шнурок на макс232.(проверил шнурок рабочий)
Вопрос в том откуда правильно считывать данные пришедшие на RXD?
Согласно даташита, кучи статей и курса AVR123 это регистр данных UDR.
Т.е. если я правильно понял, достаточно инициализировать УСАРТ и
switch (UDR)
{
case 1: PORTB.3=1; break;
case 2: PORTB.4=1; break;
case 3: PORTB.5=1; break;
case 4: PORTB.6=1; break;
}
Если я отправлю символ "1" с ПК то PORTB.3=1; Однако такое у меня не заработало.
Попробовал включить прерывания RX и использовать ф-цию getchar();
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
unsigned char n;
n = getchar();
switch (n)
{
case 1: PORTB.3=1; break;
...
case 4: PORTB.6=1; break;
}
Тоже не работает. Подскажите кому не лень плиз.