Простейший DCC декодер на Arduino

Вопросы и ответы связанные с цифровым управлением, аналоговой автоматикой и их элементами
Аватара пользователя
Engineer_Keen
Сообщения: 313
Зарегистрирован: Ср фев 24, 2010 11:15 am
Имя: Василий
Откуда: Москва
Поблагодарили: 5 раз

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Engineer_Keen »

Ну тогда тут еще запас по быстродействию приличный.

Аватара пользователя
Василий
Модератор
Сообщения: 9416
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 337 раз
Поблагодарили: 440 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Василий »

Коллеги, читаю стандарт и не понимаю...

в S-9.2.1 есть такое место:

A: Address Partitions
The first data byte of an Extended Packet Format packet contains the primary address. In order to allow for
different types of decoders this primary address is subdivided into fixed partitions as follows.
Address 00000000 (0): Broadcast address
Addresses 00000001-01111111 (1-127)(inclusive): Multi-Function decoders with 7 bit addresses
Addresses 10000000-10111111 (128-191)(inclusive): Basic Accessory Decoders with 9 bit addresses and Extended Accessory Decoders with 11-bit addresses
Addresses 11000000-11100111 (192-231)(inclusive): Multi Function Decoders with 14 bit addresses
45 Addresses 11101000-11111110 (232-254)(inclusive): Reserved for Future Use
Address 11111111 (255): Idle Packet

Если я правильно понимаю, то локомотив не может иметь короткие адреса со 128 по 191. Но, Мультимыша легко назначает адрес из этого диапазона и шлет его обычным пакетом как для лока.
WTF? :)
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Федюнь
Сообщения: 1430
Зарегистрирован: Вс фев 19, 2012 7:18 am
Имя: Фарид
Откуда: Узбекистан Ташкент
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Федюнь »

А разве локомотивы могут иметь адрес больше 127?
Так вроде и написано : Basic Accessory Decoders with 9 bit addresses and Extended Accessory Decoders with 11-bit addresses
Accessory Decoders

Аватара пользователя
Василий
Модератор
Сообщения: 9416
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 337 раз
Поблагодарили: 440 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Василий »

Собственно я об этом же. Мышь позволяет.

Нет, на самом деле несмотря на пересечение адресов, аксессуарники с локомотивными не пересекаются, так как у них формат пакета разный. Но тогда непонятен смысл этой таблицы.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Федюнь
Сообщения: 1430
Зарегистрирован: Вс фев 19, 2012 7:18 am
Имя: Фарид
Откуда: Узбекистан Ташкент
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Федюнь »

Ну ка же не понятен? Всё по полкам.
с 1-127 Локдекодеры
с 128-191 Аксесуарные
с 192-231 Функциональные
45 с 232-254 Резервные
Василий,ты ли это?)))) Что то на тебя не похоже)))

Аватара пользователя
Василий
Модератор
Сообщения: 9416
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 337 раз
Поблагодарили: 440 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Василий »

Я это, я :) Таблицу я прекрасно понимаю. Меня в тупик поставило несоответствие поведения рокомышки, тому что написано в стандарте.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Федюнь
Сообщения: 1430
Зарегистрирован: Вс фев 19, 2012 7:18 am
Имя: Фарид
Откуда: Узбекистан Ташкент
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Федюнь »

Не знаю как все, но я ешё понял, что лок декодер может иметь адрес более 127.Но при этом надо соблюдать битность,которая написана в таблице.Или я не так понял?

Аватара пользователя
И.К.С.
Сообщения: 3888
Зарегистрирован: Пн мар 17, 2008 9:57 am
Имя: Ĩ.Ĉ.Š. мӧҗҥҩ ҧрѻҫҭҩ мӥҫҭҿӄѣ Ӥ.Ҟ.Ҫ іљі Ҝѻӊҫҭѩңҭӥԋъ
Откуда: У.Г.Ж.Д. 13 верста( U.M.M.R.R 13 km)
Благодарил (а): 187 раз
Поблагодарили: 127 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение И.К.С. »

