Перейти к содержанию

Реализация Протокола Dmx512


maxzmey

Рекомендуемые сообщения

Вобщем есть проблема. Искал в сети инфу по протоколу. Но к сожелению ницего понятного не нашол. Писать програмы начал недавно. Поетому розтолкуйте не пиная))) Пишу на асамблере в кодевизион! Вобще нужно разработать некий девайс под управлением етого протокола. Помогите кто чем может. Зарание спасибо.

Максим

Ссылка на комментарий
Поделиться на другие сайты

Что-то плохо вы искали... Unofficial DMX 4 Linux 2.6 Release. Ссылку взял тут.

UPD:

А вот и схемка. Ссылку взял на том же сайте. Короче все просто:) Главное правильно искать;)

Изменено пользователем ss85
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Мне ето не важно. Коротко к теме. У меня есть пульт master 1016 16 канальний. К нему я хочю поключить схемку с мк в корой весит моя прога. Просто я не могу розобратса с алгоритмом што после чего идет так как с управлением дел не имел. Вот почитай

Максим

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Что конкретно вам не понятно? Там же все просто. Соберите уст-во с MAX485, подключите его к вашему пульту (не забудьте терминатор 120ом). Так же впаяйте переключатель чтоб адрес можно было задавать. И так, пишите программу. Настройте USART на 250000бод. Алгоритм работы:

1. Ждите BREAK >=88мкс; (думаю поможет только асм)

2. Ждите MaB >4мкс; ( в этот момент включаете RxD ногу);

3. Ловите START, проверяете его, он должен быть "0", иначе игнорируете следующие данные;

4. Ловите байты с шины и и считаете адрес;

5. Как только пришел байт по вашему адресу, начинаем его обработку.

И так в цикле.

Как я понимаю ОС тут нет.

Ссылка на комментарий
Поделиться на другие сайты

Что-то вразумительное есть здесь, в главе The DMX Packet Structure.

Если не ошибаюсь, для упрощения программы можно использовать следующий трюк: импульс BREAK обычно ловится USART'ом микроконтроллера как обычный нулевой байт, но при этом устанавливается флаг ошибки (отсутствие стоп-бита). Эту ситуацию можно использовать для определения начала передачи.

UPD: Нашёл статью, где разжёвано абсолютно всё.

Изменено пользователем Tesla
Ссылка на комментарий
Поделиться на другие сайты

Мне бы еще пример на асамблере, с исходнечком вобще класно былобы! Я же написал што начинающий поетому туго немного доходит. Просто когда видиш код уже готового девайса то както легче раздуплица. Страничку ету видел. Я не разу не делал сеть поетому дупля не ловлю как ето делать.

Я тут почитал посты. И кажетса наченаю понемногу вдуплять. В наличии есть LCT485 в дипе. Только я не пойму почему их две на одно устройство?!! И розкажыте как обьявляетса адрес устройства. Он будет указиватса програмно с помощью отдельного устройства и сохранятса в память мк!

LTC485_IC-ON-LINE.CN.pdf

Изменено пользователем maxzmey

Максим

Ссылка на комментарий
Поделиться на другие сайты

Он будет указиватса програмно с помощью отдельного устройства и сохранятса в память мк!

Адрес указывается один раз. Его можно хранить как угодно, но, наверное лучше изменять при помощи переключателей. У вас 16и канальный пульт, значит будет достаточно меленького DIP переключателя на 4и элемента.

Изменено пользователем ss85
Ссылка на комментарий
Поделиться на другие сайты

Я не понял вот етого"3. Ловите START, проверяете его, он должен быть "0", иначе игнорируете следующие данные;" ето означает што зделать переривание по приему уйарт и проверить значение на нем?!!

Максим

Ссылка на комментарий
Поделиться на другие сайты

Немного глупый вопрос)) А по какой ножке осуществлять перерывание. Просто в cv там можно выбрать Rx и Tx. И потом выбрать нужно размер буфера. Я так понял для сохранения захваченого кода. Может я не прав?!! И што имеетса виду включаете ножку, ето подать на ножку высокий лог?

