ATmega128 работает не по алгоритму(((

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

ATmega128 работает не по алгоритму(((

Сообщение dedan »

возникла проблема с платой управления силовыми ключами - симисторами.. платы эти мы делаем давно.. и силовые и управляющие.. программа в atmega128 пишется на все платы одна и та же.. уже давно..

и тут пришла одна плата из партии мне на ремонт.. сгорели ключи.. плату починили.. и путем долгой отладки обнаружили причину..

время от времени, управляющий сигнал, как бы, виснет.. например в момент изменения ШИМ управления.. и ладно бы процессор просто подвисал.. после еще более долгой отладки(( пришли к выводу, что процессор идет по ходу программы.. заходит, например, в функцию формирования ШИМ управления.. доходит до произвольной строки и выходит из функции просто выходит(( причем на этом участке кода никакой возможности выйти из функции просто нет.. например PORTA.1=0; и все выполнил эту строку и вышел из функции где эта строка была((

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

за ранее очень благодарен!

п.с. у меня проблема видимо не только с одной функцией.. вот только сегодня стал свидетелем как после такого "подвисания" МК пропустил выполнение принудительного delay(100 мс)...
Большое спасибо всем, кто помогает разобраться =) !
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: ATmega128 работает не по алгоритму(((

Сообщение pyzhman »

Сишный компилятор освобождает программиста от рутины. Так что в этом плане все красиво и грешить только на свой алгоритм. Когда же пишешь на асме, то моментов, на которые нужно обращать внимание, на порядок больше. Тут уже помимо огрехов алгоритма множество моментов, касающихся именно камня. Итог: ищем свои косяки в любом случае. Опять же не исключены бяки, заложенные в железе.
PS. Как легко повесить груз своих проблем на чью-то недоработку: у них самопроизвольно прерывания срабатывают, там у них биты сами по себе сбрасываются и т.д. и т.п. Слышали-слышали. Вся жилетка мокрая от слез.
Docendo discimus
Реклама
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

Re: ATmega128 работает не по алгоритму(((

Сообщение dedan »

да я понимаю что проблемы в коде) или в взаимосвязи кода и железа платы.. просто чтобы это место найти, хотелось бы узнать было ли, у кого то, что то похожее и если было то почему?

просто, что программа выходит из функции не только моя идея, с этим вроде как согласились старшие товарищи по цеху)

хотя может все не так, и я просто где то.. давно и сильно скривил.. не отказываюсь от своей кривоты..

но вам спасибо, за скорое порицание =/
Большое спасибо всем, кто помогает разобраться =) !
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

Re: ATmega128 работает не по алгоритму(((

Сообщение ILYAUL »

Может он у Вас в этих местах на прерывания улетает . Подключайте отладчик и по всем точкам кода.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: ATmega128 работает не по алгоритму(((

Сообщение pyzhman »

Не порицание, упаси меня. Лишнее напоминание о необходимости тщательной отладки.
Docendo discimus
Реклама
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

Re: ATmega128 работает не по алгоритму(((

Сообщение dedan »

такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((

роль отладчика выполнял сам МК, в разных местах кода переменной Flag присваивались значения от 0 до "сколькито".. в определенных точках программы текущее значение переменной записывалось в ЕЕПРОМ(с меткой места где это происходит).. и после ошибки смотрелось последнее значение переменной Flag.. так и поняли что программа выходит из функции не там, где это вообще возможно, метка переменной flag была сильно не корректна для выхода из функции.. не совпадала с той, что стоит там где нормальный выход.. все метки были однозначны и не повторялись друг с другом.. и в большинстве случаев, кроме тех когда была ошибка, значение метки совпадает с тем, что должно было быть...
Большое спасибо всем, кто помогает разобраться =) !
Реклама
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: ATmega128 работает не по алгоритму(((

Сообщение Kavka »

Мнда... Весело, однако.
Блокировочные конденсаторы, "Непропай", брак металлизации отверстий на плате, надеюсь, уже исключили? Особенно по питанию МК.

А вопрос, собственно, стоит ли такого внимания если это один экземпляр глючный? Может проще глючный МК заменить?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

Re: ATmega128 работает не по алгоритму(((

Сообщение dedan »

еще забыл сказать.. ошибка повторяется весьма апериодически( хоть 5 раз подряд, хоть один раз в час( питание очень хорошее смотрели непосредственно в том месте где оно приходит на МК.. с металлизацией переходных отверстий у нас уже много раз были проблемы.. но они обычно однозначные, либо есть либо их нет.. разве они могут то быть, то не быть((

проверял на вибрацию.. методом постукивания отверткой по плате во время работы.. достаточно сильно и часто ударял, двигал.. ошибку это не провоцирует...
Большое спасибо всем, кто помогает разобраться =) !
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: ATmega128 работает не по алгоритму(((

Сообщение BOB51 »

поможет только внимательная отладка и в симуляторе (он есть в avr studio) и на макете :)
установить контрольные точки может лиш автор схемы и программы (желательно в одном лице) и то, если программа не на Си писана...(т.е. при разработке ПО на Си имели место стандартные библиотеки к собственной схемотехнике) иначе... весьма сочувствую... :cry:
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: ATmega128 работает не по алгоритму(((

Сообщение Satyr »

dedan писал(а):такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((
роль отладчика выполнял сам МК, в разных местах кода переменной Flag присваивались значения от 0 до "сколькито"..
Неее, это фигня, а не отладка. Работает такое, только когда вся основа отлажена и ничто, кроме конкретных фрагментов, вопросов не вызывает.

Намекните работодателю, что теряет деньги. Пара дней слепого тыканья специалиста стоят дороже отладчика.
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: ATmega128 работает не по алгоритму(((

Сообщение Kavka »

Несколько мыслей в слух - может что-то поможет.
1) Я, таки, не уловил на чём программа написана. Если на асм-е и используются прерывания, то проверить правильность таблицы прерываний. Проверить обработчики неиспользуемых прерываний, если таковые имеются.
2) Проверьте что с режимом совместимости с ATmega103, со всеми вытекающими.
3) Обработчики прерываний доступны на прямую только в первых 64Кб. Если программа на Си, то компилятор должен всё сделать сам. Но это только "должен", а что он на самом деле делает - вопрос. Посмотреть где располагаются обработчики прерываний и, возможно, передвинуть обработчики в начало кода. Как - это отдельный вопрос.
4) Проверить сторожевой таймер (watchdog).
5) Ещё раз проверить питание и Brown-out detector.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
phanis
Вымогатель припоя
Сообщения: 513
Зарегистрирован: Сб фев 19, 2011 18:04:08
Откуда: Татарстан, пос. Актюбинский
Контактная информация:

Re: ATmega128 работает не по алгоритму(((

Сообщение phanis »

Оптимизаторы компилятора могут напакостить. Размер и глубина стека. Возможные рекурсии.
Аватара пользователя
paskal
Нашел транзистор. Понюхал.
Сообщения: 160
Зарегистрирован: Пн сен 05, 2011 10:03:06
Откуда: Тула

Re: ATmega128 работает не по алгоритму(((

Сообщение paskal »

А силовые ключи чем управляют? Случайно не излучающей помехи нагрузкой? А то мне кажется у вас наводятся сильные помехи на процессор и вводят его в какой то ступор.
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

Re: ATmega128 работает не по алгоритму(((

Сообщение dedan »

я один из соразработчиков и схемотехники, и топологии ПП, и собственно самой программы.. знаю ее всю как родную..

таких выпустили уже тфу-тфу=( 300 шт за 4 года.. во время проведения разных ремонтов, с такой проблемой не встречался..

программа написана на СИ..
питание проверял, ниже браун детект - 4 Вольта, оно не спускается.. и не подходит к нему близко..
ключи силовые, если бы фонили, то фонили бы и на других платах, скорее всего, мы тоже об этом думали.. но на этой плате уже успели сменится почти все силовые ключи.. поэтому и то, что были какие то плохие ключи, мы тоже можно исключить..
вотчдог стоит, но тогда бы МК перезапускался, а тут он себя именно странно ведет.. хотя иногда и просто перезапускается..

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

всем спасибо за советы!
Большое спасибо всем, кто помогает разобраться =) !
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Re: ATmega128 работает не по алгоритму(((

Сообщение Kavka »

Так, т.е., имеются платы управления и силовая плата. И глючит МК на платах управления, когда их ставят конкретную силовую плату. Так?
Ну, дык, смотрите чем же выделяется эта самая силовая плата.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: ATmega128 работает не по алгоритму(((

Сообщение Shapa »

Привтствую! Почитал я вашу историю..и возникла у меня мысль. Которую, уже высказали
Kavka писал(а): А вопрос, собственно, стоит ли такого внимания если это один экземпляр глючный? Может проще глючный МК заменить?
Скажите пожалуйста, вы пробовали МК заменить? Ведь раз у вас сгорели ключи, которыми управлял МК, то скорее всего на МК "что-то" попало и кристалу пришел частичный кирдык
P.S. Да и брак производителя никто не отменял.
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: ATmega128 работает не по алгоритму(((

Сообщение demiurg301 »

причем на этом участке кода никакой возможности выйти из функции просто нет.. например PORTA.1=0;
Не в CVAVR пишите? У него бывают разные "глюки" если оптимизация не на максимуме. Но очень редко и в основном связана с "тупняками" типа одинаковых имён, отсутствия "volatile" и прочего.

Такая ситуация как у вас была , когда функция возвращала переменную, но я её ничему не присваивал и прога уходила в разные места программы. Оптимизация лечит...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Re: ATmega128 работает не по алгоритму(((

Сообщение uk8amk »

dedan писал(а):такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((
Почему роскошь? В сети куча простейших схем отладчика JTAG ICE с прошивкой. Все паяется максимум за вечер.
Я думаю ваша контора как-нибудь переживет затраты на покупку одной меги16 для отладчика. Ну можно у китайцев клон заказать за 10 баксов если паять лень(в принципе цена примерно такая и выходит).

Раньше я тоже как и вы отлаживался по косвенным проявлениям программы. Теперь понимаю как много времени было потрачено впустую...
dedan
Открыл глаза
Сообщения: 72
Зарегистрирован: Пт фев 11, 2011 22:55:45

Re: ATmega128 работает не по алгоритму(((

Сообщение dedan »

demiurg301 писал(а): Такая ситуация как у вас была , когда функция возвращала переменную, но я её ничему не присваивал и прога уходила в разные места программы..
именно это я хотел от кого-нибудь услышать) да тоже CVAVR..
Kavka писал(а):Так, т.е., имеются платы управления и силовая плата. И глючит МК на платах управления, когда их ставят конкретную силовую плату. Так?
Ну, дык, смотрите чем же выделяется эта самая силовая плата.
мы смотрели, осциллографом, все сигналы идущие на МК с силовой платы, и с МК на силовую плату.. все чистенькие, красивые, во время зависаний МК форму не меняющие.. но оч. быструю помеху так я думаю не увидишь( если в ней дело.. а так силовая вроде ничем не отличается.. мы еще пропаяли все элементы на ней..
Большое спасибо всем, кто помогает разобраться =) !
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

Re: ATmega128 работает не по алгоритму(((

Сообщение demiurg301 »

dedan писал(а):
именно это я хотел от кого-нибудь услышать) да тоже CVAVR..
Какая версия? Если 1.25.х то переходите на 2.04-2.05 - заметно удобнее и много глюков повылечивало.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»