Выбрать главу

Free Serial Port Monitor — хорошая программа. Но показывает она не то, что пришло в буфер COM-порта, а то, что прочитала использующая его программа. Поэтому надо было не покупать новую микросхему MAX232, решив, что предыдущая сгорела, а просто добавить в отладочную программу чтение.

Altium Designer — тоже хорошая программа. Только вот все библиотеки в ней созданы в расчёте на английскую систему мер. Если вы используете десять деталей из стандартной библиотеки и одну свою, подумайте о том, обязательно ли делать её в СИ. На чертеже очень трудно заметить, что четыре проводка к пятивыводному разъёму подцепились, а один остался в полупикселе от положенного места. В итоге на плате не оказалось одной дорожки. Хорошо, что использовалась она только для программирования! Спасла конструкция «проволока, с одной стороны прикрученная к штырьку для программирования, иголка и рука, тыкающая в малюсенькую ножку микросхемы».

От аппаратных глюков никто не застрахован, даже если микросхемы покупались у поставщика, работающего напрямую с производителем. Прежде чем десятый раз просматривать собственный код, который идеален, пишите тестовые программы. В моём случае проблема была в том, что при замыкании одной из ножек на землю микроконтроллер начинал слать в USART мусор (точнее, циклический мусор: каждые три байта всё повторялось, но от этого не легче). Хорошо, были свободные ножки, так что ситуацию спасло припаивание проводка, разрезание дорожки и исправление программы.

Если во всей партии из сорока микроконтроллеров глючат одни и те же четыре ножки, это не значит, что вам подсунули эксклюзивно подобранный брак. Надо просто почитать документацию и выяснить, что, помимо используемого вами интерфейса SPI, есть ещё и JTAG, который работает именно через эти ножки. Его можно отключить, но по умолчанию он включён.

А ещё источник постоянного тока (5 В, 12 А) не любит, когда от него требуют то 0 А, то 2 А (не говоря уж обо всех двенадцати) с частотой всего полкилогерца, да ещё не по синусоиде, а ступеньками. Нет, сам источник не сгорел. Но вот напряжение от таких скачков чувствовало себя нестабильно, а вместе с ним и блютус-модуль, в результате чего связь с компьютером терялась. Эта проблема оказалась самой лёгкой: я впаял перед модулем диод, чтобы заряд обратно не утекал, а падение напряжение на полвольта скомпенсировал уменьшением токоограничительного сопротивления, и всё заработало. Интересно, что микроконтроллерам ATmega16 скачки были нипочём, хотя по документации они должны были отключаться раньше модуля.

Это, конечно, далеко не все трудности, с которыми пришлось столкнуться (или придётся: работа ещё не совсем закончена). Надеюсь, своим рассказом я уберегу какого-нибудь начинающего разработчика от нескольких дней битья головой о стену.

#5038: Весёленькое Рождество

19:45 24.12.2010, IT happens

Послали винду (виртуальная машина на сервере) в перезагрузку. Она благополучно сдохла и не поднялась. Пинги проходили, но не более того. Думали, ломали голову, били в бубен.

Ребятам пришла свежая идея. Винда на виртуалке стоит норвежская, а сегодня 24 декабря, канун Рождества. Винда празднует, судя по всему.

net send * Merry Christmas!

Помогло. Честно.

#5039: Код-самоед

19:45 24.12.2010, IT happens

Ведём разработку на ПЛИС известной компании. С появлением встраиваемых процессоров возможности построения цифровых систем стали практически безграничными. Работа сложная и интересная. Приходится совмещать изменения железа и софта: переконфигурировал процессор или шину памяти — переписывай программу. А уж насколько богатые возможности для глюков, когда не поймёшь, где проблема...

Из последнего: обратили внимание на неполадки с памятью в стандартной конфигурации. Запустили тест памяти — всё зависло. Посмотрели размер адресного пространства: 64 МБ, а на плате физически присутствуют только 32. Тут у нас возникли некоторые подозрения. Оказалось, что в примере от производителя, кроме неверного размера памяти, ещё и банки памяти адресованы вперемешку. Выходит, что тест памяти стирает из неё сам себя, и процессор исполняет какие-то случайные инструкции. Интересно, что будут писать о глюках через десять лет, если подобная технология станет повсеместной?