Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Непонятки с UART
Непонятки с UART
ivan_fd Дата: Чт, 03.06.2021, 09:03  |                                                                                                                Сообщение # 16
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Зачем вам проверка на четность?

У меня так, при
HRSOut 1,2,3,4
HRSOut Dec 1, Dec 2, Dec 3, Dec 4 :


Меня все время преследуют умные мысли...но я быстрее!!!
vladh Дата: Чт, 03.06.2021, 11:43  |                                                                                                                Сообщение # 17
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 351
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Не понял о какой проверки на четность вы пишите?
ivan_fd Дата: Чт, 03.06.2021, 12:17  |                                                                                                                Сообщение # 18
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Ну это же вы написали:

Declare Hserial_Parity = ODD ' проверка на четность


Меня все время преследуют умные мысли...но я быстрее!!!
vladh Дата: Чт, 03.06.2021, 12:44  |                                                                                                                Сообщение # 19
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 351
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Цитата ivan_fd ()
Declare Hserial_Parity = ODD ' проверка на четность
Ах, вы вот о чем. Но как я понимаю при проверки на четность должно быть 
Declare Hserial_Parity = Even
ivan_fd Дата: Чт, 03.06.2021, 13:21  |                                                                                                                Сообщение # 20
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Нет, не правильно.

По умолчанию передача идет 8N1 - 8 бит данных, 1 стоповый бит, без четности.
Если ставим Declare Hserial_Parity = ODD или Even, то будет 7E1 или 7O1.

Короче, уберите строчку Declare Hserial_Parity = ODD!


Меня все время преследуют умные мысли...но я быстрее!!!
vladh Дата: Чт, 03.06.2021, 13:50  |                                                                                                                Сообщение # 21
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 351
Репутация: 11   ±
Замечания:   ±
На сайте с 15.10.2007

Статус: Offline

Спасибо. Но я вроде недавно только читал значение этого объявления. Тогда скорее всего понятно почему у меня не работает общение с частотником.
ЯНДЕКС Дата: 03.06.2021
Anatoliy1000 Дата: Ср, 07.07.2021, 13:35  |                                                                                                                Сообщение # 22
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 188
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Здравствуйте!
Подскажите в чем может быть проблема. На борту есть модуль GT-38. Как казалось ни каких заморочек не требуется по настройке. Сам принимает и передает второму данные по умолчанию (RX TX). На всякий случай проверил? что за настройки внутри:
OK+B9600
OK+C100
OK+RP:+20dBm
OK+FU3
У обоих настройки одинаковые.
Первый подключен к ПК, второй подключен к МК.



В терминале сообщения абракадабра, в переводе на dec не связанная речь


В чем может быть причина?
Прикрепления: 5627173.png(65.9 Kb)


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Ср, 07.07.2021, 13:37
ivan_fd Дата: Чт, 08.07.2021, 00:54  |                                                                                                                Сообщение # 23
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Anatoliy1000,  подключите к контроллеру уарт переходник и посмотрите прямо в компе, что он передает. 
Скорее всего сам контроллер с вашим RC генератором работает не на 4 МГц.


Меня все время преследуют умные мысли...но я быстрее!!!
Anatoliy1000 Дата: Чт, 08.07.2021, 14:14  |                                                                                                                Сообщение # 24
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 188
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Вы как всегда правы. Все перепробовал. Не работает. Думал купил модули Г. Но при подключении в МК кварца все заработало. Не пойму почему с RC не запустилось? Просто не хотелось городить кварц, если без него большинство придумок нормально работает.

Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Чт, 08.07.2021, 14:16
ivan_fd Дата: Чт, 08.07.2021, 22:09  |                                                                                                                Сообщение # 25
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата Anatoliy1000 ()
Не пойму почему с RC не запустилось?

Оно то как раз запустилось, только частота была явно не 4МГц. RC генератор используется где не нужно никакой точности. А для USART нужны точные временные интервалы, иначе скорость будет далеко от расчетной.


Меня все время преследуют умные мысли...но я быстрее!!!
Anatoliy1000 Дата: Сб, 10.07.2021, 08:54  |                                                                                                                Сообщение # 26
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 188
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Подскажите как правильно (грамотно по феншую) принять 2 и более значений. Есть датчик расстояния, есть датчик температуры, фоторезистор... Отправляю значения приемнику по УАРТ.

HSerOut [Dec X1, 13]
HSerOut [Dec X2, 13]
HSerOut [Dec X3, 13]

Нужно, что бы приемник понял ху из ху

HSerIn 5000, Timeout, [Dec Prinyat]


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Сб, 10.07.2021, 09:30
ivan_fd Дата: Сб, 10.07.2021, 21:57  |                                                                                                                Сообщение # 27
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Что бы приемник понял кто есть кто, нужно слать перед самим значением, например один байт идентификатора того, что передаете.

А по приему, самое надежное использовать прерывание по УСАРТу.
И в нем использовать не HSerin, а Hrsin(а правильнее было бы без этих rsin-ов, а брать данные из регистра приемного буфера - RCREG). В прерывании принимать по одному байту и складывать в массив(приемный буфер). А потом его обрабатывать.


Меня все время преследуют умные мысли...но я быстрее!!!
Anatoliy1000 Дата: Пн, 12.07.2021, 15:12  |                                                                                                                Сообщение # 28
Группа: Проверенные
Ранг:  Могу и подсказать
Сообщений: 188
Репутация: 0   ±
Замечания:   ±
На сайте с 02.03.2016

Статус: Offline

Это получается если я отправляю числа: 100, 200,300..., то между какой-то разделитель ставить, например ":" - двоеточие
HSerOut [Dec 100], ":"
HSerOut [Dec 200], ":"
HSerOut [Dec 300], ":"
Ловить в строковую переменную "100:200:300", а потом обрабатывать? Я правильно понял?
Нет легких путей?
Отправил код 3000 (это значит лови температуру) кидаю температуру 100...
Пробую сейчас так сделать, но пока не получается...Он (приемник) понимает, что температура 3000, потом при приеме 100 уже не понимает что это температура. Я понимаю мой код проги "тупой", но вот простое пока осилить не могу. Думал здесь должен быть такой пример, но вот с возрастом и поиск дается с трудом.
П.С. извините за беспокойство. Осилил.


Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
Сообщение отредактировал Anatoliy1000 - Пн, 12.07.2021, 15:22
ivan_fd Дата: Пн, 12.07.2021, 20:46  |                                                                                                                Сообщение # 29
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1168
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Не нужно никаких двоеточий и всяких разделителей.
Для температуры придумываем какой то идентификатор, например - $A5.
Можно и не один байт, а больше, что бы не ошибиться на приёмнике.
И пересылаем сначала $A5, а потом саму температуру. На приемной
стороне, если видим, что пришел нужный нам ИД, то за ним идёт температура.


Меня все время преследуют умные мысли...но я быстрее!!!
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Непонятки с UART
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: