http://www.forum.getchip.net/

Прием нескольких байт по UART
http://www.forum.getchip.net/viewtopic.php?f=16&t=747
Страница 1 из 2

Автор:  Roman [ 30 май 2016, 00:45 ]
Заголовок сообщения:  Прием нескольких байт по UART

Доброго времени суток. Устройству нужно передать информацию в виде AXX, где A - буква, XX - некое двузначное число. Использую такой алгоритм:

В протеусе работает, а в железе - тишина. Причем прерывание явно приходит, но дальше не идет. Все соединения в норме, мега на внутреннем генераторе. Уже все перепробовал, что может быть?

Автор:  GetChiper [ 30 май 2016, 18:46 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

А зачем сообщение заключено в "<" ">" ?

А еще, не вижу обработки буквы в сообщении.

По ходу сообщение должно выглядеть как "<XX>"

Автор:  Roman [ 30 май 2016, 21:25 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Да, код пока принимает два байта(я написал про то как должно быть)
<> используются для определения начала/конца посылки, а как тогда без разделителей определить начало строки?
P.S. Вроде разобрался, у меня частота кварца уплывала и приходили не те символы что я отправлял
Но теперь вопрос - отправлять число ascii символами или можно передать байтами?
(Немного поясню что должно получится в итоге - шлем X1000Y0500 - получаем 1000 в переменной X и 500 в переменной Y, вот так)

Автор:  GetChiper [ 02 июн 2016, 00:42 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Все просто
- пришла соответствующая буква - сбрасываешь счетчик цифр и аккумулятор результата
- дальше - приходит очередная цифра приращиваешь счетчик цифр умножаешь аккумулятор результата на 10 и прибавляешь к нему принятую цифру
- делаешь так пока не примешь все цифры

вот так примерно я делал

Вложения:
sshot-1.png
sshot-1.png [ 5.27 КБ | Просмотров: 13374 ]

Автор:  Roman [ 07 июн 2016, 16:54 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Спасибо, это сработало!

Автор:  vuln [ 29 июн 2016, 11:39 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Добрый день
Подскажите пожалуйста как правильно принимать длинные сообщения по uart
пытаюсь связать esp8266 c mega32 по средством uart.
сообщения длинные 20-30 символов ASCII, 2-3 символа принять не сложно (построить ступеньку из трех условий - и сравнивать каждый символ) а если сообщения длинные - предположу что надо записывать сообщения в массив и далее сравнивать два массива. Но как правильно "красиво" сделать не знаю. Может у кого есть кое какие наработки?

Автор:  GetChiper [ 29 июн 2016, 19:26 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Да, нужно принимать в буфер и по факту приема последнего символа начинать сравнивать строку.

У меня уже готовы шаблоны для меги328 в которых есть и работа с UART с буфером - как оформлю, оставлю в разделе шаблонов http://www.getchip.net/templates/

Автор:  vuln [ 29 июн 2016, 19:51 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

Спасибо!
жду с нетерпением

Автор:  vuln [ 03 июл 2016, 12:01 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

вопрос по поводу шаблона
С приемом все понятно , с отправкой мне не все ясно
1) в чем преимущество отправки через буфер
например длинные сообщение я так отправляю 123.png
123.png [ 8.64 КБ | Просмотров: 13297 ]

2)для отправки всего содержимого буфера надо постоянно вызывать событие USART0_DR_Empty ?

Автор:  GetChiper [ 03 июл 2016, 16:29 ]
Заголовок сообщения:  Re: Прием нескольких байт по UART

1 Алгоритм шаблона не стопорит программу на время пересылки всей строки.
Все передача идет в фоне. Программа прерывается (прерывание USART0_DR_Empty) лишь на время необходимое для передачи очередного байта из буфера в регистр передачи UDR.

2 И, соответственно, USART0_DR_Empty аппаратно вызывается само когда можно засылать очередной байт.

Страница 1 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/