РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

ФОРУМ НА ЭЛВО

РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ
  • БЛОГИ
  • НОВОЕ
  • СХЕМЫ
  • РАЗНОЕ
  • ТЕОРИЯ
  • ТЕЛЕВИДЕО
  • СВЕТОДИОД
  • МЕДТЕХНИКА
  • БЫТТЕХНИКА
  • ИЗМЕРИТЕЛИ
  • СПРАВОЧНИК
  • ТЕХНОЛОГИИ
  • РЕМОНТ СХЕМ
  • МОБИЛЬНИКИ
  • КОМПЬЮТЕРЫ
  • НАЧИНАЮЩИМ
  • ЗАРЯДКИ И АКБ
  • СИГНАЛИЗАЦИИ
  • АУДИОТЕХНИКА
  • АВТОВЕЛОМОТО
  • БЛОКИ ПИТАНИЯ
  • РАДИОПРИЁМНИКИ
  • МЕТАЛЛОИСКАТЕЛИ
  • МИКРОКОНТРОЛЛЕР
  • РАДИОПЕРЕДАТЧИКИ


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


    Спасибо
    Файлы: 7035283.png (235.0 Kb) · 0619873.png (236.9 Kb)
    Вс, 27.11.2016, 23:22 | Сообщение # 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