FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Пятница, 09.12.2016, 12:34
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Как считать состояние порта
Как считать состояние порта
jimbaton
Дата: Четверг, 19.05.2016, 10:21 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART. Как читать с порта целиком или частями я вроде разобрался, но с выдачей в ком-порт происходит беда. Когда в симуляторе Proteus запускаю программу я вижу что когда на вход порта поданы все нули в УАРТЕ я тоже вижу нули, далее начинаю подавать на каждый из пинов по единице и тоже вижу что происходят изменения, но в УАРТЕ вижу только смену с 0 на 1 а обратно не вижу. Допустим исходное состояние было 0000000, потом оно станет скажем 1111111, но когда я верну все входы обратно на 0000000 то я не увижу этого изменения, а увижу 1111111. Это проблемма в блоке или в чем? Я уже перепробывал разные настроики UART, но к успехам не привело. Вот так я опрашиваю порт, пишу в STRING и отправляю по UART

Прикрепления: 7478165.jpg(110Kb)
 
Олег Дата: Четверг, 19.05.2016, 12:08 | Сообщение # 2
Гуру
Группа: Проверенные
Сообщений: 730
Награды: 20
Репутация: 15
Статус: Offline
Вам здесь блок Byte совершенно не нужен, вместо него поставьте Switch (в группе Переключатели) не вход S подключаете выход, на входы 0 и 1 задайте константы 0 и 1 соответственно.
 
jimbaton Дата: Четверг, 19.05.2016, 12:48 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
согласен что через переключатель лучше. Но проблему вывода информации в COM порт это точно не исправит.Почему при изменении состояния порта в исходное состояние, на выходе ничего не меняется?
 
OlegAn1962 Дата: Четверг, 19.05.2016, 13:04 | Сообщение # 4
Майор
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 0
Статус: Offline
А Вы в курсе, что на уарт вы подаете не 7 бит, а 7 БАЙТ?

Сообщение отредактировал OlegAn1962 - Четверг, 19.05.2016, 13:04
 
jimbaton Дата: Четверг, 19.05.2016, 13:31 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Нет, не в курсе. Почему? Не понимаю.  Пните меня в нужном направлении.
По идее не важно сколько я там подаю. Я хочу видеть изменения из исходного состояния в измененное и обратно в исходное. Пока только вижу из исходного в измененное.


Сообщение отредактировал jimbaton - Четверг, 19.05.2016, 13:35
 
OlegAn1962 Дата: Четверг, 19.05.2016, 14:01 | Сообщение # 6
Майор
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 0
Статус: Offline
Цитата jimbaton ()
Почему? Не понимаю.  Пните меня в нужном направлении.
Потому что блок Byte преобразует в байты. Олег Вас уже пнул, а Вы сопротивляетесь  smile
 
jimbaton Дата: Четверг, 19.05.2016, 14:25 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
С такои схемои происходит все тоже самое
Прикрепления: 3421361.jpg(48Kb)
 
OlegAn1962 Дата: Четверг, 19.05.2016, 15:14 | Сообщение # 8
Майор
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 0
Статус: Offline
По идее, так должно работать, могу посоветовать еще включить подтягивающий резистор на вхоы и инвертировать их.
 
rw6cm Дата: Четверг, 19.05.2016, 16:02 | Сообщение # 9
Генерал-майор
Группа: Проверенные
Сообщений: 480
Награды: 44
Репутация: 32
Статус: Offline
Цитата jimbaton ()
Нужно считать значение единиц и нулей скажем с PortD целиком начиная с IO0 и заканчивая IO7. Потом это преобразовать в STRING в виде 1001101 и передать по UART

Схемка с первого поста должна работать.
OlegAn1962, правильно подсказал, в зависимости что будет на портах, нужны резисторы, физические подтяжки к 0, или 1, или программно к 1.
С открытым входом нормально не работает.
п/с В схемке выше добавлен блок детектор ( иногда помогает от лишних дублирования данных) хотя по хорошему все упирается в длинные провода, наводки питания и т д.
Прикрепления: 1966559.png(23Kb)


PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)

Сообщение отредактировал rw6cm - Пятница, 20.05.2016, 07:56
 
jimbaton Дата: Пятница, 20.05.2016, 12:23 | Сообщение # 10
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Неееет вы не понимаете я только симулирую в Протеусе. Это не реальное железо. Протеус чтоли глючит или блок какои корявый?
 
OlegAn1962 Дата: Пятница, 20.05.2016, 12:48 | Сообщение # 11
Майор
Группа: Проверенные
Сообщений: 120
Награды: 0
Репутация: 0
Статус: Offline
Так соберите схему вживую и узнаете.
 
jimbaton Дата: Пятница, 20.05.2016, 15:05 | Сообщение # 12
Рядовой
Группа: Проверенные
Сообщений: 9
Награды: 0
Репутация: 0
Статус: Offline
Дык нет пока возможности собрать вживую
 
Форум » Основной » Спросить у знатоков » Как считать состояние порта
Страница 1 из 11
Поиск:

FLProg © 2016
Яндекс.Метрика