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

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

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

ШВЕД

мне тоже теперь все больше кажется тут имеет место какой-то скрытый механический дефект.
очень неравномерное поведение какое-то.
подтягивающие резисторы стоят 10К… для 5В считаю вполне нормальный ток утечки будет.
одежду менял но не думаю что дело в ней (хб халат с коротким рукавом vs его отсутствие).
как уже писал выше я пробовал понижать частоту до 4мгц - та же проблема. осцилоскопа вот к сожалению нет… 😦

1Dimon1

вообще при получении сигналов извне на всякого рода счетчики, вообще логику на КМОП технологиях, лучше использовать инверторы с тригером шмитта 74нс14 например… от многих неприятностей уберегают…

Prsh
ШВЕД:

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

я имел ввиду снизить частоту с которой работают регистры (програмно, например) до скажем 1кгц и тогда сможете использовать какую-нибудь программу- осциллоскоп для РС.

ШВЕД

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

Prsh

Не знаю, хозяин- барин. Но я бы не стал ничего переделывать, а для начала перерезал бы проводник который идет ко 2 ножке регистра подпаял кнопку, запитал плату от компьютерного блока питания и убедился что регистры работают как надо. Далее написал бы программу для МК которая заменяет кнопку и проверил снова. А если есть серьезные подозрения что где-то на плате скрытый дефект, то нулевым пунктом собрал бы все это заново побыстрому на макетке. А когда все уже будет как надо работать, разработаете уже окончательный вариант платы. Тут не те частоты и уровни чтобы что-то сильно зависило от компоновки -главное грубо не напортачить в монтаже.

ШВЕД

беда в том что на макетке в smd формате оч пролематично все собирать. а dip аналогов нету.