Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
14.06.2006, 13:36
|
|
Частый гость
Регистрация: 24.03.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ATMega128, MCUCSR
Brown-out включен, но он бит BORF не выставляет.
Режим совместимости с ATMega103 выключен.
На стек тоже не похоже, потому что программа по RESET
первым делом сохраняет в ОЗУ состояние регистра SP и
первые 6 ячеек стека. Там все корректно – SP = 10FF,
т.е. он пуст. По сохраненному стеку понятно, что
последний вызов был одной из функций которых и следовало вызывать в главном цикле.
Причем каждый раз разных функций, что говорит о том,
что сбой происходит в случайные моменты времени.
Кроме того, раз происходит сохранение этого всего,
значит точно был прыжок на метку 0000.
|
|
|
|
14.06.2006, 14:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
короче... далеко удаленная отладка это не просто ...
|
|
|
|
14.06.2006, 15:15
|
|
Частый гость
Регистрация: 21.04.2006
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ATMega128, MCUCSR
Сообщение от koko202
|
Кроме того, раз происходит сохранение этого всего,
значит точно был прыжок на метку 0000.
|
Значит остается программный глюк или прерывания бесятся.
Посмотрите, как в компиляторе затыкаются неиспользуемые прерывания:
1. jmp RESET
или
2. reti
Если первое, то попробуйте заменить на второе. По идее сбросы прекратятся. В этом случае - копать в сторону неиспользуемых прерываний.
|
|
|
|
14.06.2006, 19:12
|
|
Гражданин KAZUS.RU
Регистрация: 16.12.2004
Сообщений: 587
Сказал спасибо: 13
Сказали Спасибо 23 раз(а) в 9 сообщении(ях)
|
Я так понимаю, что работает несколько прерываний от таймеров и др. источников, вот такая ситуация обычно происходит при наложениии прерываний (суперпозиции), при этом PC MCU убегает в верхние адреса и "плавно добегает до "0000". Далее происходит описанная Вами ситуация - врядли это бросок напряжения BOD отработал бы.
Резюме - надо смотреть прерывания, не могут ли они в результате накладываться или при использовании исскуственной вложенности создавать замкнутый цикл, в результате чего портится возвратный стек или слетает адрес в PC.
|
|
|
|
15.06.2006, 13:07
|
|
Частый гость
Регистрация: 24.03.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ATMega128, MCUCSR
Спасибо otrog, я как раз забыл подсоединить модуль программы,
который все неиспользуемые прерывания перенаправляет
на заглушку инкрементирующую счетчик неожидаемых прерываний.
Также, по совету NemoCut32 я поставил ловушку в конец памяти,
чтоб быть уверенным,
что программа не убегает в верхние адреса.
К сожалению, ни то не другое не помогло – счетчик неожидаемых прерываний
остается нулевым, ловушка в конце памяти не срабатывает.
Я написал тестовую программу, в которой вообще запрещены прерывания,
(но ловушки на них стоят) и которая просто включает силовые тиристоры и уходит в бесконечный цикл (сторожевой таймер тоже отключен).
Результат тот же – сброс после выхода тиристоров на режим.
Видно все-таки помеха как-то хитро сбрасывает контроллер, да так что
в MCUCSR ничего не взводится.
|
|
|
|
16.06.2006, 10:18
|
|
Частый гость
Регистрация: 21.04.2006
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: ATMega128, MCUCSR
Сообщение от koko202
|
включает силовые тиристоры и уходит в бесконечный цикл (сторожевой таймер тоже отключен).
Результат тот же – сброс после выхода тиристоров на режим.
|
С этого и стоило начинать . Нагрузка какая? Наверняка индуктивная? Как управляете тиристорами? Напрямую - без опторазвязки? Питание на схему идет от-туда же, откуда и на титисторы?
Если да, то копать в сторону разводки платы и фильтрации питания.
ПС здесь хорошие статьи есть:
http://elart.narod.ru/
ППС но поведение меги остается непонятным.
|
|
|
|
19.06.2006, 05:54
|
|
Частый гость
Регистрация: 24.03.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ATMega128, MCUCSR
Непосредственно тиристоры управляются микроконтроллером на ATMega8, с опторазвязками
и тд., вещь готовая, рабочая и на нее грешить нельзя. Задача ATMega128 (она собрана пока на отладочной плате) просто давать сигнал ATMega8 типа ”поехали”, а также аналогичные сигналы всем другим системам
(пока не включенным). Кроме того, ATMega128 следит за выходным током с шунта – там стоит усилитель INA129 в паре с ISO122P, так что развязка есть. Шунтов в конце концов будет 8, в разных частях устройства, но пока подключен только один, после тиристоров.
Сигнал, идущий от шунта, имеет выбросы. Поставленные RC - фильтры их не давят,
INA129 усиливает, и они попадают на АЦП микроконтроллера.
Амплитуду их оценить трудно – они слишком узкие, на осциллографе плохо видно
и они нестабильные – не засинхронизуешся.
ATMega128 тоже их измеряет и показывает как FF – то есть максимальные.
Неужели ATMega128 реагирует на эти выбросы?
И еще интересный момент: я убрал+5v с AREF и
выставил 2.56v от ИОНа – сбросы ATMega128 прекратились.
Правда может при этом я еще что-то сделал – провода например передвинул.
Выбросы остались вроде неизменными, но сбросов ATMega128 нет.
Сейчас должен разводить плату, но волнует странное поведение ATMega128.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
atmega128 и PonyProg
|
Doctor-Morro |
Микроконтроллеры, АЦП, память и т.д |
0 |
23.05.2007 14:27 |
АЦП Atmega128
|
4ubaika |
Микроконтроллеры, АЦП, память и т.д |
0 |
18.03.2007 14:50 |
Закорочение 2-х ножек Atmega128
|
4ubaika |
Микроконтроллеры, АЦП, память и т.д |
3 |
07.03.2007 16:04 |
ATmega128
|
Lea |
Микроконтроллеры, АЦП, память и т.д |
3 |
06.06.2006 18:50 |
Прерывания в ATmega128
|
Святослав |
Микроконтроллеры, АЦП, память и т.д |
2 |
10.02.2006 16:28 |
Часовой пояс GMT +4, время: 05:01.
|
|