31.01.2016, 21:58
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Непоследовательный двоичный код
serg5768,
нихрена не понял из сообщения #1, но почему не использовать МК? у МК есть прерывание по изменению состояния выводов, считываем их и суммируем с базой таблицы, далее:
- для младших пиков есть команда с возвратом из прерывания с кодом;
- для авр просто считываем.
все адреса таблицы, отличные от данных, возвращают 0 или FF, можно что-то другое
|
|
|
|
31.01.2016, 21:59
|
|
Временная регистрация
Регистрация: 31.01.2016
Сообщений: 84
Сказал спасибо: 32
Сказали Спасибо 25 раз(а) в 16 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от mtit
|
Блин, а погуглить?
К155ИД4 - трёхвходовый. Каскадируем два корпуса - получаем 6-ти входовой. Всё! на плате больше ни одной детальки не будет. Правда 9 выходов - будут инверсными.
|
Даже можно не гуглить, номенклатуру 155 серии могу сам спросонья рассказать...
Не горю желанием обрастать корпусами, эти решения уже есть в нескольких вариантах, пытаюсь (и с вашей помощью) найти другой путь...
|
|
|
|
31.01.2016, 22:04
|
|
Временная регистрация
Регистрация: 31.01.2016
Сообщений: 84
Сказал спасибо: 32
Сказали Спасибо 25 раз(а) в 16 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от jump
|
serg5768,
нихрена не понял из сообщения #1, но почему не использовать МК? у МК есть прерывание по изменению состояния выводов, считываем их и суммируем с базой таблицы, далее:
- для младших пиков есть команда с возвратом из прерывания с кодом;
- для авр просто считываем.
все адреса таблицы, отличные от данных, возвращают 0 или FF, можно что-то другое
|
Весь "бутерброд" и так будет вертеться на ATMega16.
Но я в них еще не гуру...
Если бы переключатель был один, то вопросов бы не возникло, но их - три и они независимы друг от друга...
Поэтому пошел аппаратным путем.
Если Поможете примером для BASCOM - буду о-о-чень благодарен...
|
|
|
|
31.01.2016, 22:16
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Непоследовательный двоичный код
Собирайте на циклоне! А что, гулять так гулять!
Задачу надо ставить корректно. А 155ая логика в 21ом веке это никуда не годится.
|
|
|
|
31.01.2016, 22:29
|
|
Временная регистрация
Регистрация: 31.01.2016
Сообщений: 84
Сказал спасибо: 32
Сказали Спасибо 25 раз(а) в 16 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от Easyrider83
|
Собирайте на циклоне! А что, гулять так гулять! Задачу надо ставить корректно.
|
Надо было весь проект разложить ?
Я задал, ИМХО, вполне корректный вопрос по участку схемы...
Сообщение от Easyrider83
|
А 155ая логика в 21ом веке это никуда не годится.
|
Кое-где - еще как !
Кувалды и топоры в 21 веке никто, что-то не выбросил...
|
|
|
|
31.01.2016, 23:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от serg5768
|
Логика работы (положение - состояние кнопок):
1 - 00001
2 - 00011
3 - 00010
4 - 00110
5 - 00100
6 - 01100
7 - 01000
8 - 11000
9 - 10000
Как видим - двоичная последовательность не соблюдается.
|
Это разновидность кода Грея. Он хорош тем, что при последовательной смене состояния изменения происходят только в одном разряде. В отличие от обычной двоичной последовательности, в которой одновременно может происходить смена состояний в нескольких разрядах. В процессе переключения двоичной последовательности возникают ложные состояния, что в некоторых случаях недопустимо.
Как этот код Грея преобразовать в двоичный? Тут уже предложили почти все возможные варианты. Самый минимальный объем займет, конечно же, вариант с процессором. Если место не лимитировано, а с процессорами отношения не сложились, я бы рекомендовал комбинированный вариант - пять инверторов на КМОП, плюс обычный дешифратор на диодно-резисторной логике, на выходе которого еще четыре инвертора. Места займет ненамного больше, чем процессор, зато все на виду, и все поддается осмыслению.
|
|
|
|
31.01.2016, 23:12
|
|
Временная регистрация
Регистрация: 31.01.2016
Сообщений: 84
Сказал спасибо: 32
Сказали Спасибо 25 раз(а) в 16 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от Alex9797
|
Как этот код Грея преобразовать в двоичный? Тут уже предложили почти все возможные варианты. Самый минимальный объем займет, конечно же, вариант с процессором. Если место не лимитировано, а с процессорами отношения не сложились, я бы рекомендовал комбинированный вариант - пять инверторов на КМОП, плюс обычный дешифратор на диодно-резисторной логике, на выходе которого еще четыре инвертора. Места займет ненамного больше, чем процессор, зато все на виду, и все поддается осмыслению.
|
Я уже сказал, что в конечном итоге над полученными данными голову ломать будет МК...
Наклюнулась сейчас одна мыслишка...
Если срастется - поделюсь...
|
|
|
|
01.02.2016, 00:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,984
Сказал спасибо: 0
Сказали Спасибо 4,943 раз(а) в 2,371 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от serg5768
|
Поможете примером для BASCOM
|
уже нет, ушел еще в 2006
в памяти формируем таблицу перекодировки на 32байта
алгоритм таков (схематично, в лоб):
- ноги порта переводим на срабатывание по изменению состояния;
- в прерывании от порта читаем его, прибавляем адрес базы таблицы, читаем, устанавливаем флаг, уходим;
в основном цикле по флагу обрабатываем данные
можно все три переключателя обрабатывать на одних и тех же входах, но за это заплатить придется тремя выводами
|
|
|
|
01.02.2016, 00:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 21.03.2007
Адрес: М.(осква)
Сообщений: 4,290
Сказал спасибо: 2,127
Сказали Спасибо 1,725 раз(а) в 979 сообщении(ях)
|
Re: Непоследовательный двоичный код
https://ru.wikipedia.org/wiki/%D0%9A...80%D0%B5%D1%8F
Цитата:
|
function GrayToBin(b: integer): integer;
var g: integer;
begin
g := 0;
while b › 0 do begin
g := g xor b;
b := b shr 1;
end;
GrayToBin := g;
end;
|
Хотя по мне структура
Цитата:
|
case X of
00001: Y:=1
00011: Y:=2
00010: Y:=3
00110: Y:=4
00100: Y:=5
01100: Y:=6
01000: Y:=7
11000: Y:=8
10000: Y:=9
end;
|
пишется за 5 минут и проблем не представляет.
__________________
+ 7 903 641 87 25// 1. Иногда отвечаю "по памяти" 2. Часто заблуждаюсь >> Критикуйте, не обижусь.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо mtit за это сообщение:
|
|
|
01.02.2016, 00:34
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,041
Сказали Спасибо 10,615 раз(а) в 3,604 сообщении(ях)
|
Re: Непоследовательный двоичный код
Сообщение от mtit
|
Хотя по мне структура
Цитата:
case X of
00001: Y:=1
00011: Y:=2
00010: Y:=3
00110: Y:=4
00100: Y:=5
01100: Y:=6
01000: Y:=7
11000: Y:=8
10000: Y:=9
end;
пишется за 5 минут и проблем не представляет.
|
Спасибо, как раз собрался предложить то же самое! Выручили!
Добавлю только, что этот переключатель - штука очень медленная, с точки зрения даже самого тормознутого проца. Поэтому не вижу смысла напрягаться с отслеживанием момента изменения кода, а потом еще прерывание обрабатывать. Торопиться некуда. Можно просто запускать эту процедуру обработки кода переключателя тогда, когда реально возникнет интерес к его состоянию.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:37.
|
|