Непонятные помехи в работе регистров 74HC165

ШВЕД

всем привет,

у меня вопрос по очень странной (нештатной) работе цифрового устройства.

ДАНО: девайс собственной разработки на базе ATMega8A (о нем расскажу подробно в отдельной ветке чуть позже; сейчас пока без деталей).
в 2х словах задача девайса сводится к цикличному опросу 17 входов.
реализовано это так:

  • 17 входов через резисторы притянуты к VCC (5В)
  • ко входам подключено 3 сдвиговых регистра 74HC165D (на чтение).
  • регистры соединены цепочкой
  • последовательный поток с регистров поступает на МК
  • МК работает на частоте 8МГц, 5В; тактирование регистров программное
  • девайс смонтирован на 2-сторонней печатной плате; защитная маска нанесена на обе стороны
  • дорожки разведены в центральной части платы; периферийные области не используются и имеют металлизацию (медь на краях платы не вытравливал)
  • минимальное расстояние от периферийной (=нерабочей) меди до дорожек = не менее 1 мм
  • “нерабочая” медь на обоих сторонах печатной платы не имеет контакта (не прозванивается)

ПРОБЛЕМА: в целом устройство работает исправно: при появлении низкого уровня на входе (т.е. вход замыкается на землю) регистры слаженно транслируют эти “нули” на вход МК.

однако стоит лишь дотронуться пальцем до нерабочей меди то тут же происходит ложное срабатывание по всем входам!

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

в момент касания физическое напряжение на входах относительно земли не меняется и остается притянутым к VCC.

кое-какие замеры потенциала относительно GND питания:
(а) МЕДЬ <> GND = 0.1 мВ
(б) МЕДЬ <> GND = 0.1 ~ 3.2 мВ при касании пальцем.
в один момент разница подпрыгнула аж до 16.5 мВ в момент ОТПУСКАНИЯ пальца.

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

ничего подобного пока еще не встречал и грамотно объяснить происходящее не могу. поэтому с интересом выслушал бы мнения более опытных товарищей.

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

// возможно проблема не в регистрах а в МК. но контакты на МК вроде не прозваниваются ни с чем “лишним” по соседству. МК в корпусе TQFP. Нога которая отвечает за ввод потока данных с регистров что с подтяжкой к VCC, что без подтяжки - все равно глючит. Видимо “кривой” поток все же идет с регистров…

Prsh
ШВЕД:
  • девайс смонтирован на 2-сторонней печатной плате; защитная маска нанесена на обе стороны - дорожки разведены в центральной части платы; периферийные области не используются и имеют металлизацию (медь на краях платы не вытравливал) - минимальное расстояние от периферийной (=нерабочей) меди до дорожек = не менее 1 мм - “нерабочая” медь на обоих сторонах печатной платы не имеет контакта (не прозванивается)

Не знаю в чем дело, но это все к делу отношения не имеет. “Медь” может быть заземлена или нет - не важно. А если не пальцем касаться, а например авторучкой? Может где контакт нарушается или образуется? TQFP говорите…Может дляначала плату промыть спиртом и лупой внимательно посмотреть?
Проверьте что все микросхемы (1. “входы”, 2 регистры, 3. МК) имеют хороший контакт с (одним!) земляным проводом

ШВЕД

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

Prsh

Опишите яснее что происходит. Включили. Подали на входы “0”. Какое напряжение на входах? Какое на выходе регистра? Какое на входе МК?
Дотронулись пальцем. Какие теперь стали везде напряжения? Чем вы меряете напряжения?
Я бы проверил монтаж, пропаял все ножки…
Кто управляет сдвигом в регистре? Контроллер? Отсоедините МК от регистра. Управляйте вручную сдвигом и меряйте что идет на выход регистра

ШВЕД

Аркадий, далеко не все можно сделать тк устройство уже очень компактно спаяно. к тому же в SMD формате. но постараюсь по порядку:

  1. включил. питание VCC = 5В. на входах никаких сигналов нет (физически ни к чему не подключены и висят в воздухе). тк подтянуты к VCC то и напряжение на входах соответственно = VCC
  2. регистры тактируются МК (F = 8Mhz) поэтому отловить выход регистров не могу. чтобы тактировать вручную придется распаивать что крайне нежелательно. регистры и МК хорошо пропаяны.
  3. для замеров в моем распоряжении только стандартный мультиметр.
    -------------

между регистрами и МК нету ничего, т.е. связь прямая без каких-либо дополнительных источников/потребителей сигнала.
то что одновременно “срабатывают” сразу все выходы (в момент касаниия и соответственно последующего удержания пальца на меди) свидетельствует о том что в МК последовательно отправляются “нули”. физически же состояния входов никак не меняется, V = VCC на всех.
следовательно делаю вывод что “косяк” где-то на выходе с регистра(ов).
но вот природа косяка мне непонятна…
палец = “емкость”… но эта медь ни с чем не соединена… к тому же она находится на значительном расстоянии от регистров, хотя и окружает их по периметру.
частота работы регистров: если очень грубо то весь цикл прошивки выполняется за 500-1000 тактов. на частоте камня в 8 Мгц получаем приближенную частоту работу регистров = 16-8Кгц. очевидно этой частоты недостаточно чтобы как-то значимо влиять на медь (если считать эту медь эквивалентом индуктивности)…
но почему тогда глюк проявляется при касании ЛЮБОГО слоя (которые не связаны друг с другом)? вроде как только индуктивность под подозрения попадает опять…

обычная проблема электротехники - плохой физический контакт - тут вроде как не объясняет ничего.
да и все контакты пропаяны, очищены… ничего не коротит итд… в общем мистика какая-то…

Prsh

Извините, но я все равно не уверен что понимаю феномен как вы его описываете. Что значит “одновременноп срабатывают все выходы”? Чьи выходы? Что значит “срабатывают”? У вас как я понимаю (если говорить несколько упрощенно) соеденены 3 устройства:

  1. неизвестная мне схема с выходами 1,2,3…8;
  2. регистр со входами _1,_2,_3…_8 ,выходом А и управляющим входом Б
    3 Контроллер управляющий уровнем на Б, на вход С которого подается сигнал А.
    1,2,3…8 подтянуты к 5В
    И что? Где какие уровни? Что меняется при касании?
    (я понимаю что на выходе регистра А при работе МК все меняется и без скопа понять сложно, но надо как-то понять в какой именно точке из перечисленых что-то не так). А программа в МК вообще бежит нормально?
    Никакие емкости и индуктивности проводников в подобной схеме сказываться не могут!!!
    в подобной схеме может быть:
  3. неисправна микросхема
  4. нет контакта, лишний контакт
  5. неправильно работает программа
  6. плохое питание
    Это вобщем. А каким образом влияет палец - это действительно загадка. Ну может быть палец влияет на МК (например в качестве тактового генератора у вас используется кварц с конденсатором, который плохо припаян или не того номинала, и процессор вначале не работает вообще, а когда подносите палец, то он работает как емкость и процессор запускается…) Можно гадать сколько угодно.
    Постарайтесь мыслено разбить схему на замкнутые в себе части и локализовать проблему. В крайнем случае - придется резать дорожки, ничего не поделать… или найдите осциллоскоп.
Dinotron

В данном случае лучше один раз увидеть( хоть jpeg платы) чем 100 раз услышать. Нутром чую дело в предохранителях. Или конденсаторы забыли или земля не очень земля.

ШВЕД

Аркадий, спасибо за участие в столь поздний час.
вы практически правильно обрисовали за исключением “1”: никакой внешней схемы не подключено.
получается простая цепочка: МК << 3 регистра << 17 штыревых разъема. к разъемам ничего не подключено, эти выходы притянуты к VCC.
МК работает от внутреннего генератора, внешний резонатор не используется.

(а) штатный режим
изменение уровней на входах 1,2,3…17 с VCC на 0 (GND) корректно передается через регистр (выход А) в МК (на вход С).

