Полная версия этой страницы:
Зависание АТмега128
Lukyanov
Aug 6 2007, 12:48
Контроллер АТ128 запитан от +5 В. Используется внешний тактовый сигнал 10 МГц. Если долго не включался прибор, он зависает. Программа исполняться не начинает - на всех портах серый уровень. Проверял все ноги питания - все хорошо, тактовые импульсы доходят, амплитуда нормальная, на сбросе +5 В. Все ноги, отвечающие за SPI отключены. После снятия питания и повторного включения начинает работать нормально. Затем глюк может очень долго не проявляться. Что за фигня - ума не приложу... Если кто-нибудь сталкивался с подобным или есть какие-то идеи подскажите, пожалуйста...
Допустим код не кривой. Индуктивные нагрузки имеются? Сброс корректный - кондер + резак? Бод включен на 4.3В?
korobov_michael
Aug 6 2007, 12:55
Цитата(Lukyanov @ Aug 6 2007, 15:48)

Контроллер АТ128 запитан от +5 В. Используется внешний тактовый сигнал 10 МГц. Если долго не включался прибор, он зависает. Программа исполняться не начинает - на всех портах серый уровень. Проверял все ноги питания - все хорошо, тактовые импульсы доходят, амплитуда нормальная, на сбросе +5 В. Все ноги, отвечающие за SPI отключены. После снятия питания и повторного включения начинает работать нормально. Затем глюк может очень долго не проявляться. Что за фигня - ума не приложу... Если кто-нибудь сталкивался с подобным или есть какие-то идеи подскажите, пожалуйста...
Детализируй, плиз:
1. Какие фьюзы прошиты для девайсины?
2. Какой именно прибор долго не включался - источник тактового сигнала или сама АТ128?
3. Какая цепь стоит на ресете - RC или что-то посерьезнее?
4. Не управляешь ли ты движками или чем-то индуктивным?
А на сколько быстро нарастает внешний тактовый сигнал? У меги при внешнем тактовом задержки установлены минимальные.
А м.б. генератор внешнего тактового сигнала не всегда запускается.
muravei
Aug 6 2007, 16:11
И не слишком ли большой конденсатор на 5в ?
Если питание медленно нарастает, то легко может зависнуть.
defunct
Aug 6 2007, 17:01
Цитата(muravei @ Aug 6 2007, 19:11)

Если питание медленно нарастает, то легко может зависнуть.
С включенным BOD'ом это врятли.
muravei
Aug 6 2007, 17:44
Цитата(defunct @ Aug 6 2007, 21:01)

С включенным BOD'ом это врятли.
Как - то была тема не то что ВОДом - ресетом не запускалось , только питанием.
Судя по всему, при слишком медленном питании , что-то внутре так раскорячивается и защелкивается...
"Собачка" включена? В таких ситуациях должна помогать....
Да, и если, скажем, питание от трансформатора, который рядышком на плате, то в один из моментов включения попадаете на "полную" фазу - импульс помехи может наводиться на линию от осциллятора до лапки мк - и "гробить" мк, вводя его в ступор.
Если есть возможность и желание - выложите часть платы для анализа - постараюсь помочь.
Lukyanov
Aug 7 2007, 04:42
1) Трансформатор далеко стоит в отдельном блоке питания. Он здесь не при чем.
2) Источник тактовых импульсов запускается всегда. Поступают с выхода микросхемы серии 1554.
3) Watchdog timer? Стоит попробовать. Может поможет. Но виснет так глухо, что никакой сброс не помогает.
4) Про цепь сброса - RC цепь. Второй источник сброса - кнопка. Объединены на 1554.
BOD это порог включения, задаваемый FUSEs? Да 4.3 В.
korobov_michael
Aug 7 2007, 04:50
И все-таки было бы неплохо увидеть схему и кусок программы, отвечающей за инициализацию. А если покажешь еще и фьюзы, будет совсем хорошо
muravei
Aug 7 2007, 05:26
Цитата(Lukyanov @ Aug 7 2007, 08:42)

3) Watchdog timer? Стоит попробовать. Может поможет. Но виснет так глухо, что никакой сброс не помогает.
И , скорее всего, не поможет!
Так какой электоролит по 5 в после стабилизатора?
Lukyanov
Aug 7 2007, 05:47
По поводу электролита. Это 470 мкФ. Общий ток потребления по +5 В порядка 1 А. Время нарастания питания меньше секунды.
Цитата(muravei @ Aug 6 2007, 20:44)

Как - то была тема не то что ВОДом - ресетом не запускалось , только питанием.
Судя по всему, при слишком медленном питании , что-то внутре так раскорячивается и защелкивается...

Было. Но с Tiny26 при внешнем RC-генераторе. При внутреннем - все пучком... С M128 никогда таких проблем не было...
muravei
Aug 7 2007, 10:21
Цитата(Lukyanov @ Aug 7 2007, 09:47)

По поводу электролита. Это 470 мкФ. Общий ток потребления по +5 В порядка 1 А. Время нарастания питания меньше секунды.
А попробуйте 47-100мк
Если не помогает никакой ресет, то может переменные попробовать проинициализировать при объявлении или до главного цикла. Ресет запускает программу с функции майн и никто не гарантирует что в переменных будут "нули" при первом запуске, а уж при последующих запусках память сохраняет свои предыдущие значения, если ее принудительно не проинициализировать.
Вообще-то ресет запускает контроллер со старт-апа,где инициализируются глобальные переменные,
вектора прерываний и т.д.
prottoss
Aug 7 2007, 18:32
А менять камень пробовали?
Где-то читал что если оставить выводы ISP неподтянутыми внешними резисторами то с ненулевой вероятностью возможно вхождение в режим программирования итд. Как у тебя там подключена ножка сброс? Если используеш внутренний то обязательно на + через резистор ~1к или меньше, если конечно программатор потянет.
чтоб приколов с ISP не было нужно поставить внешнию подтяжку на SLK. Этого достаточно.
Lukyanov
Aug 8 2007, 04:50
На счет ISP подумал в первую очередь.

SCK подтянут через резистор 10 кОм на +5 В.
Контроллер менять бесполезно, т.к. плат две и на обеих одно и тоже.
muravei
Aug 8 2007, 05:44
Цитата(Lukyanov @ Aug 8 2007, 08:50)

Контроллер менять бесполезно, т.к. плат две и на обеих одно и тоже.
А коденсатор уменьшали? У меня после стабилизатора электролитов вообще нет (что тоже нехорошо ) , но все работает без проблем.
М.б. частота вашего генератора плавает при включении питания?
Цитата
When applying an external clock, it is required to avoid sudden changes in the applied
clock frequency to ensure stable operation of the MCU. A variation in frequency of more
than 2% from one clock cycle to the next can lead to unpredictable behavior. It is
required to ensure that the MCU is kept in Reset during such changes in the clock
frequency.
Я бы для начала затактировал от бортового осцилятора дабы отсеить подозрение на некорректное внешнее тактирование.
Lukyanov
Aug 8 2007, 07:10
Частота тактового генератора стабильна 10 МГц.
Использование внутреннего генератора не очень корректно
А в момент включения питания?
Rst должен удерживаться в 0, пока не запуститься и/или не стабилизируется генератор. Вы уверены что это условие выполняется?
Цитата
Использование внутреннего генератора не очень корректно
Вам же не предлагают отказаться от использования внешнего генератора совсем. Вам предлагают на время тестирования переключиться на внутренний генератор. Если с внутренним генератором эти "глюки" будут повторяться, значит проблема в другом, может в питании, может в программе, может ещё в чём то.
Lukyanov
Aug 21 2007, 07:32
Спасибо всем, кто ответил! Помогло увеличение постоянной времени RC-цепи при сбросе по питанию. Просто долго не мог проверить, не подпускали к плате.
Цитата(Lukyanov @ Aug 21 2007, 10:32)

Спасибо всем, кто ответил! Помогло увеличение постоянной времени RC-цепи при сбросе по питанию. Просто долго не мог проверить, не подпускали к плате.

Фигня какая-то. Если у вас получилось такое решение проблемы, то BOD должен был вылечить ее на корню, вы ее даже не заметили бы. Что-то мне подсказывает, что BOD все-таки не включен. А ну-ка точный список фузов в студию (если шьете авреалом, то прямо лог)...
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.