Аппаратный пипец между Nano3.0 ATmega168 и 328

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018
Доброго всем времени суток!
 
К сожалению предисторию показать не могу (движок форума отличается от ChinaForumовского где в ЛК можно найти все свои темы и посты), но в двух словах: есть 4 Наны - 3х328 и 1х168 на одной из них накрылся СН340 (то ли чернила с Эпсоновской лентопротяжки куда-то попали, то ли ... х его з) и дело дошло до Громова и было подозрение, что на паре плат УАРТ был уничтожен физическим рс232, но после обнаружения на рабочем столе ярлыка XGPpro из антресоли был извлечён TL866II Plus и с его помощью... ну, в общем всё понятно: процесс прошивки пошёл, загрузчики восстановлены, а дабы СН340 не перепаивать туда-сюда-обратно (один-то - дохлый) один был переселён в корпус МТСовского ГПРС-модема... Ну, в общем - не суть, а самое главное - был разработан програмно-аппаратный комплекс автоматики управления освещением в совмещённом санузле и вот тут - ВНИМАНИЕ - главный вопрос: на макетке всё (микрики-светодиоды-буззеры) зашитое через уарт работает тип-топ, а вот в ванной... простейший Т-триггер: дверь открыта - свет загорается, закрыта/открыта - тухнет (тут реально работает), но если не закрыта более 7 сек, то (после звукового сигнала) тухнет при закрытии (тут тоже работает - не в протеусе), а вот после 7-ми секундного "ПИК" через минуту должен быть ещё "ПИК", через 2 мин. "ПИК-ПИК", черз 3 мин. ... и после 5-тикратного "ПИК" свет должен потухнуть... Вот и прикол: в протеусе и на макетке - всё работает идеально как и в туалетной половине реально... Было даже аннулировано подозрение, что компьютер и ноутбук как-то по разному компилируют/прошивают: на компе через уарт зашил в "макетку" скетч, который уже с реальными (а не отладочными) таймингами отработал на "ура" и с "унитаза" через тл866 считал "макетку" и прошил в "сортир" и всё равно в ванной вышеозвученная победень. Парадокс: дверь открываешь - свет загорается, значит между концевиком двери и D3 контакт "железный" также как и D5 "железно" открывает транзистор, который запитывает обмотку реле, чьи контакты включают 220,,, раз имеем 7-ми секундный "ПИК" - динамик тоже железно "припаян": стало быть неконтакт отпадает автоматом... А ежели "сопля", то не пахало бы с 1-го скетча (пара неточностей была отрихтована и перепрошито) - глюк повторяется 3-4 последних перепрошивки (при чём одинаковый) и последняя - копия с откаткнной "макетки"...
Какие будут соображения? Куда копать?
b707
Offline
Зарегистрирован: 26.05.2017

UFO 007 пишет:

Какие будут соображения? Куда копать?

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Раз одно работает, а другое - нет, значит, между ними есть разница. (Очевидно - не правда ли?)

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

Два наиболее частых фактора:

1. Разный источник питания.

2. Более длинные провода при реальном включении по сравнению с макетным.

Обычно проблемы решаются заменой проводов на более толстые и/или экранированные и установкой дополнительных конденсаторов.

SLKH
Offline
Зарегистрирован: 17.08.2015

andriano пишет:

Раз одно работает, а другое - нет, значит, между ними есть разница. (Очевидно - не правда ли?)

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

Два наиболее частых фактора:

1. Разный источник питания.

2. Более длинные провода при реальном включении по сравнению с макетным.

3. Имитация нагрузки на столе и реальные лампы/вениляторы на 220в в сортире, с прилагаемыми помехами.

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018

b707 пишет:

проспаться, похмелится

надо b707 - если лень читать

andriano пишет:

1. Разный источник питания.

сортирная Нана питается от БП Epson RX500 (такой же ШИМ-контроллер как и в ПК), а как по мне: +5в - они и в Африке = +5в

andriano пишет:

2. Более длинные провода при реальном включении по сравнению с макетным.

???: при программировании - согласен: длительность импульсов rx/tx или mosi/miso/sck составляет мили- (или микро- : не вникал) секунды, а это Кило- (Мега-) Герцы. Но в случае концевика двери = 0 целых, хрен десятых (скорее сотых/тысячных) Герца, тем более, что после мытарств с дребезгом было решено уйти от attachInterrupt (к D2, D3) и функцию ИСР возложить на 
  if (debouncerWC.fell()) Light1_On ();
  if (debouncerBR.fell()) Light2_On ();

а кондёры (0,22 - 0,47 мкФ - со строчной развёртки) так и остались припаянными к микрикам.

andriano пишет:

 ... и установкой дополнительных конденсаторов.

куда? Епсон проектировал свой БП не иначе, как с учётом требований какого-нить стандарта ИСО (и на потребление 2А току (согласно схеме электрической принципиальной) и даже если какй-нить кондёр процентов на 20-30-40 подсох, то Нана, потребляя 10-ю часть рассчётного тока, пульсаций по питанию вызвать не может - это шикарно подтверждает сортирная половина), а Нана обвязана "электролитами" не иначе, как с учётом тех же стандартов.
 
