Помогите с протоколом

Ivan
Offline
Зарегистрирован: 21.08.2011

Прошу помощи.

Нужно прочитать через Arduino примерно такую последовательность:

Как это можно сдела? Как называется этот протокол?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Что за последовательность ?

Откуда читать ?

Картинку почти не видно. 

Ivan
Offline
Зарегистрирован: 21.08.2011

Последовательность 0 и 1 ) Странный вопрос.

Длинный сигнал, это 1, короткий сигнал это 0.

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

Картинку надо открыть в новой странице, или как еще, картинка просто уменьшена форумом.

Ivan
Offline
Зарегистрирован: 21.08.2011

это есть импульсы 0 - 5 вольт.

zhuki
Offline
Зарегистрирован: 12.10.2011

А может проще сказать ,что это за сигналы и откуда они пришли. Если от НЛО, то не по адресу.

Ivan
Offline
Зарегистрирован: 21.08.2011

Разве это важно? Я скажу, это сигнал с мозга парктроника.

zhuki
Offline
Зарегистрирован: 12.10.2011

Это не имеет протокола потому что у парктроника нет мозга.

Ivan
Offline
Зарегистрирован: 21.08.2011

Пусть "нет", дело не в этом, дело в том, как прочитать эту последовательность 0 и 1. Чего мы тут раздуваем?!

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

 >>Пусть "нет", дело не в этом, дело в том, как прочитать эту последовательность 0 и 1. Чего мы тут раздуваем?!<<

Если длинну импульсов читать то pulseIn но что это даст если вы не знаете эту кодировку?

Ivan
Offline
Зарегистрирован: 21.08.2011

>>Если длинну импульсов читать то pulseIn но что это даст если вы не знаете эту кодировку?

Я знаю как интерпретировать эту диаграмму, но не знаю как ее прочитать Aduino или микроконтроллером.

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Функцией  pulseIn. Пример можете найти в разделе "программирование".

Ivan
Offline
Зарегистрирован: 21.08.2011

Спасибо, это уже что-то!

Fluffy
Offline
Зарегистрирован: 01.06.2011

народ вместо того, чтобы подсказать человеку, скалит зубы и ехидствует. вместо того, чтобы ответить на вопрос "как считать". какая разница откуда сигнал идет и что это за сигнал? форум на то и форум, чтобы ответить на вопрос и помочь, а не показывать свое остроумие. умники блин. 

Mastino
Offline
Зарегистрирован: 03.12.2011

Fluffy пишет:

народ вместо того, чтобы подсказать человеку, скалит зубы и ехидствует. вместо того, чтобы ответить на вопрос "как считать". какая разница откуда сигнал идет и что это за сигнал? форум на то и форум, чтобы ответить на вопрос и помочь, а не показывать свое остроумие. умники блин. 

если сам автор, не может правильно задать вопрос..а пишет о каких то протоколах.. так какой разумный ответ можно дать?
если я у тебя спросил бы - arduino летает или это зло?
Ты как бы ответил?..:)

Fluffy
Offline
Зарегистрирован: 01.06.2011

 лично у меня на вопрос автора (первое сообщение в теме) сразу же сгенерировался ответ "считать при помощи pulseIn". вопрос вполне корректный.

step962
Offline
Зарегистрирован: 23.05.2011

Fluffy пишет:

 лично у меня на вопрос автора (первое сообщение в теме) сразу же сгенерировался ответ "считать при помощи pulseIn". вопрос вполне корректный.

Только ответ такой будет весьма сомнительный по полезности: то, что использование pulsein() позволяет лишь половину (в лучшем случае) информации о принимаемом сигнале получить, вас не смущает?

Ведь измерив с помощью этой функции, напрмер, длительность очередного импульса (HIGH), вы автоматически теряете возможность измерить длительность следующей за этим импульсом паузы (LOW) - ведь для запуска pulsein(x,LOW) сначала придется дождаться очередного ниспадающего фронта (перехода с HIGH на LOW), а это произойдет только в момент завершения очередного импульса.

Mastino
Offline
Зарегистрирован: 03.12.2011

вот что starttopic`у нужно как я понимаю : http://accrochages.drone.ws/en/node/90
Посмотрит на диаграмму и скажет: - Теперь всё ясно!:)

Ivan
Offline
Зарегистрирован: 21.08.2011

>>Посмотрит на диаграмму и скажет: - Теперь всё ясно!:)

Нет, не ясно.

>>Только ответ такой будет весьма сомнительный по полезности...

Для меня полезна любая идея.

Спасибо Вам Fluffy, nestandart. Похоже, что через функцию pulseIn я смогу сделать.

Mastino
Offline
Зарегистрирован: 03.12.2011

Так какой же ясности вы желаете? для какой цели вам нужна эта информация? От этого зависеть и способ "считывания" .

loginex
Offline
Зарегистрирован: 19.02.2012

>Последовательность 0 и 1 ) Странный вопрос.

>Длинный сигнал, это 1, короткий сигнал это 0.

Вот я прям даже не знаю, посмотрел на картинку и лично мне видится это так:

высокое значение = 1, низкое значение = 0 (не, ну логично же?:))

в итоге и получаем 1111111110111 и т.д., что с этим со всем делать ? ну попробуйте разбить на байты, конвертировать в ASCII =)) может и получится "привет, мы пришли с миром" :)

Ivan
Offline
Зарегистрирован: 21.08.2011

Возможно Вы не поняли, мне нужно было прочитать бинарные данные, и мне это удалось, вот как я читаю:

while (1)
  {
    _duration = pulseIn(_pin, HIGH);
    if (_duration > 500)
      continue;

    if (_duration > 150)
    {
      //помещаем бит 1
      _data = _data | (0x8000 >> _positionBit);
    }
    else if (_positionBit == 0)
      continue;
    
    _positionBit += 1;
    
    if (_positionBit == 16)
    {
     Parse();
...
    }
  }

 

step962
Offline
Зарегистрирован: 23.05.2011

Ivan пишет:

Возможно Вы не поняли, мне нужно было прочитать бинарные данные, и мне это удалось, вот как я читаю:


    _duration = pulseIn(_pin, HIGH);

 

Ну, прочитать хоть что-то несложно. Сложнее прочитать правильно.

А ничего, что в вашем коде и длительности пауз между импульсами разные? 

Может быть "Это жжж неспроста" (с)?

Может быть, и в паузах какая-то информация зашифрована?

Может быть, только в паузах она и зашифрована?

А?

Ivan
Offline
Зарегистрирован: 21.08.2011

step962 пишет:

А ничего, что в вашем коде и длительности пауз между импульсами разные? 

Может быть "Это жжж неспроста" (с)?

Может быть, и в паузах какая-то информация зашифрована?

Может быть, только в паузах она и зашифрована?

А?

К моему счастью, низкие уровни не несут информацию, только высокие, длинный сигнал - 1, короткий - 0.

step962
Offline
Зарегистрирован: 23.05.2011

 Повезло.

Но с какой стати тогда паузы имеют различную длину?

nestandart
nestandart аватар
Offline
Зарегистрирован: 15.06.2011

Потому что передача ограничена по времени.

Если импульсы  несут иформативную нагрузку то в ограниченом промежутке времени  паузы будут равны 

промежутку времени минус импульсы.Однакио длинна каждой паузы будет зависеть от импульсов перед ней и

после нее.

Ivan
Offline
Зарегистрирован: 21.08.2011

>>Но с какой стати тогда паузы имеют различную длину?

Я так понял импульс+пауза  - постоянная длина.

step962
Offline
Зарегистрирован: 23.05.2011

nestandart пишет:

Потому что передача ограничена по времени.

Если импульсы  несут иформативную нагрузку то в ограниченом промежутке времени  паузы будут равны 

промежутку времени минус импульсы.Однакио длинна каждой паузы будет зависеть от импульсов перед ней и

после нее.

Эти утверждения имеют очень мало общего с действительностью.

Посмотрите хотя-бы информацию по UART-протоколу (а он является основой коммуникации между ПК и той же Ардуиной) - длина паузы никак не зависит "от длины импульса перед ней и после нее". Как длина паузы (LOW), так и длина импульса (HIGH). зависит лишь от чередования битов в пересылаемой информации.

Передается символ 'A' (0x41 или b01000001) и вы получаете паузу между импульсами в пять раз больше длительности этих импульсов, а передается символ 'U' (0x5A или b01010101) и длительности всех пауз в точности равны длительности импульсов.

Примерно такая же ситуация и в CAN, I2C, 1-wire. В протоколах ИК-управления длина пауз также зависит не от длины импульсов, а от передаваемой информации.

Было бы очень интересно ознакомиться с примерами протоколов, реализующих такое необычное соотношение между длительностями импульсов и пауз. Ссылочками не поделитесь?

leshak
Offline
Зарегистрирован: 29.09.2011

 Ivan до тех пор пока вы сами, в голове или с помощью бумажки и ручки , не сможете расшифровать эту картинку - ардуина вам абсолютно ничем не поможет. Ни pulseIn, ни attachIntterupt - ничего. Вначале нужно самому ПОНЯТЬ, а потом уже можно поручить эту работу ардино. "Сама" они ничего сделать не может. Только то что "вы ей приказали". 

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

А то, по крайней мере стартовый топик, у вас получился прямо классический анегдот:"Дорогие товарищи ученые, у меня в подполье третий год раздается стук! Объясните мне, почему и отчего он происходит?"

Ну или, на крайний случай. Уже методом научного тыка - махать руками перед датчиками, смотреть что получается на диаграмме, искать закономерности, делать догадки, проверять их.... ну а когда возникнет понимание "что же там передается", тогда и тут получится задать более конкретные вопросы "как это реализовать", так как будет уже известно ЧТО нужно реализовать.

carduino.ru
Offline
Зарегистрирован: 06.12.2011
Ivan
Offline
Зарегистрирован: 21.08.2011

Выше я написал, что у меня получилось. Я читаю и интерпретирую.