AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
01.04.2013, 11:58
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от alpast
|
Уважаемый, pifa, обрати внимание на время внутреннего WTD и внешнего WDT. Внешний должен быть в 2-3 раза больше. Такое впечатление, что у тебя внешний WDT просто не дает процессору запустится, проц не успевает его сбрасывать.
|
Немного не так. На ATMega128 стоит только внешний WDT, внутренний не задействован.
А на другой плате с ATMega8535 внешнего нет. Вот там используется внутренний WDT. Так что они между собой никак не связаны.
|
|
|
|
01.04.2013, 12:11
|
|
Прописка
Регистрация: 08.02.2010
Сообщений: 130
Сказал спасибо: 2
Сказали Спасибо 45 раз(а) в 18 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Думаю, надо добавить.
Да, когда находишься на объекте и видишь как все перестает работать, то голова съезжает сразу. Непонятно, что, почему, где искать..? Очень сложно
там, разобраться и принять правильное решение. Плавали, знаем.
Глюки, Зависания, Сбои - очень неприятные, непонятные явления - Магия, мистика, чудеса.
На самом деле все просто - Глюки, Зависания, Сбои - это следствие одного
единственного явления. Самопроизвольное изменение значения в регистрах (RAM, XRAM - тоже регистры) - вызванное различными причинами, чаще всего импульсами по шине питания и не только.
Проц завис - это просто изменилось значение счетчика команд, и он не
может декодировать следующую команду.
Бывает слетают флаги прерываний, main работает, а прерывания нет.
Бывает наоборот, проц вышел на обработку прерывания таймера 2, а у вас его в программе и небыло никогда.
часто в программе используются switch(state),
state - изменилось, или возвратилось из функции с ошибкой и
switch ищет ему case и найти не может.
Переменная какая-то попортилась а после перезагрузки не реинизиализировалась.
Пишем программу и должны знать, что в любой момент регистры или
переменные могут попортиться. Должны уметь с этим оброщаться.
Как универсальный способ, выхода из этих тупиков - WDT -он создан
только для этого - и ни для чего кроме этого.
Правильно работаем с WDT (см. выше) - и в деле ждет тебя успех
GOOD LUCK
|
|
|
|
01.04.2013, 12:13
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от vgtmaster
|
Что то подобное с зависанием было и в моей практике. Решить проблему удалось заменой классического блока питания на импульсный. Скорее всего у вас помеха лезет через сеть.
|
Нашел у себя один импульсный блок на TOP223Y Покупал лет 10 назад. Но он несколько раз выходил из строя (сам TOP). Замена этого блока на обычный линейный решила проблему. Работает до сих пор.
Так вот и на этом объекте повышенное напряжение. На расстоянии 1 км находится городская подстанция 330 кВ. Не хочется еще раз наступать на те же грабли.
Вот вспомнил, что на этом объекте у меня не задействован RS-485. А его питание формируется преобразователем на ферритовом кольце с 24 V.
Но придется отключить подсветку LCD. Колечко маленькое, а там и так уже 200 mA сидит. Может не выдержать.
P.S.
Два остальных проца (ATMega8535 и ATMega8 ) питаются тоже через колечко. Только ATMega128 напрямую с транса через LM2576
Последний раз редактировалось pifa; 01.04.2013 в 12:22.
|
|
|
|
01.04.2013, 12:18
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от alpast
|
Думаю, надо добавить.
часто в программе используются switch(state),
state - изменилось, или возвратилось из функции с ошибкой и
switch ищет ему case и найти не может.
|
Для этого я всегда использую default. И никогда без него.
Сообщение от alpast
|
Думаю, надо добавить.
Как универсальный способ, выхода из этих тупиков - WDT -он создан
только для этого - и ни для чего кроме этого.
Правильно работаем с WDT (см. выше) - и в деле ждет тебя успех
|
В моем случае WDT не помог. Когда найду причину - напишу.
|
|
|
|
01.04.2013, 13:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,050
Сказал спасибо: 3,041
Сказали Спасибо 3,210 раз(а) в 2,180 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от pifa
|
Когда в результате тыканья сетевой вилкой БП только ATMEga128 она зависла наглухо и не реагировала на RESET, попробовал снять и восстановить питание. Но проц. все равно не запустился. При этом сигналы SDA=SCL=0.
Тогда снял питание с других блоков. При снятии питания с ATMega8535 128 заработала сама.
Повторил эксперимент. Снова висит. В это же время 8535 все работает, только сигналы I2C=0.
Оказалось, что внутренний Watchdog 8535 (который контролировал шину I2C) не срабатывал, т.к не был включен соотв. фьюз.
|
I2C как межприборный интерфейс в условиях помех - это сурово... Но, раз уж так случилось, то вот одно место из спецификации (версия 2.1, 2000 год):
Раздел 17.3 Wiring pattern of the bus lines
... линии наиболее подвержены помехам и перекрёстным искажениям при наличии высоко уровня (за счёт относительно б ольшего импеданса подтягивающих резисторов). ... При длине дорожек или кабеля более 10 см рекомендуется расположение проводников в виде SDA-Vcc-Vss-SCL или SDA-Vss-SCL. ... Если используется витая пара, то в пару к каждому сигналу идёт земля.
Ну и простейшая логика: Поскольку I2C - шина с "монтажным ИЛИ", то длительное присутствие SCL=0 должно рассматриваться как ошибка и должны приниматься соответствующие меры. По этому поводу - также можете почитать стандарт в тех местах, где говорится о "stretching the LOW period of the SCL" (используется только при арбитраже нескольких ведущих или при ответе "медленного" ведомого).
|
|
|
|
01.04.2013, 14:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,365
Сказал спасибо: 85
Сказали Спасибо 625 раз(а) в 377 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от pifa
|
Так я ее по несколько раз в день перешивал. А что даст ШИМ или моргание, если программа не запускается?
А вот сейчас на столе (без наводок) ATMega в стопоре. Читаю Flash - все без единой ошибки. Фьюзы тоже на месте. А проц. не запускается.
P.S.
Возможно после снятия питания запустится, но вот размышляю, что-бы еще посмотреть.
|
Я уже неоднократно писал, были темы похожие, что у ATMega бывают зависы при включении при медленно нарастающем питании. Не выводится никак из этого состояния, кроме как передергиванием питания.
При таком зависании ATmega находится как бы в режиме программирования (у ATMega128 это видно по низкому уровню на ноге PEN, но при этом подтянуть PEN к плюсу нельзя - течет бешеный ток).
Но в этом "как бы режиме программирования" она даже не шьется.
Не знаю, та же самая ли проблема возникает при Ваших зависонах во время работы. Посмотрите уровень на ноге PEN во время зависона (в реальной работе, при зависоне при включении питания там будет низкий уровень).
|
|
|
|
01.04.2013, 14:56
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от ForcePoint
|
I2C как межприборный интерфейс в условиях помех - это сурово
|
При проектировании я думал о помехах. Но вот о частотниках забыл. К тому же считал, что заземление шкафа должно уберечь от эл. магнитных наводок.
Сообщение от ForcePoint
|
Если используется витая пара, то в пару к каждому сигналу идёт земля.
|
Если я правильно понял, то вместо моих двух витых пар необходимо три:
SDA-GND, SCL-GND, VCC-GND.
Это я сегодня сделаю.
Сообщение от ForcePoint
|
Ну и простейшая логика: Поскольку I2C - шина с "монтажным ИЛИ", то длительное присутствие SCL=0 должно рассматриваться как ошибка и должны приниматься соответствующие меры. По этому поводу - также можете почитать стандарт в тех местах, где говорится о "stretching the LOW period of the SCL" (используется только при арбитраже нескольких ведущих или при ответе "медленного" ведомого).
|
Самого стандарта нет, надо поискать.
Что касается самих сигналов, то я их отдельно не анализирую.
А вот ответ от устройства ожидается с тайм-аутом. Если по окончании тайм-аута ответ не получен либо принятый код не соответствует ожидаемому, программа переходит на обработку ошибки с ее индикацией (код устройства + ожидаемое состояние) и переводит шину I2C в безадресный режим и до следующего сеанса.
Где-то так:
************************************************** *******************
TWCR = I2C_START; // Передача СТАРТ
timer_I2C=20; // таймер для аварийного вихода
while (!YES_INT && (!Bit_ERR_I2C)); // Ожидание завершения передачи СТАРТ
if ((Status_I2C != KOD_START) || (Bit_ERR_I2C == 1)) { I2C_Error(); return; } // Проверка STATUS-кода
************************************************** **************************
Это ведущий-ATMega128. А ведомые (ATMEga8535 и ATMega8 ) сбрасываются каждая своим WDT при отсутствии команды от ведущего.
Я проверял в железе. Сажал и SCL и SDA на GND, обрывал. Вот только к питанию подтягивал в Proteus'е, в железе не пробовал. Все работает (если исчезает ошибка).
А вот у меня возник вопрос по поводу пподтягивающих резисторов. На плате стоят 10 kOm, Скорость я уменьшил до 65 kHz. Какие резисторы Вы бы порекомендовали.
Длина проводов I2C:
16 см от ведущего к ATMega8535 и еще +12см к ATM‹ega8/
Последний раз редактировалось pifa; 01.04.2013 в 15:20.
|
|
|
|
01.04.2013, 15:00
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от pambaru
|
Я уже неоднократно писал, были темы похожие, что у ATMega бывают зависы при включении при медленно нарастающем питании. Не выводится никак из этого состояния, кроме как передергиванием питания.
|
Видимо это не мое. У меня всегда включается, Причем. включен BODEN, установлен внешний Watchdog.
Виснет в работе.
|
|
|
|
01.04.2013, 15:15
|
|
Прописка
Регистрация: 08.02.2010
Сообщений: 130
Сказал спасибо: 2
Сказали Спасибо 45 раз(а) в 18 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Я смотрю платка на разъемах и шлейфах, а второй такой нет?
Поменять всю плату целиком и посмотреть.
Иногда такая фиговень случается, из-за непропая или дефекта платы, что месяцы можно вылавливать и ничего не поймать.
|
|
|
|
01.04.2013, 15:27
|
|
Гражданин KAZUS.RU
Регистрация: 26.12.2005
Сообщений: 596
Сказал спасибо: 24
Сказали Спасибо 68 раз(а) в 45 сообщении(ях)
|
Re: Наводки частотника и зависание ATMega128
Сообщение от alpast
|
Я смотрю платка на разъемах и шлейфах, а второй такой нет?
Поменять всю плату целиком и посмотреть.
Иногда такая фиговень случается, из-за непропая или дефекта платы, что месяцы можно вылавливать и ничего не поймать.
|
Здесь тот вариант, что в пословице:
"Если бедный женится, то и ночь коротка".
Есть еще 2 платы. Но у них что-то с монтажем. Я поставил и было еще хуже. Я кое-что пропаял, но после этого еще на ставил. Надо бы отдать монтажнику, чтоб он посмотрел, а потом можно поменять.
Сейчас собираюсь на объект. Попробую часть тех рекомендаций, что здесь советовали.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:01.
|
|