Как считать состояние порта

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#1

Сообщение jimbaton » 19.05.2016{, 10:21}

Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART. Как читать с порта целиком или частями я вроде разобрался, но с выдачей в ком-порт происходит беда. Когда в симуляторе Proteus запускаю программу я вижу что когда на вход порта поданы все нули в УАРТЕ я тоже вижу нули, далее начинаю подавать на каждый из пинов по единице и тоже вижу что происходят изменения, но в УАРТЕ вижу только смену с 0 на 1 а обратно не вижу. Допустим исходное состояние было 0000000, потом оно станет скажем 1111111, но когда я верну все входы обратно на 0000000 то я не увижу этого изменения, а увижу 1111111. Это проблемма в блоке или в чем? Я уже перепробывал разные настроики UART, но к успехам не привело. Вот так я опрашиваю порт, пишу в STRING и отправляю по UART

Вложения
7478165.jpg

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

Как считать состояние порта

#2

Сообщение Олег » 19.05.2016{, 12:08}

Вам здесь блок Byte совершенно не нужен, вместо него поставьте Switch (в группе Переключатели) не вход S подключаете выход, на входы 0 и 1 задайте константы 0 и 1 соответственно.

jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#3

Сообщение jimbaton » 19.05.2016{, 12:48}

согласен что через переключатель лучше. Но проблему вывода информации в COM порт это точно не исправит.Почему при изменении состояния порта в исходное состояние, на выходе ничего не меняется?

OlegAn1962
Лейтенант
Сообщения: 361
Зарегистрирован: 07.09.2015{, 23:53}
Репутация: 0

Как считать состояние порта

#4

Сообщение OlegAn1962 » 19.05.2016{, 13:04}

А Вы в курсе, что на уарт вы подаете не 7 бит, а 7 БАЙТ?
Последний раз редактировалось OlegAn1962 19.05.2016{, 13:04}, всего редактировалось 1 раз.

jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#5

Сообщение jimbaton » 19.05.2016{, 13:31}

Нет, не в курсе. Почему? Не понимаю.  Пните меня в нужном направлении.
По идее не важно сколько я там подаю. Я хочу видеть изменения из исходного состояния в измененное и обратно в исходное. Пока только вижу из исходного в измененное.
Последний раз редактировалось jimbaton 19.05.2016{, 13:35}, всего редактировалось 1 раз.

OlegAn1962
Лейтенант
Сообщения: 361
Зарегистрирован: 07.09.2015{, 23:53}
Репутация: 0

Как считать состояние порта

#6

Сообщение OlegAn1962 » 19.05.2016{, 14:01}

jimbaton писал(а):Почему? Не понимаю.  Пните меня в нужном направлении.
Потому что блок Byte преобразует в байты. Олег Вас уже пнул, а Вы сопротивляетесь  Изображение

jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#7

Сообщение jimbaton » 19.05.2016{, 14:25}

С такои схемои происходит все тоже самое
Вложения
3421361.jpg

OlegAn1962
Лейтенант
Сообщения: 361
Зарегистрирован: 07.09.2015{, 23:53}
Репутация: 0

Как считать состояние порта

#8

Сообщение OlegAn1962 » 19.05.2016{, 15:14}

По идее, так должно работать, могу посоветовать еще включить подтягивающий резистор на вхоы и инвертировать их.

Аватара пользователя
rw6cm
Полковник
Сообщения: 1985
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 220
Имя: Владимир

Как считать состояние порта

#9

Сообщение rw6cm » 19.05.2016{, 16:02}

jimbaton писал(а):Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART

СпойлерПоказать
Схемка с первого поста должна работать.
OlegAn1962, правильно подсказал, в зависимости что будет на портах, нужны резисторы, физические подтяжки к 0, или 1, или программно к 1.
С открытым входом нормально не работает.
п/с В схемке выше добавлен блок детектор ( иногда помогает от лишних дублирования данных) хотя по хорошему все упирается в длинные провода, наводки питания и т д.
Вложения
1966559.png
Последний раз редактировалось rw6cm 20.05.2016{, 07:56}, всего редактировалось 1 раз.
Win10-64, FLProg (portable)

jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#10

Сообщение jimbaton » 20.05.2016{, 12:23}

Неееет вы не понимаете я только симулирую в Протеусе. Это не реальное железо. Протеус чтоли глючит или блок какои корявый?

OlegAn1962
Лейтенант
Сообщения: 361
Зарегистрирован: 07.09.2015{, 23:53}
Репутация: 0

Как считать состояние порта

#11

Сообщение OlegAn1962 » 20.05.2016{, 12:48}

Так соберите схему вживую и узнаете.

jimbaton
Рядовой
Сообщения: 9
Зарегистрирован: 19.05.2016{, 09:33}
Репутация: 0

Как считать состояние порта

#12

Сообщение jimbaton » 20.05.2016{, 15:05}

Дык нет пока возможности собрать вживую

Ответить

Вернуться в «Спросить у знатоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя