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 и прибавляешь к нему принятую цифру - делаешь так пока не примешь все цифры вот так примерно я делал
|
Автор: | 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 [ 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/ |