А вообще-то - andriano, Вы, наверняка, упускаете один нюанец: под первоначальным скетчем-то и ванная половина работала "как по маслу" (т. е. косяки сборки: травление дорожек, пайка радиоэлементов, обжим проводов и т.д. и т.п. - отпадают автоматом), но как показала практика: 5 сек на входном таймере оказалось мало - пока баба Надя (своей шаркающей походкой) зайдёт, развернётся - таймер уже "говорит": ПИК, она закрывает дверь и свет тухнет (это когда она уже внутри) поэтому тайминги были увеличены до 7,5 сек, но после перепрошивки началась такая вот катавасия...

Такое впечатление, что не работает только Офф(5-тиминутный с ежеминутным пибиканьем)Таймер (должен взвестись, если дверь открыта более 7сек и, спустя 5мин, выключить свет - чтобы всю ночь не горел) - вродь как тот участок ФлэшПамяти куда его зашивает тл866 при обращении возвращает NOP (NoOperation - по ZX-Spectrumовски) - в противном случае были бы глюки-зависания-ребуты или ещё чё-нить в этом роде, так нет же - сортирная половина пашет (оставим уже макетку в покое) как по нотам тем более, что сортирный алгоритм чуть сложнее: там ещё и вентиляторы замешаны (на "привязать коня" тебе даётся 2,5 мин, а если ты, достав бумажку, присел конкретно, то заводятся вентиляторы на 10 мин и если ты спустя ещё 2,5 мин не вышел - значит ты: заснул... свет тушим и ПИБИП!!! - подъём и выходи "на тёмную" - харэ спать или гадать сканворды).

Так было у кого-нибудь аналогичное? Конкретизирую: прошивка (скетч) в протеусе - пашет, на макетке - тоже, а по месту глючит. Сбойный участок памяти может быть? А то встречалась защита от копирования (казалось бы - как можно защитить РФ5?) в двухпроцессорной (для 2-го Z80) машине ZX-Next - ребята организовали защиту на браке: у бракованной партии ПЗУ вычислялось железно-рабочее адресное пространство (как я полагаю байт 200-300 максимум 500), туда зашивался "скетч" при компиляции, естесственно, пересчитывались адреса всевозможных JUMPов и CALLов с RETами (ну или всё было написано с относительной адресацией) и программа, занимясь тем, что выставляла на пине один уровень и через 64 мкс (прямой ход луча по строке) меняла на другой и через 10 мкс (обратный ход) цикл повторялся, а через 625 циклов (20 мс) на другом пине выставляла кадровый синхроимпульс - вот и вся её работа... Но 64 мкс - это же "вагон" времени и в этом "перекуре" прога проверяла один-единственный байт (из области сбойных адресов) с "неоднозначным чтением" (от 0 до FF) - если 65535 попыток чтения вернули одно и то же значение, то значит это - копия (небракованная ПЗУха) и стоп-машина. И где я только этот оригинал ни копировал (дабы не жогнуть во время пуско-наладки) и на Spectrume, и на IBMe, и даже на Орионе (из журнала "Радио" - часа 2 с пацанчиком выбирали куски контрольные суммы которых повторялись чаще других) - результат один: развёртка на мониторе есть только пару секунд и всё тухнет... А на оригинале пашет как часы, но года через полтора-два брак всё-таки "вылез на улицу" и машина умерла.
 
Какие будут предположения?
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Предположения - опустим, а предложение - воспользоваться советом из ответа №1.

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018

andriano пишет:

Предположения - опустим, а предложение - воспользоваться советом из ответа №1.

да Вы, батенька, я смотрю - с этим хамом заодно?

В иных постах "клещами вытягивают": что у тя там, да как? - мы не экстрасексы. Тут же входной инфы - через край... и опять - не так

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

UFO 007 пишет:

В иных постах "клещами вытягивают": что у тя там, да как? - мы не экстрасексы. Тут же входной инфы - через край... и опять - не так

Инфа, которая через край, - не нужна. Абсолютно.

Где скетч и схема?

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018

SLKH пишет:

3. Имитация нагрузки на столе и реальные лампы/вениляторы на 220в в сортире, с прилагаемыми помехами.

Уважаемый SLKH, из расширенных уточнений (что постом позже Вашего) заострю внимание на одном только факте: изначальный скетч (прошивка)... Исходно, когда на столе лежал сам блок (а не макетка), обвязанный теми же лампочками (к стати - вместо вентиляторов тоже была 24v лампочка, но на них грешить нет никакой "надежды" т.к. они - от ПК: 120+90+3*80 = 5шт и так как в их проводьях бежит постоянка - никаких 50-герцовых наводок так же как и "бегающих" полей беличьей клетки - нет) - работало всё отлично и даже после водружения на место постоянной дислокации. Про входные тайминги я уже упоминал (но это была, как вспомнил, - 2-ая перепрошивка) причиной 1-ой было несоответствие пинов:

#define PIN_WC_Light 4
#define PIN_BathRoom_Light 5
#define PIN_WC_Cooler 6

в протеусе же чёт моргает... Я, признаться, был в ужасе: "хлопаю" дверью в ванной, слышу: релюха - клацает, а лампа... атас - молчит, а когда (через 2,5 мин) пришло время запуcка вентиляторов - загорелась и ... "хлопаю" дверью, релюха - клацает, а она - не тухнет (аж холодный пот прошиб)... Но потом, подразобравшись, поменял 5-ку с 6-кой местами и ... ВСЁ КАК ПО МАСЛУ. Вот только не помню: может третий-четвёртый раз "рихтовал" какую-то мелочёвку, НО:

ПОСЛЕ 3-Х - 4-Х "УДАЧНЫХ" ПЕРЕПРОШИВОК одна - стала роковой и ПРИКЛЮЧИЛАСЬ ПОБЕДЕНЬ симптоматика и боротьба с которой - в постах выше.

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018

andriano пишет:

Где скетч и схема?

пжалста:

только эту мне - НЕ ОБСЕРАТЬ!!! - она (как и та по сей день) работает как часы.

И вообще: при чём тут схема/скетч??? Говорю же: НА МАКЕТКЕ (правда - в другой Нанке) РАБОТАЕТ ИДЕАЛЬНО!!! А вот после копирования даже дампом - глюк.

Я понял - ответом на мой вопрос будет: а поменяй-ка ты, любезный, их местами... ВО!!!

З.Ы. Пардон - в схеме буззеры забыл накарябать. А скетч - вам только покажи - тут же над новичком начнёте издеваться: то - не так, это - не эдак... Хватит - с ПИД-регулятором уже "помогли".

 

 

UFO 007
UFO 007 аватар
Offline
Зарегистрирован: 11.01.2018

Ну,  други мои, докладаю: как в заголовке темы - пипец полный... Тут имел место кардинальный подход к монтажу/сборке: дабы по ходу эксплуатации (х его з сколько лет) Нанка не "вылезла" из своего разъёма/кроватки (из 40-пинового разъёма типа КОМ, ФДД, ИДЕ ХДД, впаянного в плату) пристегнул её нейлоновым хомутом... Ну, пришлось повозиться с замочком хомута (иначе, если хомут перекусить, то чтобы вставить новый - надо фундаментально разбирать) и ту Нанку, что работала в макетке, воткнул в блок... 

И поведение новой Нанки - полный дубль предшественницы... Это же уму не растяжимо!!! - кто на внешней плате "держит за жопу" таймер, который внутри Атмеги??? Ежели бы кондёры по питанию (+5в) пересохли, то глючило бы то там, то сям (мож даже был бы вечный ребут), но ведь работает всё, окромя одного таймера:

typedef struct {
  unsigned long Start;  // Переменная хранения начального значения счетчика (mS)
  unsigned long Period; // Переменная хранения периода таймера (mS)
  bool Enable;
} myStructT;

myStructT Check_BRTimer;       // через 5 сек дверь закрыли?
myStructT OffTimer;            

логика простая: обнаружив событие открытия двери, чек_таймеру делаем Енабле = труе (период в сетапе выставлен 7 сек), в Старт запоминаем миллисы и ждём: как только now (= миллис() // в начале петли) перевалила через Старт+Период {дёргаем за буззер, взводим переменную, что загружают стиралку, разрешаем ОффТимер (период в сетапе выставлен 1 мин) миллисы ему в Старт и чтобы луп сюда болше не заглядывал - запрещаем чек_таймер}. Если дверь закрыли раньше, чем 5 мин, то ОффТимер запрещаем - инцидент исчерпан, а если нет, то считаем срабатывания: 1 срабатывание - 1 буззер, 2 - 2, ... и после 5-ти буззеров - дигиталВрите (лампочка, 0); и запрещаем ОффТимер . Ждём нового открытия...

Но самый главный парадокс: на макетке-то работает без сучка и задоринки - я не понимЭ-Э-Э...

inspiritus
Offline
Зарегистрирован: 17.12.2012

мистер UFO «батенька» и «этот хам» - УВАЖАЕМЫЕ УЧАСТНИКИ ФОРУМА !

Вы же новьичОк, с рядом нечленораздельных жалоб. Извольте вести себя подобающим образом в чужом монастыре, куда, кстати, вы пришли с протянутой рукой. 

ваши километровые опусы с невнятным потоком сознания никто в здравом уме читать не станет. Постарайтесь сосредоточится и изложить проблему структурированно, кратко и не забыть сделать должное количество КУ тем, кто найдет время прочитать и ответить вам, потратив своё личное время (деньги). 

Logik
Offline
Зарегистрирован: 05.08.2014

UFO 007 пишет:

 А скетч - вам только покажи - тут же над новичком начнёте издеваться: то - не так, это - не эдак... Хватит - с ПИД-регулятором уже "помогли".

 

 

Слушай, ну за кого ты нас считаеш! Мы можем легко издеватся и без скетча!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

я бы подоткнул макетку к объекту, тогда всё проясниться

b707
Offline
Зарегистрирован: 26.05.2017

UFO 007 пишет:

 Хватит - с ПИД-регулятором уже "помогли".

и здесь все кончится точно также, ибо автор болен - болезнь называется "словесный понос".