Федюнь писал(а):Ну ка же не понятен? Всё по полкам.
нет Федя. более менее стройно и понятно было при использовании только двухбайтных базовых пакетов, не считая преамбулы и контрольного байта.
"General Packet Format" http://nmra.org/sites/default/files/s-92-2004-07.pdf
но! это только 127 локомотивных и 512 аксессуарных адресов. и на локе только 14 градаций скорости и одна функция (прожектор), или 28 градаций скорости, но без света и это все сразу в одном пакете.
Поэтому и придумали "Extended Packet Formats" длиной от трёх до нескольких байт http://nmra.org/sites/default/files/s-9.2.1_2012_07.pdf
И главное отличие от базовых пакетов: отдельные для изменения скорости и отдельные для изменения дополнительных функций, всего до трёх десятков, а не один прожектор.
Федюнь писал(а):А разве локомотивы могут иметь адрес больше 127?
Федя могут, длинный адрес это 14 бит, в теории: от 1 до 16384, но реально до 9999 или даже еще меньше.
и кстати правильно читать вот так:
A: деление адресного пространства
Address 00000000 (0): броадкастовый адрес - для всех локомотивных декодеров
Addresses 00000001-01111111 (1-127)(включая): Локомотивные декодеры с коротким адресом 7 бит (базовые пакеты) адреса в чистом виде
Addresses 10000000-10111111 (128-191)(включая): аксессуарные декодеры с коротким адресом 9 бит, (базовые пакеты) адреса от 1 до 512 либо аксессуарные декодеры с длинным адресом 11 бит, адреса от 1 до 2048 (расширенные пакеты)
Addresses 11000000-11100111 (192-231)(включая): Локомотивные декодеры с длинным адресом 14 бит, адреса от 1 до 9999 или 16384 (расширенные пакеты)
45 Addresses 11101000-11111110 (232-254)(включая): зарезервировано (ИМХО никогда не будет) ;)
Address 11111111 (255): Пакет ожидания
тут кстати цифры (128-191) и (192-231) это не адреса в чистом виде, а старшие биты адресов! недостающие младшие биты во втором байте вместо части данных.

Василий писал(а):Коллеги, читаю стандарт и не понимаю...
Вася "нутыжепрограмист" ;) должен понимать, что стандарт, задача от заказчика и реализация программы совершенно разные вещи ;)

Там писец как напутано, и есть варианты, когда можно толковать в свою пользу.
Василий писал(а):Если я правильно понимаю, то локомотив не может иметь короткие адреса со 128 по 191. Но, Мультимыша легко назначает адрес из этого диапазона и шлет его обычным пакетом как для лока.
WTF? :)
Давай по порядку:
1. ограничений при записи в любую CV со стороны станции нет, то есть в CV 1 можно прописать от 0 до 255, если конечно декодер примет это значение.
2. Раньше экономили каждый бит, и были декодеры у которых ограничение было до 31, до 63, до 99 и до 127.
Но что то не попался ни один в который можно прописать больше. и опять же режимы SS 14 и 28.
3. Длинный адрес это 14 бит: два бита всегда ="11" и старшая часть адреса = 6 адресных бит в CV17 и младшая часть адреса = 8 бит в CV18, а вот здесь есть нюанс: длинные адреса начинаются не с 192, а тоже с единицы, так, что дырок нет! так как значение в CV18 = от 0 до 255. и главное длинный адрес это расширенный пакет и обычно режим SS 128, нет?

Так что мыша должна посылать расширенные пакеты и проблем не должно быть.
70. The first address byte contains 8 bits of address information. If the most significant bits of the address are "11"and the remaining bits are not “111111”, then a second address by te must immediately follow. This second address byte will then contain an additional 8 bits of address data. When 2 bytes of address information are present they are separated by a "0" bit. The most significant bit of two byte addresses is bit 5 of the first address byte. (bits #6 and #7 having the value of "1" in this case.
Последний раз редактировалось И.К.С. Пн мар 14, 2016 7:59 pm, всего редактировалось 2 раза.
HOe.N.Z? . . G.Oe.HO! ПолHOля , эNка и кое-что ещё. Люблю У.Г.Ж.Д. особенно 13 версту и вообще 1 эпоху.
Изображение
Изображение
Изображение

Аватара пользователя
Василий
Модератор
Сообщения: 9416
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 337 раз
Поблагодарили: 440 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Василий »

Костя, я все понимаю, да :) Дело в том, что если я ничего не напутал (дело-то было к часу ночи), то мультимыша шлет пакеты с адресами от 128 до 191 именно basic пакетами.
Сегодня вроде более вменяем, точно проверю как на самом деле :)

А еще я пытался понять как устанавливаются значения CV17-18. Сначала сходу реализовал как младший байт адреса в CV18, и 6 бит старшего байта адреса в CV17 (то есть за вычетом двух единичек в 6-7 битах). Это работает :) Но потом полез смотреть инструкцию к локпилоту и втупил в схему назначения длинного адреса :)

В общем нужно все еще раз внимательно перепроверить и пересмотреть. Занимательно все это.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя
Василий
Модератор
Сообщения: 9416
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 337 раз
Поблагодарили: 440 раз
Контактная информация:

Re: Простейший DCC декодер на Arduino

Непрочитанное сообщение Василий »

Все еще интереснее. Мышка шлет baseline пакеты для коротких адресов до 99 включительно. Для адреса 100 и выше - Extended Packet Format.

Во как оказывается...
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Ответить

Вернуться в «Цифровое управление, Аналоговая автоматика и их элементы»