(б) мистический режим
в момент касания уровни на 1, 2, 3…17 никак не меняются (остаются = VCC) но в МК поступают нули.

прошивку я максимально сейчас упростил чтобы найти место ошибки. фактически она пустая. там вероятность ошибки нулевая.
наличие физического контакта пальца с нерабочей медью конечно ассоциируется с проблемой контактов. но каждый раз эта мысль спотыкается о вопрос: “хорошо, но как тогда объяснить что медь на противоположной стороне оказывает такой же эффект когда между ними нету контакта?”…

Dinotron

Ну дайте картиночку-то. Ведь налицо эффект программиста воюющего с косяками железячников ИМХО.

ШВЕД

делаю, делаю… в данном случае я и кодер, и железячник и дизайнер 😃

вот плата:

в центре - мега8а в TQFP корпусе.
1, 2, 3 - регистры.
желтая дорожка - это канал “А” как первоначально обозначил Prsh.
зеленые дорожки - это входы. они на обратной стороне платы притянуты резюками к VCC.
вся медь (включая дорожки) тут покрашена темно-кирпичным цветом. эта область залита изолирующей защитной маской.
внизу есть полоска светло-кирпичного цвета. это как раз та область касания на которой нету маски.
в принципе плату обрезал не очень аккуратно поэтому по всему периметру если плотно упереться пальцем в торец то можно добраться до меди под маской…травлено все добротно…

никаких предохранителей нет.
если упереться одним щупом в нерабочую медь а вторым пройтись по всем ногам микросхем - то нигде контакта нет.
да и быть его не может тк расстояние от нерабочей меди до дорожек минимум 1 мм.

вот медь до маски:

а вот с маской и с микрухами уже:

RW9UAO

вот это вот все - большой конденсатор.

  1. заземлить полигоны
  2. разобраться с правильностью и своевременностью тактовых импульсов на регистрах
  3. скинуть частоту обмена с регистрами
  4. блокировочные конденсаторы где? пару возле процессора, по одному на регистр. тантал на питание проца, поближе к процу. это из области бубна, но может помочь
  5. блокировочные емкостя на входах где? если входные провода будут хотя бы по 30 см, наводка от частотника устроит вам ужас и страх.
    печатка ужасная. следующий раз сделайте под процессором сплошной полигон, земляной или питания.
Prsh
RW9UAO:
  1. скинуть частоту обмена с регистрами

Добавлю от себя: может вообще написать тестовую программу которая будет тактировать регистр по нажатию на внешнюю подключенную к МК кнопку (наверно не проблема к какой-нибудь ножке входов подпаять кнопку). Тогда вы тестером сможете 99% понять правильно ли работают регистры. Я бы прежде всего исключил процессор - думаю дело в нем.

ШВЕД:

никаких предохранителей нет.

Имелись в виду видимо fuses в МК)) Может вы думаете что у вас проц тактируется внутренним генератором, а ан самом деле - внешним…)
В общем, у меня лично ощущение что на самом деле у вас не работает как надо имено процессор. Вы как-то можете уверено судить что программа бежит как надо? Если нет, то я бы начал с тестовой программы <<моргание светодиодом>>

Dinotron

Даже нечего добавить. Вот за этим я и просил у вас картинку. P. S. Предохранители имелись в виду fuses , а так это присказка у меня, вроде прежде чем углубляться в дебри проверь самое простое. Очень часто забывается,кстати.

ШВЕД

понятно.

  1. фьюзы.
    тут все правильно выставлено. более того проц более чем корректно работает во всех режимах прошивки.
  2. прошивка на 2.4 кило, очень плотная работа с вводом-выводом… все работает без нареканий. для отлова ошибки отключал целыми блоками код. остатки кода работают так же.
    уверен что с прошивкой все ок.
  3. сегодня устрою тестовую проверку с подключенным внешним железом. посмотрим как будет работать в системе.
RW9UAO:

печатка ужасная

можно как-то прокомментировать конкретнее что не нравится?

  1. пробовал уменьшать частоты обмена с регистрами (ставил программные задержки в цикле обработки) - те же самые грабли, но при этом все еще еле ползает…
RW9UAO

вообще все не нравится.
по схемотехнике.
источник питания процессора где? на соседней плате? подключенной шлейфом в пару метров? 146% что будет глючить.
отвязывать гальванически все от всего. да дорого.
все же поставьте кварц и вокруг него и емкостей по 27 пФ земляное кольцо
тут хорошо, с картинками www.gaw.ru/html.cgi/txt/app/micros/mb90/pcb.htm
полигон под процом, лучше земляной. блокировочными емкостями не пренебрегайте. заливка платы - масса, если хочется во втором слое развести питание - разводите, но основной полигон - масса.
разберитесь с источниками входных сигналов, не зная проекта целиком советовать трудно.
разделите земли: чистую - процессор и регистры и силовую - входные цепи. соедините в одной точке (если получится). силовой земли должно быть как можно меньше. в идеале входа отвязать оптронами либо ADUM.
заведите в софте собаку. цепь сброса проца - подпирать обязательно. неиспользуемые выводы проца - на выход и выставить 1-ку.
избегайте земляных петель под кристаллами. помеха прийдет по земле входного кабеля и пойдет гулять по плате. амплитуда и ток у нее буду достаточные выщелкнуть проц.
если гальваническая развязка не канает - делайте подтяжку входов от отдельного питания, либо развяжите от питания проца как следует, хотя бы дросселем. блокировочную емкость на входе прикиньте, насколько она завалит фронт импульса.
управляющие входы регистров подтянуты к нужным уровням?

до кучи курить
webcache.googleusercontent.com/search?q=cache:UbvO…

Prsh
ШВЕД:
  1. сегодня устрою тестовую проверку с подключенным внешним железом. посмотрим как будет работать в системе.

Не знаю, я б все-таки сначала убедился что этот кусок сам по себе работает правильно…

Dinotron

Паскудна привязка к существующей плате. Человек наелся выносом регистров в небо. Вопрос как вот это привести в сознание с минимальными потерями. Программно походу не получится.

ШВЕД

RW9UAO, спасибо за здравую критику и ссылки. обязательно изучу.
касательно данной схемы могу прокомментировать следующее:

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

  2. такая компоновка продиктована двумя причинами:
    (а) эта плата вставляется в другое устройство имеющее такие же габаритные размеры. увеличивать размеры нельзя. кроме того на другой плате по периметру также расположены различные выводы, разъемы. поэтому старался над теми областями ничего не делать. поэтому я фактически ушел на 1-1.5 см от края и разместился именно на таком участке
    (б) кроме того я максимально хотел сократить количество отверстий. поэтому от межслойных переходов я отказался в пользу “мостиков” из нулевых резисторов. 99% компонентов платы расположены на одном верхнем слое. на нижнем слое находится лишь несколько подтягивающих резисторов соединенных со штыревыми входными разъемами (под них в любом случае нужно сверлить отверстия было).

  3. reset шунтирован jumper’ом с VCC. собака стоит лишь на просадку по уровню 4.0V (с соответствующими фьюзами).

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

----------------------------

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

1Dimon1

а номинал подтягивающих резисторов какой? лучше порядка 10к-47к не более. и кондестары блокировочные обязательно по 1н - 100н. на каждый вывод питания микросхем. тоесть один вывод микросхемы -один конденсатор в максиальной близости к этому выводу.
пропал - вы одежду не меняли? ну например одели другую кофту? и это не шутка кстати.

Prsh

Я не берусь ничего утверждать наверняка, но мне чего-то кажется что все эти пляски с конденсаторами и переодеваниями это в данном случае не главное - есть какая-то более рациональная проблема с этой платой. Где-то чего-то отвалилось или питание плохое или сгорел кто-то…
ШВЕДУ еще общая идея: понизте тактовую частоту и используйте программный осциллоскоп (с помощь звуковой платы)