Перейти к блогу GetChip.net - блог        JilTE[1] - в разработке     Модификации устройств - модификации

 
Текущее время: 28 мар 2024, 12:07

Часовой пояс: UTC + 3 часа [ Летнее время ]



Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Прием нескольких байт по UART
СообщениеДобавлено: 30 май 2016, 00:45 
Доброго времени суток. Устройству нужно передать информацию в виде AXX, где A - буква, XX - некое двузначное число. Использую такой алгоритм:

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 30 май 2016, 18:46 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 15 май 2011, 23:00
Сообщения: 1904
А зачем сообщение заключено в "<" ">" ?

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 30 май 2016, 21:25 
Да, код пока принимает два байта(я написал про то как должно быть)
<> используются для определения начала/конца посылки, а как тогда без разделителей определить начало строки?
P.S. Вроде разобрался, у меня частота кварца уплывала и приходили не те символы что я отправлял
Но теперь вопрос - отправлять число ascii символами или можно передать байтами?
(Немного поясню что должно получится в итоге - шлем X1000Y0500 - получаем 1000 в переменной X и 500 в переменной Y, вот так)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 02 июн 2016, 00:42 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 15 май 2011, 23:00
Сообщения: 1904
Все просто
- пришла соответствующая буква - сбрасываешь счетчик цифр и аккумулятор результата
- дальше - приходит очередная цифра приращиваешь счетчик цифр умножаешь аккумулятор результата на 10 и прибавляешь к нему принятую цифру
- делаешь так пока не примешь все цифры

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


Вложения:
sshot-1.png
sshot-1.png [ 5.27 КБ | Просмотров: 10564 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 07 июн 2016, 16:54 
Спасибо, это сработало!


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 29 июн 2016, 11:39 
Не в сети

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 29 июн 2016, 19:26 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 15 май 2011, 23:00
Сообщения: 1904
Да, нужно принимать в буфер и по факту приема последнего символа начинать сравнивать строку.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 29 июн 2016, 19:51 
Не в сети

Зарегистрирован: 20 май 2011, 23:58
Сообщения: 48
Спасибо!
жду с нетерпением


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 03 июл 2016, 12:01 
Не в сети

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Прием нескольких байт по UART
СообщениеДобавлено: 03 июл 2016, 16:29 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 15 май 2011, 23:00
Сообщения: 1904
1 Алгоритм шаблона не стопорит программу на время пересылки всей строки.
Все передача идет в фоне. Программа прерывается (прерывание USART0_DR_Empty) лишь на время необходимое для передачи очередного байта из буфера в регистр передачи UDR.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB