простые и интересные  РАДИОСХЕМЫ сделанные своими руками

» Гость

Мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!



» ДАТАШИТЫ
Например: TDA1562

» СХЕМЫ


Отметить прочитанными   -   Поиск   -   Правила   -   Новые сообщения

Страница 1 из 11
Модератор форума: Igoran, Витинари, Sam 
Форум радиолюбителей » СХЕМЫ » НАЧИНАЮЩИМ » Проблема с виртуальным терминалом в сети на основе UART
Проблема с виртуальным терминалом в сети на основе UART
Вс, 27.11.2016, 20:03 | Сообщение # 1        
dzhemini2
аватар
  Постов: 1  Offline
Создавала сеть из трех микроконтроллеров, тип - кольцо, суть в том, чтобы данные передавались на ССИ в МК, три кнопки - данные, две кнопки(ниже) - адреса.
И мне нужно, чтобы было так:
число 5 из 1 МК переходит в 3 МК
число 7 из 3 МК переходит в 2 МК(спасибо тапам с адресами)
Семерку удается перенести во второй мк, но с пятеркой возникает трабл, когда отпускаю вторую кнопку адреса - виртуальный терминал словно сходит с ума, строки бегут, а нужно, чтобы выводилось нормально, как "шаг"
Что делать - не понимаю sad
Огромная просьба подсказать, помочь
Скрины и проект прикрепляю, в коде все вроде нормально


Спасибо
Пн, 28.11.2016, 00:22 | Сообщение # 2        
msmmmm
аватар
  Постов: 329  Offline Друзья 
Ошибка явно программная. По-моему использование здесь режима мультипроцессорного обмена малоэффективно. Вы принимаете данные от предыдущего по кольцу контроллера, а передаете на последующий. Программа явно зацикливается. Я бы использовал префиксный байт (байт адреса) с использованием обычного асинхронного 8-ми битного режима. Дальше может быть 2 варианта.
1. Все контроллеры программируются одинаково. Кнопками адреса выбирается дальность отправки. 0 - цифра появляется на контроллере, с которого идет отправка, 1 - следующий справа (по кольцу), 2 - второй справа. Остальные адреса игнорируем. Контроллер, принимая нулевой адрес ничего не передает, индицирует введенную цифру. Если принимает по UART, отнимает от адреса 1. Если получится 0, дальше не передает, высвечивает результат, если 1 - передает по кольцу дальше, с адресом на 1 меньше.
Недостаток: относительная адресация.
2. Каждый контроллер имеет свой адрес и реагирует только на него. Все остальное так же, только отнимать ничего не нужно. Несуществующие адреса лучше отсечь еще на этапе ввода, т.к. иначе будет передаваться по кругу до бесконечности (у Вас нечто подобное происходит). Если контроллер принимает свой адрес - выводит цифру на индикатор, чужой - передает по кольцу.
И программа проще будет.
Пока же в Протеусе хаос, честно говоря, даже сомневаюсь - нажатая кнопка это 0, или 1? Часто два индикатора одновременно меняют значение.

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

Форум радиолюбителей » СХЕМЫ » НАЧИНАЮЩИМ » Проблема с виртуальным терминалом в сети на основе UART
Страница 1 из 11
Поиск:
Кто есть кто на форуме радиолюбителей: Администратор Модераторы Друзья Пользователи
Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2016, "Радиосхемы". Все права защищены. Почта