roboforum.ru

Технический форум по робототехнике.

USART помогите разобраться

USART помогите разобраться

eugmai86 » 24 мар 2011, 22:58

Доброго времени суток.
Пытаюсь передать циферки с ПК (программа 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;
}
Тоже не работает. Подскажите кому не лень плиз.

Re: USART помогите разобраться

yak-40 » 24 мар 2011, 23:09

eugmai86 писал(а):Если я отправлю символ "1" с ПК то PORTB.3=1; Однако такое у меня не заработало.

И правильно не заработало. С ПК через терминал идёт не цифра "1", а её код 0х31.
http://netcode.ru/cpp/?lang=&katID=2&skatID=20&artID=234

Re: USART помогите разобраться

avr123.nm.ru » 24 мар 2011, 23:24

eugmai86 писал(а):Воспользовался мастером начального кода CVAVR. Так как передавать обратно ничего не надо настроил только приемник.
Включил прерывания и настроил скорость передачи 1200 бод.


Смотрите задачу 5 курса - http://www.proavr.narod.ru/z5.htm , и настройте буфер приема. Советую отлаживать в PROTEUS.

Примеры приема команд от ПК есть в задаче 13 про управление серво контроллером с ПК. http://www.proavr.narod.ru/z13.htm

Re: USART помогите разобраться

eugmai86 » 25 мар 2011, 00:39

Спасибо, т.е. нужно отправлять 0х31 или 49 я правильно понял?
ТО АВР123 задачу 5 смотрел. спасибо, только протеус мне не очень нравится, проще на макетке налаживать.

Re: USART помогите разобраться

boez » 25 мар 2011, 11:51

С терминала уже отправляется 0x31. В switch нужно писать или case 0x31, или, что более читаемо, case '1'.

Re: USART помогите разобраться

eugmai86 » 26 мар 2011, 14:24

Все заработало, спасибо


Rambler\'s Top100 Mail.ru counter