Радиоэлектронное. «Бен, ай нид хелп!». DS2408, 1-wire, HD44780. UPD: Решено 14.09.2015.

Mar 28, 2013 03:49

Ниже будет много-много радиоэлектронной мути. Если вам непонятны три последних слова из заголовка - смело можно не читать ;-)

Итак. Имеем DS2408 и дисплей, обычный 16х2 знакосинтезирующий, на аналоге HD44780.
Надо: подключить дисплей к моей 1-wire сети.
Началось всё с даташита на DS2408 - там указана схема подключения, но задействованы выводы P0..P4 DS2408, что мне не подходит (работаю с owfs, там нужны P4..P7).

Гуглим. Находим вопрос на Хабре, в котором у человека проблемы с выводом текста на экран. Проблемы в итоге успешно решены, та же самая схема из даташита + ссылки на рабочие схемы от HobbyBoards, которые он и собирал. Ссылки не открываются, списываюсь с человеком, он высылает мне свои архивы. Вот схема, которую он мне прислал.
Параллельно гуглю и нахожу еще одну схему - по подключению полный аналог того, что было выслано, только обвязка попроще и нет подключенных кнопок. Смотрим её здесь.

Берём в руки EagleCad и рисуем свою схему и свою плату.
Возможно, у меня замылился глаз и я не вижу какую-то элементарную ошибку в разводке платы - читающий, ПРОВЕРЬ, пожалуйста!!!
Вытравлена, собрана, подключена.
При попытке вывести что-то на экран - получаем вот такие вот глюки: при короткой строке и при длинной строке.

Внимание, вопрос: какого х-художника?!

Снова списываюсь с человеком из Хабровских Q&A - мало ли, он с такой же проблемой сталкивался. Нет, не было… Версии owfs сравнили - у меня более новая. Откатился на старую, видимых изменений не произошло. Как лезли глюки на экран, так и лезут.

Сам текст выводится нормально, артефакты начинаются строго в конце строки - картина похожа на отсутствие завершающего 0x00 и мусор в памяти - выводятся огрызки введённого текста, какие-то служебные символы… Мрак, в общем.

А, да: не всегда отрабатывает echo 1 > clear. Зато двойная запись 1 в файл home экран очищает. Если несколько раз попытаться вывести длинную строку на экран, экран перестаёт реагировать на любые действия с файлами - что clear, что home, что message и screen. Даже если отключить DS2408 от сети и включить обратно. Похоже на глюки софта, но owfs я откатывал до 2.8p12 и апгрейдил до 2.9 - ничего не меняется.

Пробую руками, дёргая PIO.ALL в файловой системе owfs, перевести дисплей в четырехбитный режим и проинициализировать его, натыкаюсь вот на что:
Нога RSTZ, подключенная к входу E дисплея, может работать в двух режимах: reset и strobe. Вручную её дёргать нельзя, к сожалению: либо автостроб после записи состояний всех PIO, либо как вход сброса микросхемы. В общем, вместо инициализации получается беда-беда, не вовремя оно стробирует…

Дисплей исправен, отлично работает и в восьми-, и в четырехбитном режиме с ATMega8 - собирал схему на коленке, проверял. Без проблем. Всё выводится, всё управляется.
DS2408 - новая, исправная. Уровни переключаются и по одному, и кучкой.
Плату проверил даже не дважды. И не трижды :) И визуально, и мультиметром, и паяльником на всякий случай ещё раз прошёлся.

Осциллографа у меня нет. Увы.
Логического анализатора тоже нет. Дважды увы.

Люди, помогайте, не дайте съехать крышей в попытках с ЭТИМ разобраться ;-)

UPD 15.09.2015 В общем, всё дело было в самодельном преобразователе из uart в 1-wire. Да, для простых задач этот вариант подходит, но дальше… На больших скоростях фронтам импульсов приходит полный писец. Купил DS2480B+ в качестве мастера - всё отлично заработало.

omfg, одноварь, радиоэлектроника

Previous post Next post
Up