Страница 1 из 1
Как считать состояние порта
Добавлено: 19 май 2016, 10:21
jimbaton
Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART. Как читать с порта целиком или частями я вроде разобрался, но с выдачей в ком-порт происходит беда. Когда в симуляторе Proteus запускаю программу я вижу что когда на вход порта поданы все нули в УАРТЕ я тоже вижу нули, далее начинаю подавать на каждый из пинов по единице и тоже вижу что происходят изменения, но в УАРТЕ вижу только смену с 0 на 1 а обратно не вижу. Допустим исходное состояние было 0000000, потом оно станет скажем 1111111, но когда я верну все входы обратно на 0000000 то я не увижу этого изменения, а увижу 1111111. Это проблемма в блоке или в чем? Я уже перепробывал разные настроики UART, но к успехам не привело. Вот так я опрашиваю порт, пишу в STRING и отправляю по UART
Как считать состояние порта
Добавлено: 19 май 2016, 12:08
Олег
Вам здесь блок Byte совершенно не нужен, вместо него поставьте Switch (в группе Переключатели) не вход S подключаете выход, на входы 0 и 1 задайте константы 0 и 1 соответственно.
Как считать состояние порта
Добавлено: 19 май 2016, 12:48
jimbaton
согласен что через переключатель лучше. Но проблему вывода информации в COM порт это точно не исправит.Почему при изменении состояния порта в исходное состояние, на выходе ничего не меняется?
Как считать состояние порта
Добавлено: 19 май 2016, 13:04
OlegAn1962
А Вы в курсе, что на уарт вы подаете не 7 бит, а 7 БАЙТ?
Как считать состояние порта
Добавлено: 19 май 2016, 13:31
jimbaton
Нет, не в курсе. Почему? Не понимаю. Пните меня в нужном направлении.
По идее не важно сколько я там подаю. Я хочу видеть изменения из исходного состояния в измененное и обратно в исходное. Пока только вижу из исходного в измененное.
Как считать состояние порта
Добавлено: 19 май 2016, 14:01
OlegAn1962
jimbaton писал(а):Почему? Не понимаю. Пните меня в нужном направлении.
Потому что блок Byte преобразует в байты. Олег Вас уже пнул, а Вы сопротивляетесь

Как считать состояние порта
Добавлено: 19 май 2016, 14:25
jimbaton
С такои схемои происходит все тоже самое
Как считать состояние порта
Добавлено: 19 май 2016, 15:14
OlegAn1962
По идее, так должно работать, могу посоветовать еще включить подтягивающий резистор на вхоы и инвертировать их.
Как считать состояние порта
Добавлено: 19 май 2016, 16:02
rw6cm
jimbaton писал(а):Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART
[spoiler=Спойлер][/spoiler]Схемка с первого поста должна работать.
OlegAn1962, правильно подсказал, в зависимости что будет на портах, нужны резисторы, физические подтяжки к 0, или 1, или программно к 1.
С открытым входом нормально не работает.
п/с В схемке выше добавлен блок детектор ( иногда помогает от лишних дублирования данных) хотя по хорошему все упирается в длинные провода, наводки питания и т д.
Как считать состояние порта
Добавлено: 20 май 2016, 12:23
jimbaton
Неееет вы не понимаете я только симулирую в Протеусе. Это не реальное железо. Протеус чтоли глючит или блок какои корявый?
Как считать состояние порта
Добавлено: 20 май 2016, 12:48
OlegAn1962
Так соберите схему вживую и узнаете.
Как считать состояние порта
Добавлено: 20 май 2016, 15:05
jimbaton
Дык нет пока возможности собрать вживую