Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
7 / 7 / 0
Регистрация: 18.10.2008
Сообщений: 49
1

Двубитный порт в однобитный

05.11.2008, 15:11. Показов 1187. Ответов 2
Метки нет (Все метки)

Ребята меня тут попросили помочь с заданием с контроллерами
и требует двубитный порт при прмрщи цикла If преобразовать в однобитный
я честно говоря что то не совсем понимаю как это представить
может кто ссылочку какую нибудь кинет где почитать можно об этом? или надоумит как это притворить в жизнь?
у меня вот какие соображения имеются только не знаю верны ли они
что это должно выглядить на сколько я думаю так
x1 -->
______|----> y2
x2 -->
это как бы порт вход двубитный а выход однобитный и могу ли я просто поставить какой либо логический элемент например AND ??
можно ли это реализовать так? или я вообще не в ту степь полез? никогда с контроллерами не сталкивался :[
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2008, 15:11
Ответы с готовыми решениями:

Однобитный компьютер
Нужна схема 1 битного компьютера на логических элементах нашел в нете инфу по Motorola MC14500B и...

Открыть порт 4444 в брэндмауэре. Антивируса нет. провайдером порт открыт
Подскажите как открыть данный порт,все делал как тут...

В конфигурационном файле прописан порт, но пишет ошибку порт 80 занят другим приложением
Здравствуйте. Пишу решение с 2 проектами - сервер и клиент с дуплексным контрактом. Служба...

В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?
помогите решить пожалуйста В порт в среднем приходит 3 корабля в день. Какова вероятность...

2
LaViCi
05.11.2008, 16:57 2
Уточни, что за контроллер? может здесь требуются знания ассемблера? или какое-то предварительное схемотехническое решение?
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
05.11.2008, 17:18 3
а что требуется сделать? надо чтобы контроллер это преобразование осуществлял?
или на контроллере есть однобитный порт, а к нему подводят данные двубитным каналом?
в любом случае AND не покатит т.к. произойдёт потеря информации +)) нам ведь всётаки надо сохранить сигнал я так думаю
вобще, я думаю что скорей всего надо, чтобы контроллер это преобразование осуществлял...+) имхо, в другом случае задача не имеет смысла=))
тогда надо написать программу под контроллер, чтобы он преобразовывал... (вы кстати уверены, что программа на Си? под МК обычно на асме пишут... на сях слишком длинные приложения получаются...)
вобщем суть программы будет примерно такой:
чтобы не потерять информации с двубитного порта, мы удваиваем частоту однобитного, т.е. в первые пол такта мы послыаем бит с первого выхода, вторые пол такта со сторого...
как на Си такое сделать незнаю...
на асме это выглядело бы примерно так, если предположить, что частоту работы двубитного порта знаем заранее, то:
считываем в регистр(либо можно 2 взять, чтобы меньше париться) информацию с двубитного порта, после этого отправляем на однобитный порт первый бит(использовать маску по "И"), и запускаем таймер с прерыванием на половину частоты двубитного порта... по прерыванию отправляем второй бит, опять же через маску его получаем...
после этого у нас 2 варианта: двубитный порт имеет стробирование или нет...
если не имеет, то опять таймер на пол периода и считывание значения через него, если имеет, то в цикле проверяем наличие стробирующего сигнала, и считаваем значение в регистр сразу после его прихода...+)
намного всё интереснее будет, если частоту мы незнаем изнчально +)) тогда уж без стробирующего сигнала не обойтись, и тут у нас будет опять же куча вариантов...+)
если строб позволяет, то я бы сделал считывание значения и отправку первого бита по фронту, а отправку второго бита по спаду (это если строб не короткий импульс, и если двубитный порт уже этого не задействует),
в противном случае я бы реализовывал при помощи задержки на 1 период...+)
по поводу случая, что есть строб, не импульсный, и приём данных только по фронту, то тут довольно просто реализуется:
в цикле(бесконечном, например while(1) ) проверяем значение строба;
если 1 - записываем в переменные значения с двубитного порта;
отправляем первую переменную на выход;
переходим(например по метке), в другой цикл;
второй цикл, опять же бесконечный, но он уже ждёт нуля в стробе и по приходу нуля, отправляет вторую переменную и переходит к первому циклу.

Попробую показать на картинке:
_________-----------__________------------__
0*******1*******2********3*********4 (на звёздочки внимание не обращайте, они чтобы цифры не съехали =)) )
в точке 0 запускается программа, работает первый цикл. В точке 1 в условие приходит единица, т.е. оно срабатывает в переменные а и б записываем значения с порта, посылаем а на другой порт и переходим к циклу 2. В точке 2, приходит нолик, срабатывает иф во втором цикле, и отправляется переменная Б на порт выхода, а так же осуществляется переход к первому циклу...
в точке 3 опять происходит то же что и в точке 1...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2008, 17:18

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

Async Free (СОМ-порт)-Async Pro (СОМ-порт)?
Здравствуйте! Скажите пожалуйста есть пример где используют Async Free (СОМ-порт) или Async Pro...

Game порт. или не Game порт
Добрый день! Конструирую свой игровой девайс (корабельный штурвал). Суть - вращаемый вал,...

COM порт
Добрый день, Как организовать непрерывный опрос Com-порта через VB в excel?

Порт
Как открыть порт на модеме huawei hg8245 + windows7?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.