Pull to refresh

Comments 26

Чем эта реализация в итоге отличается от обычной отладки? Как по мне -- ничем. Первый вариант поэтому и делается на отладке всегда.

К примеру, выполняется какая-то функция в программе или нет.

Для этого лучше всего использовать дебаггер, т.к. функция может выполняться достаточно быстро и обычным включением светодиода на время работы функции можно не уследить. А светодиода достаточно одного двухцветного красный-зеленый: моргающий зеленый - нормальная работа, желтый - предупреждение, красный - ошибка.

Зато светодиоды могут быть полезны для базовой профилировки. Включение и выключение светодиода - это одна запись в память, что очень неинвазивно и позволяет осциллографом смотреть, сколько времени и в каком порядке функции исполняются.

что очень неинвазивно и позволяет осциллографом смотреть, сколько времени и в каком порядке функции исполняются

Осциллографом можно и без светодиодов. А если функция выполняется как минимум с десяток раз в секунду, то визуально по светодиоду уже что то отследить невозможно.

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

Осциллографом можно и без светодиодов...

AVR'ки только так дебажить и остаётся)

Именно поэтому практически не имею с ними дело. =)

Если выходы цифровые, то можно использовать и логический анализатор. И это действительно удобнее лампочек при отладке таймингов или выполнения кода в динамике. Однако, лампочки тоже бывают полезны, если отлажиать логику кода.

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

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

Раньше было примерно два варианта: в Резоните быстро и дорого и у JLCPCB долго и дешево. И еще вариант для любителей хардкора делать плату самому ЛУТом или фрезером. Сейчас JLCPCB по-моему больше не дружит с заказчиками из России, так что все грустно. Может знающие люди подскажут к каким китайцам еще можно обратиться за вкусной ценой или где искать посредника для заказов с JLCPCB.

В смысле не дружит? Очень даже дружат и карту Мир принимают. Заказывал не так давно, сделали быстро, ехало долго.

Я вижу вот такую картинку при оформлении заказа. Какое-то время, насколько я знаю, у них еще можно было заказать платы, но без монтажа компонентов. Сейчас видимо совсем нельзя.

Доставка недоступна

Ходит слушок, что nextpcb отправляет платы обычной почтой, а оплату принимает через алиэкспресс.

"Не так давно" - это наверное до марта месяца?

"не понял, что полезного я должен был вынести из статьи "

Как же так, а 3 светодиода, да и таблица с кодировкой...

Надеюсь, что народ понял, что это сарказм. А в целом это опять статья - курсовая очередного студента.

Про три ошибки это понятно. Каждой ошибке присвоен конкретный светодиод.
А про 8 ошибок расскажу подробнее. Ошибку можно закодировать
комбинацией светодиодов смотри табличку ниже

7 ошибок + "ошибок нет".
регистрировать лучше логич. анализатором.
если он подключён к ПК, то "памяти" у него хоть 128 Гб.

и все варианты ошибок по хронологии можно посмотреть,

и "длительность" каждой ошибки/события, и т.д.

дешёвый вариант анализатора, которым я сам пользуюсь,
простой чип FTDI_2232_HL + PulseView.
(i2c анализирует хорошо, UART иногда ошибается )

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

одна строчка кода может наломать Вам дров.
строчка кода исполняется на частоте ядра.

Ядро может "бежать" в 2, 3, 4 раза быстрее периферии,
в итоге диод может "не моргнуть", "моргнуть со смещением".
в критических местах обязательно использовать

ассемблерные вставки "синхронизация арбитра шин"
например на STM32 это
asm("DMB\r\n");
asm("DSB\r\n");
asm("ISB\r\n");

и помнить, что в "эти моменты", ядро может просто ждать и ничего не делать.

для высокоточных замеров придётся использовать "таймер",

в начале функции запустить, в конце остановить,

а потом "на фоне" отправить его показания в USART

Не знаю где вы берёте нормальные анализаторы, но все с чем я пытался ознакомится, ни один не работает в реальном времени. Т.е. нельзя посмотреть на экране то что происходит вот прям сейчас, ты запиши а потом анализируй.... это те что подключаются к ПК. Кроме того, сильно они опираются на возможности ПК... почему-то на любой скорости всегда вылазит ошибка "переполнение буффера", означающая что данные не успевают передаваться(даже на скорости 1Квыб/сек) и виной тому может быть USB-контроллер, а собственной памяти на этих приставках не более 2кб. Почему? Во времена когда про DDR2 объёмом в 1Гб уже начинают забывать...

мой анализатор это голая ИМС FTDI_2232HL, на плате которую я развёл за 1 вечер, а потом утюгом воплотил в реальности.

плата 2 слойная, одна сторона сплош земля, а на второй дорожки.

без проблем работает до 10 МГц. Возможно у Вас инвалидоуз мешает нормальной работе.

эта связка работает относительно сносно, как я писал выше, i2c декодирует нормально, USART иногда не правильно.

Если Вам надо "здесь и сейчас", то анализатор как бы не отменяет того, что СИД могут оставаться на плате и светить для наглядности.
Если хочется смотреть на СИД, делайте программную задержку, чтоб они не могли быстро погаснуть.

Ко всему выше сказанному , СИД и логич. анализатор ни коим образом не препятствуют параллельному подключению ослика,
И ДАЖЕ двух осликов ! один в режиме "разовая развёртка",

второй в постоянной, и тригер по "фронту/спаду" в режиме "норм".

DreamSource Lab. У меня есть как USB2.0 так и USB3.0 версии. Оба в стриме отлично пишут десятками минут на максимальной скорости. 3.0м я записал 32 канал IDE ATAPI, например, 70 секунд:

Тринольный - да. Дванольный на 16 входов вполне демократичен и его достаточно большинству. Можно купить не Про и доработать до Про. У меня есть и настоящий Про, и переделанный. Делал по этой инструкции: https://habr.com/ru/articles/483496/

Есть ещё вот такая инструкция: https://habr.com/ru/articles/718212/

В остальном, удобный софт и легкое написание декодеров подкупает.

Вспоминается как делали мы что-то типа умного дома и для диагностики применяли аж целую светодиодную ленту.

Сигналов ошибок на нее море можно было выводить.
А сама передача шла по DMA и не останавливалась даже когда процессор зависал.

Распечатываем схему на бумаге и раскладываем компоненты. Обычно таким методом убираю одну из итераций производства платы.

Статья "не о чем". Минимум полезной информации.

От себя могу добавить:

1) Демоплата как на рисунке "солнышком" - наихудший вариант. Нужно делать нормальную землю и шины питания.

2) Громадная куча перемычек - куча гемороя на этапе отладки. Я перемычки закладываю на линии RX-TX для возможности менять их местами. Остальное при макетировании можно и проводами сделать.

3) Распечатайте плату и разложите на ней компоненты. Убедитесь, что корпуса чипов "правильные". И что они не разведены "к верху брюхом". Особенно с низу.

4) Светодиод конечно хорошо, но что делать если он не горит? Светодиод хорош для индикации режима работы. Для всего остального разводим SWD ( или аналог) и используем осциллограф и логический анализатор. Или в крайнем случае выплюнем строчку в отладочную консоль.

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

Купите уже своим программистам внутрисхемный отладчик и не мучайте их обратной связью через три светодиода :)

В-третьих, три светодиода позволяют указать или 3 ошибки одновременно или 8 по одной.

Строго говоря, 3 светодиода могут указать не 8, а 7 ошибок по одной. 8-е состояние - это отсутствие ошибок :)

Sign up to leave a comment.

Articles