Простейший DCC декодер на Arduino
- Engineer_Keen
- Сообщения: 313
- Зарегистрирован: Ср фев 24, 2010 11:15 am
- Имя: Василий
- Откуда: Москва
- Поблагодарили: 5 раз
- Василий
- Модератор
- Сообщения: 9436
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 342 раза
- Поблагодарили: 455 раз
- Контактная информация:
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?
в 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
- Имя: Фарид
- Откуда: Узбекистан Ташкент
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
А разве локомотивы могут иметь адрес больше 127?
Так вроде и написано : Basic Accessory Decoders with 9 bit addresses and Extended Accessory Decoders with 11-bit addresses
Accessory Decoders
Так вроде и написано : Basic Accessory Decoders with 9 bit addresses and Extended Accessory Decoders with 11-bit addresses
Accessory Decoders
- Василий
- Модератор
- Сообщения: 9436
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 342 раза
- Поблагодарили: 455 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Собственно я об этом же. Мышь позволяет.
Нет, на самом деле несмотря на пересечение адресов, аксессуарники с локомотивными не пересекаются, так как у них формат пакета разный. Но тогда непонятен смысл этой таблицы.
Нет, на самом деле несмотря на пересечение адресов, аксессуарники с локомотивными не пересекаются, так как у них формат пакета разный. Но тогда непонятен смысл этой таблицы.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
-
- Сообщения: 1430
- Зарегистрирован: Вс фев 19, 2012 7:18 am
- Имя: Фарид
- Откуда: Узбекистан Ташкент
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Ну ка же не понятен? Всё по полкам.
с 1-127 Локдекодеры
с 128-191 Аксесуарные
с 192-231 Функциональные
45 с 232-254 Резервные
Василий,ты ли это?)))) Что то на тебя не похоже)))
с 1-127 Локдекодеры
с 128-191 Аксесуарные
с 192-231 Функциональные
45 с 232-254 Резервные
Василий,ты ли это?)))) Что то на тебя не похоже)))
- Василий
- Модератор
- Сообщения: 9436
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 342 раза
- Поблагодарили: 455 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Я это, я Таблицу я прекрасно понимаю. Меня в тупик поставило несоответствие поведения рокомышки, тому что написано в стандарте.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
-
- Сообщения: 1430
- Зарегистрирован: Вс фев 19, 2012 7:18 am
- Имя: Фарид
- Откуда: Узбекистан Ташкент
- Поблагодарили: 1 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Не знаю как все, но я ешё понял, что лок декодер может иметь адрес более 127.Но при этом надо соблюдать битность,которая написана в таблице.Или я не так понял?
- И.К.С.
- Сообщения: 3895
- Зарегистрирован: Пн мар 17, 2008 9:57 am
- Имя: Ĩ.Ĉ.Š. мӧҗҥҩ ҧрѻҫҭҩ мӥҫҭҿӄѣ Ӥ.Ҟ.Ҫ іљі Ҝѻӊҫҭѩңҭӥԋъ
- Откуда: У.Г.Ж.Д. 13 верста( U.M.M.R.R 13 km)
- Благодарил (а): 199 раз
- Поблагодарили: 129 раз
- Контактная информация:
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
И главное отличие от базовых пакетов: отдельные для изменения скорости и отдельные для изменения дополнительных функций, всего до трёх десятков, а не один прожектор.
Федя могут, длинный адрес это 14 бит, в теории: от 1 до 16384, но реально до 9999 или даже еще меньше.Федюнь писал(а):А разве локомотивы могут иметь адрес больше 127?
и кстати правильно читать вот так:
тут кстати цифры (128-191) и (192-231) это не адреса в чистом виде, а старшие биты адресов! недостающие младшие биты во втором байте вместо части данных.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. Но, Мультимыша легко назначает адрес из этого диапазона и шлет его обычным пакетом как для лока.
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 раза.
- Василий
- Модератор
- Сообщения: 9436
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 342 раза
- Поблагодарили: 455 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Костя, я все понимаю, да Дело в том, что если я ничего не напутал (дело-то было к часу ночи), то мультимыша шлет пакеты с адресами от 128 до 191 именно basic пакетами.
Сегодня вроде более вменяем, точно проверю как на самом деле
А еще я пытался понять как устанавливаются значения CV17-18. Сначала сходу реализовал как младший байт адреса в CV18, и 6 бит старшего байта адреса в CV17 (то есть за вычетом двух единичек в 6-7 битах). Это работает Но потом полез смотреть инструкцию к локпилоту и втупил в схему назначения длинного адреса
В общем нужно все еще раз внимательно перепроверить и пересмотреть. Занимательно все это.
Сегодня вроде более вменяем, точно проверю как на самом деле
А еще я пытался понять как устанавливаются значения CV17-18. Сначала сходу реализовал как младший байт адреса в CV18, и 6 бит старшего байта адреса в CV17 (то есть за вычетом двух единичек в 6-7 битах). Это работает Но потом полез смотреть инструкцию к локпилоту и втупил в схему назначения длинного адреса
В общем нужно все еще раз внимательно перепроверить и пересмотреть. Занимательно все это.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
- Василий
- Модератор
- Сообщения: 9436
- Зарегистрирован: Чт мар 06, 2008 9:03 am
- Имя: Василий Васильчиков
- Откуда: Северо-западное Болото
- Благодарил (а): 342 раза
- Поблагодарили: 455 раз
- Контактная информация:
Re: Простейший DCC декодер на Arduino
Все еще интереснее. Мышка шлет baseline пакеты для коротких адресов до 99 включительно. Для адреса 100 и выше - Extended Packet Format.
Во как оказывается...
Во как оказывается...
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!