Решено Важно! Выбор осциллографа.

Статус
Эта тема решена! Перейти к решению…
В

Васисуалий

Команда форума
  • 22 Фев 2021
Postal2, ну давай устроим ей тест. Я залью это в ПЛИС и глянем на все! Не будет правильно работать, я удивлюсь и исправлю. Лепил я это давно и долго не пользовался, уже и забыл, что и как там я задумывал... Вечером попробую, счас некогда...
 
P

Postal2

  • 22 Фев 2021
Васисуалий сказал(а):
уже и забыл, что и как там я задумывал...
Схема работает в стандартных условиях, точно так же, как и "фоточувствительный детектор" в виде микрофона рядом с акустическим выключателем. Вопрос в том, как и что называть. Никаким боком твоя схема повторные старты не выделит, а только любую активность после стопа.
Васисуалий сказал(а):
Это детектор старт-кондишн на I2C.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2, ну давай разбираться...

Вот схема... Ее пришлось перерисовать в Квартус заново т.к. найти тот исходник я не смог. Потерялся где то...

детектор1.jpg


Вот мой "тестбенч". В качестве испытуемого I2C взята какая то плата от стирки. Подано питание только 5 вольт и сняты сигналы SCL и SDA...

тест.jpg


Через схемозу все отправляется в "Салию" для проверки и контроля...

Вот скриншот из "Салии"

screenshot.jpg


Все картинки увеличиваются и там можно рассмотреть, как что работает...

Счас немного увеличу интересное...

кусок салии.jpg


Вот тут хорошо видно, что схема генерит высокий уровень между событиями "старт-кондишн" и "стоп-кондишн". В обмене еще есть "рестарт-кондишн", который схема не видит, но этого и не заявлялось!

Теперь вернемся к нашим баранам к твоим высказываниям...

Postal2 сказал(а):
Васисуалий, позорище выложил. Совсем всё плохо.

Что плохо? И в чем позорище?

Postal2 сказал(а):
где-то спёр и не понял, чего именно детектор.

А вот отсюда я хочу понять более детально! Я что то украл? Т.е. ты меня обвинил в краже?

Тогда послушай (прочитай) мой тебе совет... Не ровняй всех по себе! Если тебе для решения такой простой задачки может быть надо что то украсть, я не виноват. Я могу и это и еще что иное сделать сам. В следующий раз, когда тебе захочется написать замечания к моим постам, вспомни этот случай!


Postal2 сказал(а):
Васисуалий, позорище выложил. Совсем всё плохо.

Вот ты сейчас и есть позорище! Обосрался как маленький...
 
C

chignon

  • 24 Фев 2021
Васисуалий, чет я нихрена непонял. В твоем нарисованном триггере вход на какой фронт срабатывает? Как бы привычно, что на растущий, а тут... :upset:
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Postal2, ну давай разбираться...
Васисуалий, ты мало того, что хрень сделал, так ещё и по какой-то причине бочку на меня катишь? Схема твоя для многих целей достаточна, при стандартных посылках старт-стоп она работает как тебе надо (я написал как). Вопрос в том, что это не детектор старт-условия! Тебе это понятно?
Васисуалий сказал(а):
Это детектор старт-кондишн на I2C.
Ты обосновываешь название тем, что схема - работает. Ну и что?
В третий раз (N3) тебе пишу, ты назвал "фотодетектором" микрофон, рядом стоит акустический выключатель, ты хлопаешь, свет включается и выключается. Тебе говорят (в 3-ий раз!) - микрофон не есть фотодетектор. Ты не согласен, мотивируя тем, что импульс с него синхронизирует твоё оборуование с включением именно света.
Я не понимаю, что нужно ещё тебе объяснить.
_
Вообще сигнал стопа необязателен, и его вообще может не быть в системе с одним мастером на шине.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2 сказал(а):
Ты обосновываешь название тем, что схема - работает. Ну и что?

О как! Ну да, схема работает, делает это и я обосновываю название тем, что схема это делает! А надо как то иначе? :shocked:

Postal2 сказал(а):
Тебе говорят (в 3-ий раз!) - микрофон не есть фотодетектор. Ты не согласен, мотивируя тем, что импульс с него синхронизирует твоё оборуование с включением именно света.
Я не понимаю, что нужно ещё тебе объяснить.

А я не понимаю, что я должен понять? Схема работает, но она не она или называется не так или что? Причем тут микрофон? Схема срабатывает по старт-кондишн, это так? Я что написал, что это микрофон? Или это детектор именно того, на что она и срабатывает? Тогда в чем вопрос?

Postal2 сказал(а):
Вообще сигнал стопа необязателен, и его вообще может не быть в системе с одним мастером на шине.

Вообще то мало ли чего может быть или не может! Я вот не помню такого прикола с I2C, что бы там не нужен был стоп, но может быть я чего то и не видел... Уточню - отпишусь. Схема же не может не реагировать на сто т.к. она потом так же не отреагирует на старт. Впрочем, если нужна другая схема, то мне не составит труда ее придумать. Эта же схема придумывалась еще тогда, когда я ПЛИС видел в третий раз! В ней много косяков, я не спорю. Но она рабочая! Я ее пару раз использовал и тогда она меня выручила.
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
А надо как то иначе?
Надо верхнюю часть схемы исправить. Допустим, я поверил Васисуалию на слово, что он сделал именно
Васисуалий сказал(а):
детектор старт-кондишн на I2C.
И начал формировать посылку, и забыл старт-кондишен поставить в начале, а прямо с байта начал. Что в этом случае покажет мне детектор уважаемого Васисуалия? А он мне покажет, что всё хорошо, т.к. условие регистрируется. Только вот схема моя не работает.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
chignon сказал(а):
Васисуалий, чет я нихрена непонял. В твоем нарисованном триггере вход на какой фронт срабатывает? Как бы привычно, что на растущий, а тут... :upset:

Почитай спецификацию на I2c... Там есть два особых случая - старт и стоп кондишн. Все, что между ними от старт до стоп, это посылка, все, что между стоп и старт - мусор (если он есть). Посмотри мою картинку и увидишь, что схемка срабатывает четко и генерит импульс длительностью ровно в одну посылку от старта до стопа. Цель - воткнуть этот импульс на вход ослу и засинхронизироваться по началам посылок. Все! Других функций не предполагалось...

Добавлено:

Postal2, давай подойдем к вопросу проще. Что надо исправить в схеме и как ее испытать, что бы понять, где и какие проблемы с этой схемой? Я готов...
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Что надо исправить в схеме
Вот у тебя стоп детектируется правильно. Сделай так же верх. Проверять такие вещи не имеет смысла - всё видно визуально.
Васисуалий сказал(а):
что между стоп и старт - мусор (если он есть).
Вот на этот мусор у тебя сейчас срабатывает, исправь это дело. Я понимаю для себя сляпать по-быстрому. Нельзя людям вываливать в таком виде.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2 сказал(а):
забыл старт-кондишен поставить в начале, а прямо с байта начал. Что в этом случае покажет мне детектор

Ты внимательно посмотри доку на I2C! Как ты сможешь что то начать передавать с байта, если изначально шина находится в двух единицах, а бит передается по фронту (райзу) CLK? Ты как собираешься сделать райз на проводе, где висит 1? Тебе надо "опустить" CLK? Ну вот тебе и старт! А в конце будет еще и стоп!

Добавлено:

Postal2 сказал(а):
Вот на этот мусор у тебя сейчас срабатывает

Нарисуй условие этого мусора.

Вот картинка прямо из педивикии:

600px-I2C_data_transfer.svg.png


Или ты имел ввиду, что SCL падает при высоком уровне SDA? Ну и нет в этой посылке старта. Значит старт был раньше.

Postal2 сказал(а):
Нельзя людям вываливать в таком виде.

В каком виде? Вот я взял реальные условия - какую то там плату и прилепил эту схему. Она работает? Если подать ее выход на вход осла, работать будет? И что не так?
 
  • Like
Реакции: DimaSet
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Нарисуй условие этого мусора.
Просто передача нулевого бита интерпретируется твоей схемой как старт-условие. Это очевидно всем, кроме почему-то тебя.

Добавлено:

Васисуалий сказал(а):
Ты как собираешься сделать райз на проводе, где висит 1?
Сделай то же, что у тебя на стопе, только инверсию в нужные места.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2 сказал(а):
Просто передача нулевого бита интерпретируется твоей схемой как старт-условие. Это очевидно всем

Ну кому "всем", я стесняюсь спросить? :lol: Тут кроме нас и chignon, никого и нет! Ладно, давай вечером доведем схему до ума... Не собирался я этого делать, но придется разобраться...
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Ну кому "всем", я стесняюсь спросить?
Когда речь идёт о вещах посложнее - я с тобой соглашусь. Но логику работы такой простой схемы видит даже обезьяна, и исправить её для правильной работы - дело пяти минут.
 
C

chignon

  • 24 Фев 2021
Postal2 сказал(а):
Просто передача нулевого бита интерпретируется твоей схемой как старт-условие. Это очевидно всем, кроме почему-то тебя.
Нулевого - в смысле адресности, т.е. первым передающегося? При условии, что он = 1. Дак там вроде старшие вперед... ?
Я ж почему про триггер спросил (не дождался ответа).
А на картинках мелко всё, не видно.
 
C

cyberbob777

  • 24 Фев 2021
Васисуалий сказал(а):
Ну кому "всем"
А внимательно читающие не считаются? :)
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2, а вот нарисуйка ты мне, что такое передача нулевого бита?

Добавлено:

cyberbob777, тогда обьясни мне, что от меня хочет Postal2, ? Как это на I2C передать нулевой бит без старта и на что отреагирует моя схема?
 
P

Postal2

  • 24 Фев 2021
chignon, если ты сам софтово делаешь I2C, то у тебя отдельно "подать старт", "передать байт" и т. д. Вот если ты просто передаёшь байт, то на первом же нулевом бите в этом байте - схема Васисуалия сообщит о старт-условии.
Васисуалий сказал(а):
а вот нарисуйка ты мне, что такое передача нулевого бита?
Ужас какой. Это действительно не твоя схема что ли?

Добавлено:

Васисуалий, я ж тебе в этой теме раньше выкладывал исходник I2C. Посмотри внимательно, там и комментарии даже есть.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Нет, ты мне осцилку нарисуй или табличку, что бы я понимал, что именно не так детектируется?

Изначально I2C находится в состоянии SCL=1 и SDA = 1 так?
А переход SDA из 1 в 0 есть старт!
Тогда у тебя есть еще ТОЛЬКО один вариант развития события не по сценарию - переход SCL в 0 при SDA=1.... И потом еще можно SDA перевернуть в 0 уже при SCL=0, так вот с прискорбием сообщаю, что схема на это НЕ РЕАГИРУЕТ! Т.е. на выходе TRG единица не выставляется! Единица будет выставлена ТОЛЬКО при условии перехода SDA в 0 при условии, что SCL=1. Все!

Это я вот сейчас проверяю подавая на вход сигнал с In System Sources end Probes Editor_a (ISSPE), есть такой инструмент для относительно крупных ПЛИС. В Циклоне он как раз есть...

Для всех не знающих или не разбирающихся в основах работы I2C рассказываю.....

Есть два уникальных события, которые называются "СТАРТ" и "СТОП". Т.к. шина может быть занята многими устройствами и иметь несколько ведомых устройств, то каждый ведущий ДОЛЖЕН начинать передачу своей посылки с условия СТАРТ и заканчивать посылку условием СТОП. Между этими двумя событиями шина считается занятой. После события СТОП шина свободна и может быть занята другим ведущим.

Так вот событие СТАРТ, это когда при высоком SCL шина SDA падает в 0 и событие СТОП, это когда при высоком SCL шина SDA подпрыгивает в 1! Все остальные изменения SDA происходят только при низком SCL.
 
C

chignon

  • 24 Фев 2021
Postal2, в том и дело, "единичный" нужен бит, после старта, чтобы триггер сработал.... ну в этой схеме, как Василий нарисовал.... :pain25:
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Единица будет выставлена ТОЛЬКО при условии перехода SDA в 0 при условии, что SCL=1. Все!
Васисуалий, подумай ещё раз. Представь ситуацию, что при передаче бита sda стоит нулём и поднимается scl.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Postal2 сказал(а):
Васисуалий сказал(а):
Единица будет выставлена ТОЛЬКО при условии перехода SDA в 0 при условии, что SCL=1. Все!
Васисуалий, подумай ещё раз. Представь ситуацию, что при передаче бита sda стоит нулём и поднимается scl.
А мне представлять не надо! У меня плата с реально работающей схемой прямо передо мной лежит и программа отладки на компе прямой сейчас работает. Только я не понимаю, как это "поднимается"? Откуда он у тебя поднимается, если шина изначально находится в состоянии покоя т.е. SCL=1 и SDA =1.

Ну хорошо. Вот такая комбинация... Опускаю SCL, за тем SDA... Схема молчит, а потом поднимается SCL.... Да срабатывает.
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Опускаю SCL, за тем SDA... Схема молчит, а потом поднимается SCL.... Да срабатывает.
Не должно.
В смысле, надо переделать схему нормально, чтобы этого не было.
 
В

Васисуалий

Команда форума
  • 24 Фев 2021
Кому нужно? До того момента, как ты написал мне что

Postal2 сказал(а):
Никаким боком твоя схема повторные старты не выделит, а только любую активность после стопа.

оно и тебе не нужно было! А потом оказалось, что только это.... Ну хорощё! Будет время покумекаю... С меня не убудет.....
 
P

Postal2

  • 24 Фев 2021
Васисуалий сказал(а):
Будет время покумекаю...
Я тебе второй раз пишу - сделай как детектор стопа, чего там "кумекать". scl подай так же на D верхнего триггера и отцепи от входного AND. И схема стала нормальной.
 
K

Konstantin_18

  • 24 Фев 2021
Васисуалий, МСМ Postal2 пытается указать тебе на неточное соответствие работы твоей схемы
спецификации I2C.

Ты заявил свою схема как "Детектор старта".

ИМХО она должна ПОСЛЕДОВАТЕЛЬНО проверять следующие условия:

1й триггер ( условный) обе линии в 1 -> начало работы, разрешение дальнейшего ожидания.
2й триггер ( условный) - Fall на SDA, при стоячем в 1 SCL -> ожидание Falla на SCL
3й триггер ( условный) - Fall на SCL -> Выдача сигнала "СТАРТ пришел!"


UPD.
2й триггер ( условный) - Fall на SDA, при стоячем в 1 SCL -> Выдача сигнала "СТАРТ пришел!"

Порядок срабатывание триггеров - СТРОГО один за другим.

ПС. Уточни плз. как срабатывают триггеры на твоей схеме по входу Clk - уровень или фронт и какой именно ?
Я не могу понять как именно она работает.
 
Статус
Эта тема решена! Перейти к решению…

Верх Низ