Отправлено: 22.03.11 20:35. Заголовок: Сдвиговые регистры и помехи
Здравствуйте! Столкнулся с проблемой ошибки вывода данных в сдвиговые регистры. История такая, не хватало ножек МК. Поставил сдвиговые регистры. Включением питания стали управлять сдвиговый регистр, а не как раньше выводы МК. Так при включении силового трансформатора, сдвиговые регистры начали вытворять не управляемые действия. Вот схема включения: http://zalil.ru/30718870 Вот ПП которой выдаю данные на внешние регистры:
SHCP1 bcf PORTD,ST ; Сброс линии защёлки в 0. movlw .16 ; Запись длинны регистра (бит). movwf COUNTCP
NEXTSHCP bcf PORTD,SH ; Сброс линии такта в 0.
rlf SHREGL,F ; Сдвиг бита в С. rlf SHREGH,F btfss STATUS,C ; Какой установить бит на линии данных? goto $+.3 bsf PORTD,DS ; Установить на линии данных 1. goto $+.2 bcf PORTD,DS ; Установить на линии данных 0.
bsf PORTD,SH ; Линия такта переключается с 0 на 1. decfsz COUNTCP,F ; Все биты выданы во внешний регистр? goto NEXTSHCP ; Нет, повтор.
bsf PORTD,ST ; Линия защёлки переключается с 0 на 1.
rlf SHREGL,F ; Ещё один сдвиг, регистры SHREGH/SHREGL вернули своё состояние. rlf SHREGH,F
bcf PORTD,SH ; Сброс линий такта и защёлки в 0. bcf PORTD,ST return
Замучился уже, 5 раз из 10 включается нормально, остальное с треском реле включено/выключено и морганием света. Что посоветуете? Это помеха или ошибка в проге?
Отправлено: 22.03.11 22:04. Заголовок: Я тоже замечал, что ..
Я тоже замечал, что сдвиговый при включении сначала не адекватен. Но у меня такой задачи не стояло, поэтому не оглядывался. Если включать/выключать питание лучше одной кнопкой и один вывод мк. Удобно, делали для КСВ метра. Могу схему кинуть.
rlf SHREGL,F ; Сдвиг бита в С. rlf SHREGH,F btfss STATUS,C ; Какой установить бит на линии данных?
Вы действительно полагаете , что проталкиваете таким макаром через Carry 16 бит ??? Не проще передать один байт за ним второй ? Стробы на Clk размазаны по коду , должны идти сразу.
Отправлено: 23.03.11 10:12. Заголовок: MAZ пишет: Могу схе..
MAZ пишет:
цитата:
Могу схему кинуть.
Давайте посмотрю.
Алексей пишет:
цитата:
В первую очередь надо обеспечить сброс регистров при включении питания... В схеме этого не увидел...
При включении питания МК он после своей инициализации сбрасывает регистры в 0. Правда не всегда успевает. Как можно схемой это сделать?
dosikus пишет:
цитата:
Вы действительно полагаете , что проталкиваете таким макаром через Carry 16 бит ??? Не проще передать один байт за ним второй ? Стробы на Clk размазаны по коду , должны идти сразу.
Действительно полагаю. Попробуйте в симуляторе. Причём после выхода из ПП регистры МК SHREGL/SHREGH не изменяются. Разве есть ошибка в ПП? Что значит стробы размазаны и должны идти сразу? Можно более конкретно.
MAZ пишет:
цитата:
тоже замечал, что сдвиговый при включении сначала не адекватен.
Так это пол беды. Когда МК уже включился он их сбрасывает. А когда МК (питается дежурным БП) включает реле силовых трансформаторов, идёт такая сильная импульсная помеха, что регистры принимают случайное значение. Только это происходит иногда 50/50. Вот и думаю ошибка в ПП или в схемотехнике.
MAZ, спасибо почитаю. Если ошибка в ПП, то что в ней не так. ПП то небольшая. Перелапатил её уже в доль и поперёк. Функция этой ПП выдвинуть из регистров SHREGL/SHREGH во внешние регистры, и что бы эти регистры не изменились (SHREGL/SHREGH) после её отработки. Т.к. меняю биты командами bcf/bsf в регистрах SHREGL/SHREGH. Последнее исполняется, проверил в симуляторе. Зарылся на ровном месте.
При включении питания МК он после своей инициализации сбрасывает регистры в 0. Правда не всегда успевает. Как можно схемой это сделать?
На выводе ОЕ запретить выходы и сбросить защелки... Потом включать уже выходы... MR по всей видимости не поможет, он не действует на защелки... Плюсом ко всему, на всю тупую логику всю жизнь ставили блокировочные конденсаторы рядом или на выводы питания этих микросхем, по 0,15 мкф на 2-3 корпуса, иначе часто сбоят... Возможно даже установка этих конденсаторов решит проблему на переходных процессах в питании...
При включении питания МК он после своей инициализации сбрасывает регистры в 0. Правда не всегда успевает. Как можно схемой это сделать?
Как сделать задержку сброса? RC цепочкой. MR у тебя подключен к плюсу? Подключи через резистор и добавь конденсатор на массу с ножки MR, и диод (лучше шотки) параллельно сопротивлению катодом к плюсу.
Кстати, кстати... что у тебя должно быть на выходе регистров при включении? Единицы, нули или вперемежку? Посмотри что у тебя должно быть после релюшек на резисторах. Может там звук как то отключать (не подавать питание, сделать задержку), пока релюшки не включатся как надо?
Отправлено: 23.03.11 15:06. Заголовок: MAZ пишет: Не реком..
MAZ пишет:
цитата:
Не рекомендуют специалисты, ЧМЗ.
Это какие специалисты? И чем это обусловлено?
Алексей пишет:
цитата:
На выводе ОЕ запретить выходы и сбросить защелки... Потом включать уже выходы... MR по всей видимости не поможет, он не действует на защелки... Плюсом ко всему, на всю тупую логику всю жизнь ставили блокировочные конденсаторы рядом или на выводы питания этих микросхем, по 0,15 мкф на 2-3 корпуса, иначе часто сбоят... Возможно даже установка этих конденсаторов решит проблему на переходных процессах в питании...
Тоже думал использовать ОЕ. Но это пока не главная задача. Около микросхем логики стоят фильтры 1000 мкф и 0,1 мкф. Ещё выводы SH и ST подтянул к земле через 10 ком. Не помогает.
Photographer пишет:
цитата:
Как сделать задержку сброса? RC цепочкой. MR у тебя подключен к плюсу? Подключи через резистор и добавь конденсатор на массу с ножки MR, и диод (лучше шотки) параллельно сопротивлению катодом к плюсу.
Нет. Не задержку сброса. А задержку выхода защёлки при включение питания. А то при включении питания логики на выходе случайный байт.
Кстати, кстати... что у тебя должно быть на выходе регистров при включении? Единицы, нули или вперемежку? Посмотри что у тебя должно быть после релюшек на резисторах. Может там звук как то отключать (не подавать питание, сделать задержку), пока релюшки не включатся как надо?
С реле звука всё в порядке. Вообще при включении логики должны быть все регистры в 0.
Проблема при включении релюшек старшего регистра, которые включают мощные трансформаторы усилителя.
Нет. Не задержку сброса. А задержку выхода защёлки при включение питания. А то при включении питания логики на выходе случайный байт.
Ну так ту же RC цепочку. Это ОЕ ? к массе подключен? то же самое через резистор с диодом параллельно и конденсатором на плюс. Диод только разверни... Выше ошибочка вышла, диод параллельно конденсатору надо... Разберёшься?
Только вот поможет ли это? как воспримут L293D неопределённый сигнал? Тогда эти входа подтяни резисторами к плюсу или к массе в нужной тебе комбинации. Это вдобавок.
Пост N: 63
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг:
0
Отправлено: 23.03.11 15:25. Заголовок: Эти драйвера и "..
Эти драйвера и "дёргают" наверно релюшки, пока на входе не появилось что то определённое. Подтягивай их куда нибудь... как там у тебя по логике должно быть... на драйверах предварительная установка должна быть.
Ну так ту же RC цепочку. Это ОЕ ? к массе подключен? то же самое через резистор с диодом параллельно и конденсатором на плюс. Диод только разверни... Выше ошибочка вышла, диод параллельно конденсатору надо... Разберёшься?
Разберусь.
Photographer пишет:
цитата:
Эти драйвера и "дёргают" наверно релюшки, пока на входе не появилось что то определённое. Подтягивай их куда нибудь... как там у тебя по логике должно быть... на драйверах предварительная установка должна быть.
Нет. Не правильно поняли проблему. Включается питание МК. МК сбрасывает регистры в 0. С реле всё в порядке. Реле звука вообще работают без проблем. Драйвера не трогаем. Потом когда нажимаем кнопочку POWER, МК включает мощные трансформаторы двумя реле, сначала 1 реле подаёт 220 через резистор, потом 2 реле замыкает этот резистор (плавный пуск). Вот здесь и крах регистров происходит.
подаёт 220 через резистор, потом 2 реле замыкает этот резистор (плавный пуск). Вот здесь и крах регистров происходит.
Ну тогда проще даже не париться а выкинуть этот второй сдвиговый регистр и посадить напрямую на выводы контроллера, перекинув например часть клавы на DB4-DB7. Появятся несколько доп. резисторов, зато выкинется один корпус и проблемы должны уйти
Пост N: 64
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг:
0
Отправлено: 23.03.11 16:14. Заголовок: Так так так. С RC я ..
Так так так. С RC я там напутал. Всё таки диод параллельно сопротивлению
Релюшки у тебя коммутируют мощную индуктивную нагрузку. Это не очень хорошо. На релюшках как ни крути будет дребезг, и будут мощные наводки на схему. Я себе здесь хочу собрать коммутаторы... на MOC 3043 они с датчиком нуля, для мягкого включения, 5мА включение. И купил симисторы BTA12 ... счас посмотрим 12A 600V. Как на это смотришь? (120 A 20 ms терпят) Керамика на ножках МК по питанию и на сбросе у тебя есть? Фильтры ферритовые на проводах?
Отправлено: 23.03.11 16:28. Заголовок: Алексей пишет: Ну т..
Алексей пишет:
цитата:
Ну тогда проще даже не париться а выкинуть этот второй сдвиговый регистр и посадить напрямую на выводы контроллера, перекинув например часть клавы на DB4-DB7. Появятся несколько доп. резисторов, зато выкинется один корпус и проблемы должны уйти
Не привык сдаваться. Тем более платы уже сделаны/разведены. Надо разобрать в чём проблема.
При включении релюшек мощных трансформаторов происходит какой то сбой. При чём этот сбой похоже портит содержимое регистров самого МК SHREGL/SHREGH, которые потом уже кривые выходят во внешние сдвиговые. Надо разобраться что происходит...
Photographer пишет:
цитата:
Релюшки у тебя коммутируют мощную индуктивную нагрузку. Это не очень хорошо. На релюшках как ни крути будет дребезг, и будут мощные наводки на схему. Я себе здесь хочу собрать коммутаторы... на MOC 3043 они с датчиком нуля, для мягкого включения, 5мА включение. И купил симисторы BTA12 ... счас посмотрим 12A 600V. Как на это смотришь? (120 A 20 ms терпят) Керамика на ножках МК по питанию и на сбросе у тебя есть? Фильтры ферритовые на проводах?
Хорошая идея! Вспомнил у меня валяется плата управления мощной нагрузкой через LPT порт! Там по 8 штук BT139 и MOC3043! Керамика везде стоит и на МК ножках. Колец не где не ставил.
Ну всё таки что может так портить регистры внутри самого МК, надо внимательно ПП посмотреть.
Пост N: 65
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг:
0
Отправлено: 23.03.11 16:37. Заголовок: С программой разбира..
С программой разбираться не буду, извини. А не попробовать ли тебе...включи этот транс в обход релюшек, напрямую. Пусть релюшки без нагрузки сработают, без помех и наводок. Может определишься, программно или помехи.
С программой разбираться не буду, извини. А не попробовать ли тебе...включи этот транс в обход релюшек, напрямую. Пусть релюшки без нагрузки сработают, без помех и наводок. Может определишься, программно или помехи.
Да с программой я и не прошу разбираться. Там чёрт ногу сломит. Сам поковыряю.
Да, думаю надо замкнуть эти силовые реле, пускай трансформатор работает на прямую и попробовать пощёлкать этими реле в холостую. Так сразу станет ясно ПП это или помеха. Потом можно делать выводы. На выходных доберусь до устройства, отпишусь что к чему.
Пост N: 29
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг:
0
Отправлено: 23.03.11 21:39. Заголовок: Ещё ряд кнопочек (4 ..
Ещё ряд кнопочек (4 вывода) можно было повесить на D4-D7 дисплея, Е у индикатора на землю повесить... Много в этой схеме можно освободить пинов, если честно.
Проверь в разных вариантах: -как Photographer пишет:
цитата: включи этот транс в обход релюшек, напрямую.
-попробуй запитать МК от другого источника.
В обход обязательно буду пробовать, в первую очередь. А источник питания МК уже менял, сначала был обыкновенный транс, потом поставил импульсник от маршрутизатора. Не чего не изменилось.
sokur пишет:
цитата:
BT139 и MOC3043 можно испытать, где-то в даташитах попадалась схема включения для индуктивной нагрузки.
Вы имеете в ввиду строб по такту должен обязательно 0->1->0 и только потом строб на защёлку 0->1->0? Неужели будет большая разница если переключить сначала такт 0->1, потом защёлку 0->1, потом оба вывода сбросить в 0? Ведь все движения в регистре происходят по переднему фронту, а не по заднему.
На выводы вешаешь voltage probe - щуп с буковкой V . Растягиваешь окно Digital analysis в свободном месте схемы . Перетаскиваешь и кидаешь пробники в окно . Наводишь курсор на окно и жмешь пробел. Я осцилл в протеусе НЕ ИСПОЛЬЗУЮ.
Отправлено: 24.03.11 00:11. Заголовок: VadimKHL Я же выше..
VadimKHL Я же выше писал - здесь не в стробе дело . Но на будущее - во время строба данные лучше не менять. И почему у вас последний строб CLK вместе со стробом защелки ? И питание реле не развязать что ли ?
Отправлено: 24.03.11 00:30. Заголовок: dosikus пишет: Но н..
dosikus пишет:
цитата:
Но на будущее - во время строба данные лучше не менять.
Это я прекрасно знаю. Я не могу понять где вы увидели что это так происходит?
dosikus пишет:
цитата:
И почему у вас последний строб CLK вместе со стробом защелки ?
Я думаю так будет помехоустойчивей работать, исключил близкие переключения 1->0 такт и 0->1 защёлка.
dosikus пишет:
цитата:
VadimKHL Я же выше писал - здесь не в стробе дело .
Да, скорей всего помеха. Только понять бы что она вытворяет с МК. МК то после этой помехи выполняет дальше свою программу, без сброса по MCLR. Т.е. реле сходят с ума, щёлкая, а МК дальше работает без сбоев по своей программе.
dosikus, посмотри что происходит с линей данных на вашей ПП, когда выходят две или больше 1 подряд (лишние перепады).
P.S.: Частота строба F = 1 / 2,6 мкс =~ 385 Кгц. Очень мала. Устойчивость должна быть хорошая.
Пост N: 213
Зарегистрирован: 31.01.08
Откуда: SU, Москва
Рейтинг:
1
Отправлено: 24.03.11 01:01. Заголовок: Может всё-же попробы..
Может всё-же попробывать повесить вместо реле светодиоды. И пощёлкать реле руками. Поглядеть вживую что будет. Я тут зарядник чинил - 1квт транс на хх через раз 16 а пакетник выбивал при включении - бегать замучался.
И ещё: а почему у тебя у транзисторов Б-Э резисторы 3Ком - не мало? Попробуй Б-Э резистор 10К впаять, а токоограничивающий- 1К . Я, как правило на реле какой-нибудь мелкий дарлингтона ставлю, чтоб МК выход меньше нагружать. Можть просто транзисторы не до конца открываются?
Пост N: 368
Зарегистрирован: 16.03.09
Откуда: Родина, Севастополь
Рейтинг:
1
Отправлено: 29.03.11 11:47. Заголовок: А о каком резисторе ..
А о каком резисторе речь? Если в RC цепочке, то при С-10нФ R-36 Ом 250мВт (а лучше 1Вт). А если по входу оптрона, то считать надо. Глянь в даташит, на MOC3052
Все даты в формате GMT
3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет