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

Как считать состояние порта
С такои схемои происходит все тоже самое
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Как считать состояние порта
По идее, так должно работать, могу посоветовать еще включить подтягивающий резистор на вхоы и инвертировать их.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Как считать состояние порта
[spoiler=Спойлер][/spoiler]Схемка с первого поста должна работать.jimbaton писал(а):Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART
OlegAn1962, правильно подсказал, в зависимости что будет на портах, нужны резисторы, физические подтяжки к 0, или 1, или программно к 1.
С открытым входом нормально не работает.
п/с В схемке выше добавлен блок детектор ( иногда помогает от лишних дублирования данных) хотя по хорошему все упирается в длинные провода, наводки питания и т д.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось rw6cm 20 май 2016, 07:56, всего редактировалось 1 раз.
Win10-64, FLProg (portable)
Как считать состояние порта
Неееет вы не понимаете я только симулирую в Протеусе. Это не реальное железо. Протеус чтоли глючит или блок какои корявый?
-
- Лейтенант
- Сообщения: 361
- Зарегистрирован: 07 сен 2015, 23:53
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя