Jump to content

    
Павел_Б

Как прослушать сразу 2 сигнала (RxD и TxD)

Recommended Posts

А есть ли где адаптер и софтина, чтобы кроме протокола записывали задержку между стоп битом TX и стартовым битом ответа по RX? Где то сбоит задержка прием- передача и портится последний-первый байт обмена. Но постоянно держать на линии осциллограф слишком накладно.

Share this post


Link to post
Share on other sites
9 минут назад, khach сказал:

А есть ли где адаптер и софтина, чтобы кроме протокола записывали задержку между стоп битом TX и стартовым битом ответа по RX? Где то сбоит задержка прием- передача и портится последний-первый байт обмена.

Это же элементарно делается в самой программе. Зачем что-то внешнее?

Share this post


Link to post
Share on other sites
On 8/12/2021 at 7:05 PM, turnon said:

Использую для этих целей 74HC08N,

Кстати, лично у меня работает даже без подачи питания на 74HC08. Случайно отключил питание и вижу дальше обмен дынными.
Подключены только 4 вывода (GND, 1А, 1В и 1Y). Видимо фантомного питания достаточно.

Edited by Павел_Б

Share this post


Link to post
Share on other sites
20 hours ago, jcxz said:

Это же элементарно делается в самой программе. Зачем что-то внешнее?

Не делается- во первых драйвер винды не позволяет получить точное время приема пакета в тиках проца, или нужен спец драйвер типа как от wireshark-a, во вторых все равно время будет конца приема а не начала. Простейший логический анализатор конечно это ловит, но для этого нужен отдельный комп и он все равно пропускает такие события ( не все регистрирует). По уму тут нужно прерывание по старт биту и считывать таймер по прерыванию и писать его в лог в заголовок к пакету данных.

Share this post


Link to post
Share on other sites
27 минут назад, khach сказал:

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

Это звучит прямо как откровение. Зачем ему отдельный комп? Почему он должен что-то пропускать, если он тупо пишет в комп байты (по одному биту на входной канал) с частотой 24 МГц, а вся обработка идет уже в компе над сохраненными данными?

Share this post


Link to post
Share on other sites
3 часа назад, khach сказал:

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

Чаво???? Ну я еще могу понять когда речь об анализе USB, но USART на 115200 он полностью ловит не пропуская ничего даже с пониженным до 1МГц семплированием чего большинство компов 10 летней давности даже не заметят. Оригинал,  имеющий на борту буфер, вполне справляется с анализом USB 2.0 на компах 5 летней давности без каких-то заметных пропусков.

Share this post


Link to post
Share on other sites
1 hour ago, artemkad said:

Чаво???? Ну я еще могу понять когда речь об анализе USB, но USART на 115200 он полностью ловит не пропуская ничего даже с пониженным до 1МГц семплированием

Ловить, в смысле оцифровать, может он и ловит, Cypress там данные льет по DMA, но софт ситуации с перекрытием прием- передача теряет. Т,е в логе обмена ошибка есть, а софт анализатора ее не зафиксировал. Тем более что такое событие бывает раз в пол-часа или реже. Осциллограф с триггером RS232 тоже не очень помагает, т.к гробится start condition и осцилл тупо не запускает развертку. LA1016 пробовали, но там тоже проблема с триггерами для таких событий, или мы не умеем триггера настраивать. Повторяю- надо поймать ситуацию когда передача слейва налезла на хвост передачи мастера. Интерфейс RS485 двунаправленный. Почему так происходит- пока ХЗ, будем копать фирмварь и мастера и слейва.

Share this post


Link to post
Share on other sites
4 часа назад, khach сказал:

но софт ситуации с перекрытием прием- передача теряет.

Никогда не наблюдал что-бы теряло. Я несколько лет работал на этой дешевке и взял более оригинальную версию только когда понадобилось работать с двумя CAN-ами одновременно. Работает абсолютно честно.

4 часа назад, khach сказал:

Т,е в логе обмена ошибка есть, а софт анализатора ее не зафиксировал.

Дык может проблему не там ищите?

Share this post


Link to post
Share on other sites
4 часа назад, khach сказал:

Повторяю- надо поймать ситуацию когда передача слейва налезла на хвост передачи мастера. Интерфейс RS485 двунаправленный.

Ну, теоретически, если наблюдать ситуацию одновременно со стороны передатчика мастера и слейва возможна крайне трудноуловимая ситуация когда слейв начинает передачу до завершения стоп-бита мастера. Т.е. поймать-то её поймаешь, но найти в потоке будет сложно потому как логику простого триггера  тут не настроишь... Хотя, там вроде можно смотреть на вход управления передатчиком если им корректно управляется уже после завершения отправки байта(а не освобождения  буфера UART)

Share this post


Link to post
Share on other sites
5 minutes ago, artemkad said:

возможна крайне трудноуловимая ситуация когда слейв начинает передачу до завершения стоп-бита мастера.

Угу, кто то начинает "орать" в шину невовремя и при этом неизвестно кто- слейвой на шине несколько десятков. Самое обидное, что в протоколе предусмотрено в пакете указывать адрес "орущего" но эта часть как раз и интерферирует с хвостом передачи мастера. Если бы предусмотрели при описании протокола адрес дублировать в конце пакета перед КС то давно бы поймали виновника без всяких анализаторов.

Share this post


Link to post
Share on other sites
3 часа назад, khach сказал:

Угу, кто то начинает "орать" в шину невовремя и при этом неизвестно кто- слейвой на шине несколько десятков.

Слейвы свои или кто-то другой пишет их программы? Если свои, то можно или записать в лог или просто выдать индикацию того, что переданное не равно принятому.

Share this post


Link to post
Share on other sites
6 часов назад, khach сказал:

Угу, кто то начинает "орать" в шину невовремя и при этом неизвестно кто- слейвой на шине несколько десятков.

Что то вы путаетесь в показаниях... То пишете:

15 часов назад, khach сказал:

Не делается- во первых драйвер винды не позволяет получить точное время приема пакета в тиках проца, или нужен спец драйвер типа как от wireshark-a, во вторых все равно время будет конца приема а не начала.

то уже "слэйвов несколько десятков" и неизвестно кто выходит на передачу.

Или у вас "слэйвы" - это компы с виндой? И их несколько десятков???  :shok:

Если это всё-таки собственные устройства с вашей программой, то ещё раз возвращаемся к:

Что мешает так сделать? И причём тут wireshark?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.