DCC.

Вопросы и ответы связанные с цифровым управлением, аналоговой автоматикой и их элементами
Сообщение
Автор
Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

DCC.

#1 Непрочитанное сообщение Onegin »

Не оставляет в покое создать цикл статей "Все о DCC". Тема избитая, но отпугивающая многих. Не так страшен черт, как его малюют. Так что буду потихоньку писать все, что знаю. В данный момент изучаю исходники проекта OpenDCC Вольфганга Кюфера (Wolfgang Kufer) под mega32. Думаю либо собрать centrale как есть и использовать с уже готовой платой ШИМ (переделывать ничего не нужно), либо городить свое на mega8. Проект под AVR Studio на С++, а я пишу под Code Vision AVR на С, что создает проблемы портирования кода. Если кому интересно, вот ссылка на проект. Для себя обнаружил много интересного.
Писать аналогичный код самостоятельно пока не способен, из-за малого опыта разработки на С/С++. Писать на ассемблере еще сложнее, т.к. после z80 пытался что-то делать под pic12. Теперь на асм стойкая аллергия.
VBLO Digital Research.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: DCC.

#2 Непрочитанное сообщение Onegin »

Лично меня отпугивает процесс изготовления платы. Для меня, пока, это долгий и трудоемкий процесс. Не менее трудоемкий процесс отладка платы (либо макета). Из приборов есть только китайский горелый тестер. Да и элементная база оставляет желать лучшего... Поэтому пока сваяю плату в Proteus, пока отлажу ее там, пока нарисую... Пока переведу...
VBLO Digital Research.

atom

Re: DCC.

#3 Непрочитанное сообщение atom »

Готов всячески помочь в данном начинание, бескорыстно. Есть средства и светлые головы; а также прочие технические возможности ;) .

Есть вопросы.
Возможности системы? Круг решаемых задач и функциональные возможности.

С уважением
Последний раз редактировалось atom Пт мар 28, 2008 6:41 pm, всего редактировалось 2 раза.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: DCC.

#4 Непрочитанное сообщение Onegin »

atom писал(а):Готов всячески помочь в данном начинание, безкорыстно. Есть средства и светлые головы; а также прочие технические возможности ;) .

Есть вопросы.
Возможности системы? Круг решаемых задач и функциональные возможности.

С уважением
Ну конкретно этот проект решение по DCC командной станции. Причем оно может работать в режиме совместимости с Lenz, Intellibox и DMX. Так же поддерживает HSI88. На борту есть RS232 либо USB (через адаптер RS232-USB) для программ управления. Проект расчитан на работу со своим бустером на микросхеме STM L6206 (ток 2.5А). В принципе можно переделать и на более мощные (и значительно дешевые) транзисторные ключи.
FAQ по проекту тут.
VBLO Digital Research.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: DCC.

#5 Непрочитанное сообщение Onegin »

Вот еще интересный проект. Правда это selectrix. Я в шоке от цен на платы, которые он предлагает. Платы декодеров перифирии по 7-10 евро. Интерфейсные по 20 евро... Центральный блок плата 45 евро... + прошитые камни по 6-7 евро штука...
VBLO Digital Research.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: DCC.

#6 Непрочитанное сообщение Onegin »

Выяснил, что в Германии можно прикупить плату для проекта OpenDCC за 25.90 евро. + рассыпуха выйдет рублей в 600. Основная проблема в поиске редкой L6206N.
VBLO Digital Research.

Аватара пользователя
Жорик_У
Сообщения: 481
Зарегистрирован: Пн мар 17, 2008 3:46 pm
Откуда: Туапсе
Контактная информация:

444

#7 Непрочитанное сообщение Жорик_У »

"У меня другая проблема. Портированная на mega8 программа формирования импульсов DCC не работает в железе. В Proteus и в отладчике AVR Studio4 все нормально. Похоже не обрабатывается прерывание... Может уважаемый Жорик_У поможет? Исходники проекта под CVAvr в архиве тут. Atmega8, 8 мегагерц от внутреннего генератора..."

Гляну. Только с АВР СТУДИО надо аккуратно, оно не все жует. У меня например не эмулировало ЮАРТ нив какую.
После чего я начал пользоваться бациллскопом и индюкаторами в контрольных точках проги вместо студии

Аватара пользователя
Жорик_У
Сообщения: 481
Зарегистрирован: Пн мар 17, 2008 3:46 pm
Откуда: Туапсе
Контактная информация:

Женя и ДЦЦ

#8 Непрочитанное сообщение Жорик_У »

Жень.
Кое-чего мельком глянул. Вопрос. Прога надергана из кусков разных источников?? (Тольок чур не обижаться если я ошибся...).

Несколько приколов:
1. Все описание функций - в голову, перед void main(),
варианты с описанием как под Борланд С с предописанием перед мэйн и полным описанием после мэйна тела функции, насколько я помню тут не прокатывают, хотя я могу ошибаться. все тела взял за праивло пишу однозначно перед мэйном (видимо нарывался, но уже забыл).
2. функции проверить и обязательно по иерархии. т.е. если ф. А зовет В,
то В в тексте выше А!
3. заголовок:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)

заменить на interrupt [7] void timer1_compa_isr(void)
7 - номер вектора на совпадениеА по таймеру1
Старайтесь избегать непроверенных подстановок такого типа, если не уверенны используйте ЯВНОЕ указание адресов, номеров векторов, ссылок.У меня был прикол - потерял пару часов, пытаясь понять, почему ЮАРТ меги8535 пропускает принятый байт, хотя РС232 тестер под АТ2313, писаный годом ранее и висящий монитором на линии четко давал проход посланного компом байта. Оказалось, что несмотря на описание бита в регистре контроля ЮАРТа в .h -файле, компайлер не врубался на что я его отсылаю. Кончилось тем,что я плюнул, через маску лог умножения выщемил этот бит, поставил по результату умнож условие - И О ЧЮДА! Все заработало!!

4. конструкция i++ или j-- :-) вроде бы книжная, НО иногда не работает!! КАк то нарывался. потому даю явно а=а+1; b=b-1;

5. Попробуйте просто вначале отработать прерывание простой программой. типа в мэйне моргаем светиком по портуБ.5, а обрабатываем прерываение с о сменой состояния светика на портеБ.4, при этом поставить какой-нибудь цлк/1024 и период побольше задать, чтобы визуально было видно. Заодно этим все проверит avr/interrupt.h - моджет там глюк какой...

Пока всё, звиняйте побежал дальше стену обдирать ...

Блин, жалко что у Вас осцилла нет... Его правда иногда лень включать, но проблемы он помогает решать многие...

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Цифра...2

#9 Непрочитанное сообщение Onegin »

Жорик_У писал(а):Жень.
Кое-чего мельком глянул. Вопрос. Прога надергана из кусков разных источников?? (Тольок чур не обижаться если я ошибся...).

Несколько приколов:
1. Все описание функций - в голову, перед void main(),
варианты с описанием как под Борланд С с предописанием перед мэйн и полным описанием после мэйна тела функции, насколько я помню тут не прокатывают, хотя я могу ошибаться. все тела взял за праивло пишу однозначно перед мэйном (видимо нарывался, но уже забыл).
2. функции проверить и обязательно по иерархии. т.е. если ф. А зовет В,
то В в тексте выше А!
3. заголовок:
interrupt [TIM1_COMPA] void timer1_compa_isr(void)

заменить на interrupt [7] void timer1_compa_isr(void)
7 - номер вектора на совпадениеА по таймеру1
Старайтесь избегать непроверенных подстановок такого типа, если не уверенны используйте ЯВНОЕ указание адресов, номеров векторов, ссылок.У меня был прикол - потерял пару часов, пытаясь понять, почему ЮАРТ меги8535 пропускает принятый байт, хотя РС232 тестер под АТ2313, писаный годом ранее и висящий монитором на линии четко давал проход посланного компом байта. Оказалось, что несмотря на описание бита в регистре контроля ЮАРТа в .h -файле, компайлер не врубался на что я его отсылаю. Кончилось тем,что я плюнул, через маску лог умножения выщемил этот бит, поставил по результату умнож условие - И О ЧЮДА! Все заработало!!

4. конструкция i++ или j-- :-) вроде бы книжная, НО иногда не работает!! КАк то нарывался. потому даю явно а=а+1; b=b-1;

5. Попробуйте просто вначале отработать прерывание простой программой. типа в мэйне моргаем светиком по портуБ.5, а обрабатываем прерываение с о сменой состояния светика на портеБ.4, при этом поставить какой-нибудь цлк/1024 и период побольше задать, чтобы визуально было видно. Заодно этим все проверит avr/interrupt.h - моджет там глюк какой...

Пока всё, звиняйте побежал дальше стену обдирать ...

Блин, жалко что у Вас осцилла нет... Его правда иногда лень включать, но проблемы он помогает решать многие...
Прога надёргана из кусков одно и того же проекта. Просто это были разные модули. Весь проект разбит на множество .с файлов. Спасибо за советы, буду переделывать.
VBLO Digital Research.

Аватара пользователя
Onegin
Модератор
Сообщения: 4621
Зарегистрирован: Пт мар 14, 2008 12:02 pm
Откуда: Нижний Тагил

Re: Цифра...

#10 Непрочитанное сообщение Onegin »

Нашел в чём проблема. Контроллер теперь умеет формировать и отправлять на рельсы idle пакеты и stop пакеты. Изучаю процедуры формирования командных пакетов.
Научился отправлять управляющие пакеты... Но новый косяк, программа их похоже не формирует... preamble есть, вроде бы пакеты данных есть... Но тот же Trix делает пик при включении и никуда не едет. По длительности битов данных все правильно. Новые грабли...
Смущает выполнение функции memcpy и структуры, с которыми приходится работать. Изначально, они были декларированы иначе, что не нравилось компилятору.
Измененные исходники тут.
VBLO Digital Research.

Ответить

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