Максим

Ссылка на комментарий
Поделиться на другие сайты

На это месте рекомендую остановится и начать с изучения работы контроллера, так как у вас не хватает базовых знаний.

Просто в cv там можно выбрать Rx и Tx.

Но если по теме, то вам нужно включить прерывание по Rx и буфер вам не нужен. Т.е. его длинну можно сделать 1. Но опять таки, конструктор в таком деле плохой помощник.
И што имеетса виду включаете ножку

Вначале ножка должна быть сконфигурирована как вход, просто вход и вы должны его слушать (читаем протокол), как только начало захватили, переключаете её в режим USART Rx.

Ссылка на комментарий
Поделиться на другие сайты

Я зделал наброски с того што понял. Прошу поправить. Алгоритм такой. Зделать переривание при захвате приемника уярт и если его значение переходит дальше получает код который я хочю увидеть на лсд. Знаю што написал не так. Поетому сильне не пинать!

485.rar

Максим

Ссылка на комментарий
Поделиться на другие сайты

while (1)
     {
     delay_ms(90);
     PORTD.0=1;
     delay_ms(4);
     if(rx_counter == 0)
       {
       lcd_gotoxy(0,0);
       lcd_putchar(UDR);
       }
     };
}

Как вам сказать, это все что вы написали сами, без генератора. Тут сразу видна ошибка: delay_ms. А на самом деле вы должны слушать ножку УАРТ и если там в течении >88 микросекунд лог. "1", значить этот "BREAK". Потом опять слушаете, если там в течении >4 микросекунд лог. "0", значить нужно включить на этой ноге УАРТ и ждать данные, а дальше все просто...

Ссылка на комментарий
Поделиться на другие сайты

Вы помоему неправильно меня поняли. Я же не прошу писать мне програму. А просто попросил обьяснить значение слова "слушать". Приблезительно я ето понял как засесть и проверять значение ножки. Я би зделал вот так:

1. Так как ножка изначально являетса входом проверяем значение в етот момент времени.

2. Если на ножке есть лог 1 то ждем 88мс или больше, снова проверяем лог.

3. Потом если на ножке остайотса лог 1 приостанавлюем програму пока лог непоменяетса на 0.

4. После етого включаем уярд и принимаем код, который сохраняем и обрабатываем.

5. Все наченаем заново.

Если я прав. То включать и выключать стоит только перерывание?

Максим

Ссылка на комментарий
Поделиться на другие сайты

Немного не так, до тех пор пока на ноге лог. "1" приостанавливаем программу. Как только там появится лог. "0" проверяем сколько мы стояли, если меньше 88мкс, тогда это какой-то сбой и ждем следующего раза. Если все же интервал был >=88мкс, включаем USART RX ( RXEN ) и включаем прерывание (RXIEN). Первый пришедший байт будет "START", он должен быть нулем. Все следующие относятся адресам димеров. Т.е. первый после START, должен быть обработан первым димером, второй вторым и т.д.. Начните с того что ваше устройство будет обладать адресом №1. Т.е. первый байт после старт, будет адресован ему.

Ссылка на комментарий
Поделиться на другие сайты

Тогда немогу вдуплить как проверить сколько програма простояла. Просто остановить можно так:

while(PIND.0) но дальше. Есть идея использывать таймер. Штобы он начинал щитать когда как только лог стал еденицей. Тогда можно зделать так:

if(PIND.0)

{ включаем таймер;

}

виключаем таймер и сщитаем кокое время он был включен и сохраняем значение в какую небуть переменную;

ставим условие што если ето значение больше или равно 88 то виполняем програму дальше;

После етого включаем переривание и уярд(теперь понял почему только теперь(штобы не мешал));

И просто щитуем получений код. Первое значение (если оно было нулем) относим к значению старт приема основного кода.

Надеюсь я правильно понял.

Максим

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...