Страница 1 из 14

DCC.

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

Re: DCC.

Добавлено: Чт мар 27, 2008 8:16 pm
Onegin
Лично меня отпугивает процесс изготовления платы. Для меня, пока, это долгий и трудоемкий процесс. Не менее трудоемкий процесс отладка платы (либо макета). Из приборов есть только китайский горелый тестер. Да и элементная база оставляет желать лучшего... Поэтому пока сваяю плату в Proteus, пока отлажу ее там, пока нарисую... Пока переведу...

Re: DCC.

Добавлено: Чт мар 27, 2008 11:31 pm
atom
Готов всячески помочь в данном начинание, бескорыстно. Есть средства и светлые головы; а также прочие технические возможности ;) .

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

С уважением

Re: DCC.

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

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

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

Re: DCC.

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

Re: DCC.

Добавлено: Пт мар 28, 2008 1:48 pm
Onegin
Выяснил, что в Германии можно прикупить плату для проекта OpenDCC за 25.90 евро. + рассыпуха выйдет рублей в 600. Основная проблема в поиске редкой L6206N.

444

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

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

Женя и ДЦЦ

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

Несколько приколов:
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 - моджет там глюк какой...

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

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

Цифра...2

Добавлено: Сб апр 12, 2008 5:24 am
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 - моджет там глюк какой...

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

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

Re: Цифра...

Добавлено: Сб апр 12, 2008 4:35 pm
Onegin
Нашел в чём проблема. Контроллер теперь умеет формировать и отправлять на рельсы idle пакеты и stop пакеты. Изучаю процедуры формирования командных пакетов.
Научился отправлять управляющие пакеты... Но новый косяк, программа их похоже не формирует... preamble есть, вроде бы пакеты данных есть... Но тот же Trix делает пик при включении и никуда не едет. По длительности битов данных все правильно. Новые грабли...
Смущает выполнение функции memcpy и структуры, с которыми приходится работать. Изначально, они были декларированы иначе, что не нравилось компилятору.
Измененные исходники тут.