РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 1 из 1
  • 1
Архив - только для чтения
Проблема с виртуальным терминалом в сети на основе UART
Сообщение # 1        
dzhemini2
аватар
  Постов: 1   ОК 
Создавала сеть из трех микроконтроллеров, тип - кольцо, суть в том, чтобы данные передавались на ССИ в МК, три кнопки - данные, две кнопки(ниже) - адреса.
И мне нужно, чтобы было так:
число 5 из 1 МК переходит в 3 МК
число 7 из 3 МК переходит в 2 МК(спасибо тапам с адресами)
Семерку удается перенести во второй мк, но с пятеркой возникает трабл, когда отпускаю вторую кнопку адреса - виртуальный терминал словно сходит с ума, строки бегут, а нужно, чтобы выводилось нормально, как "шаг"
Что делать - не понимаю sad
Огромная просьба подсказать, помочь
Скрины и проект прикрепляю, в коде все вроде нормально


Спасибо
Файлы: 7035283.png (235.0 Kb) · 0619873.png (236.9 Kb)
Сообщение # 2        
msmmmm
аватар
  Постов: 891   Друзья 
Ошибка явно программная. По-моему использование здесь режима мультипроцессорного обмена малоэффективно. Вы принимаете данные от предыдущего по кольцу контроллера, а передаете на последующий. Программа явно зацикливается. Я бы использовал префиксный байт (байт адреса) с использованием обычного асинхронного 8-ми битного режима. Дальше может быть 2 варианта.
1. Все контроллеры программируются одинаково. Кнопками адреса выбирается дальность отправки. 0 - цифра появляется на контроллере, с которого идет отправка, 1 - следующий справа (по кольцу), 2 - второй справа. Остальные адреса игнорируем. Контроллер, принимая нулевой адрес ничего не передает, индицирует введенную цифру. Если принимает по UART, отнимает от адреса 1. Если получится 0, дальше не передает, высвечивает результат, если 1 - передает по кольцу дальше, с адресом на 1 меньше.
Недостаток: относительная адресация.
2. Каждый контроллер имеет свой адрес и реагирует только на него. Все остальное так же, только отнимать ничего не нужно. Несуществующие адреса лучше отсечь еще на этапе ввода, т.к. иначе будет передаваться по кругу до бесконечности (у Вас нечто подобное происходит). Если контроллер принимает свой адрес - выводит цифру на индикатор, чужой - передает по кольцу.
И программа проще будет.
Пока же в Протеусе хаос, честно говоря, даже сомневаюсь - нажатая кнопка это 0, или 1? Часто два индикатора одновременно меняют значение.

Добавлено (28.11.2016, 00:22)
---------------------------------------------
Посмотрел еще раз на схему - Вы наверное в одном байте и адрес и данные передаете? Точнее опишите используемый алгоритм. Я правильно понял, что код данных нужно по адресу передать с любого контроллера в любой контроллер, включая тот, с которого идет команда?

  • Страница 1 из 1
  • 1
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA