ATmega128 работает не по алгоритму(((
ATmega128 работает не по алгоритму(((
возникла проблема с платой управления силовыми ключами - симисторами.. платы эти мы делаем давно.. и силовые и управляющие.. программа в atmega128 пишется на все платы одна и та же.. уже давно..
и тут пришла одна плата из партии мне на ремонт.. сгорели ключи.. плату починили.. и путем долгой отладки обнаружили причину..
время от времени, управляющий сигнал, как бы, виснет.. например в момент изменения ШИМ управления.. и ладно бы процессор просто подвисал.. после еще более долгой отладки(( пришли к выводу, что процессор идет по ходу программы.. заходит, например, в функцию формирования ШИМ управления.. доходит до произвольной строки и выходит из функции просто выходит(( причем на этом участке кода никакой возможности выйти из функции просто нет.. например PORTA.1=0; и все выполнил эту строку и вышел из функции где эта строка была((
я понимаю что нужно выкладывать и код программы.. и схемы платы.. но хотелось узнать не столько, что именно у меня сделано не так (уверен таких мест будет просто слишком много и их исправление займет очень много времени) , а сталкивался ли кто то с похожей проблемой, и в чем была проблема??
за ранее очень благодарен!
п.с. у меня проблема видимо не только с одной функцией.. вот только сегодня стал свидетелем как после такого "подвисания" МК пропустил выполнение принудительного delay(100 мс)...
и тут пришла одна плата из партии мне на ремонт.. сгорели ключи.. плату починили.. и путем долгой отладки обнаружили причину..
время от времени, управляющий сигнал, как бы, виснет.. например в момент изменения ШИМ управления.. и ладно бы процессор просто подвисал.. после еще более долгой отладки(( пришли к выводу, что процессор идет по ходу программы.. заходит, например, в функцию формирования ШИМ управления.. доходит до произвольной строки и выходит из функции просто выходит(( причем на этом участке кода никакой возможности выйти из функции просто нет.. например PORTA.1=0; и все выполнил эту строку и вышел из функции где эта строка была((
я понимаю что нужно выкладывать и код программы.. и схемы платы.. но хотелось узнать не столько, что именно у меня сделано не так (уверен таких мест будет просто слишком много и их исправление займет очень много времени) , а сталкивался ли кто то с похожей проблемой, и в чем была проблема??
за ранее очень благодарен!
п.с. у меня проблема видимо не только с одной функцией.. вот только сегодня стал свидетелем как после такого "подвисания" МК пропустил выполнение принудительного delay(100 мс)...
Большое спасибо всем, кто помогает разобраться =) !
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: ATmega128 работает не по алгоритму(((
Сишный компилятор освобождает программиста от рутины. Так что в этом плане все красиво и грешить только на свой алгоритм. Когда же пишешь на асме, то моментов, на которые нужно обращать внимание, на порядок больше. Тут уже помимо огрехов алгоритма множество моментов, касающихся именно камня. Итог: ищем свои косяки в любом случае. Опять же не исключены бяки, заложенные в железе.
PS. Как легко повесить груз своих проблем на чью-то недоработку: у них самопроизвольно прерывания срабатывают, там у них биты сами по себе сбрасываются и т.д. и т.п. Слышали-слышали. Вся жилетка мокрая от слез.
PS. Как легко повесить груз своих проблем на чью-то недоработку: у них самопроизвольно прерывания срабатывают, там у них биты сами по себе сбрасываются и т.д. и т.п. Слышали-слышали. Вся жилетка мокрая от слез.
Docendo discimus
Re: ATmega128 работает не по алгоритму(((
да я понимаю что проблемы в коде) или в взаимосвязи кода и железа платы.. просто чтобы это место найти, хотелось бы узнать было ли, у кого то, что то похожее и если было то почему?
просто, что программа выходит из функции не только моя идея, с этим вроде как согласились старшие товарищи по цеху)
хотя может все не так, и я просто где то.. давно и сильно скривил.. не отказываюсь от своей кривоты..
но вам спасибо, за скорое порицание =/
просто, что программа выходит из функции не только моя идея, с этим вроде как согласились старшие товарищи по цеху)
хотя может все не так, и я просто где то.. давно и сильно скривил.. не отказываюсь от своей кривоты..
но вам спасибо, за скорое порицание =/
Большое спасибо всем, кто помогает разобраться =) !
Re: ATmega128 работает не по алгоритму(((
Может он у Вас в этих местах на прерывания улетает . Подключайте отладчик и по всем точкам кода.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: ATmega128 работает не по алгоритму(((
Не порицание, упаси меня. Лишнее напоминание о необходимости тщательной отладки.
Docendo discimus
- Реклама
Re: ATmega128 работает не по алгоритму(((
такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((
роль отладчика выполнял сам МК, в разных местах кода переменной Flag присваивались значения от 0 до "сколькито".. в определенных точках программы текущее значение переменной записывалось в ЕЕПРОМ(с меткой места где это происходит).. и после ошибки смотрелось последнее значение переменной Flag.. так и поняли что программа выходит из функции не там, где это вообще возможно, метка переменной flag была сильно не корректна для выхода из функции.. не совпадала с той, что стоит там где нормальный выход.. все метки были однозначны и не повторялись друг с другом.. и в большинстве случаев, кроме тех когда была ошибка, значение метки совпадает с тем, что должно было быть...
роль отладчика выполнял сам МК, в разных местах кода переменной Flag присваивались значения от 0 до "сколькито".. в определенных точках программы текущее значение переменной записывалось в ЕЕПРОМ(с меткой места где это происходит).. и после ошибки смотрелось последнее значение переменной Flag.. так и поняли что программа выходит из функции не там, где это вообще возможно, метка переменной flag была сильно не корректна для выхода из функции.. не совпадала с той, что стоит там где нормальный выход.. все метки были однозначны и не повторялись друг с другом.. и в большинстве случаев, кроме тех когда была ошибка, значение метки совпадает с тем, что должно было быть...
Большое спасибо всем, кто помогает разобраться =) !
Re: ATmega128 работает не по алгоритму(((
Мнда... Весело, однако.
Блокировочные конденсаторы, "Непропай", брак металлизации отверстий на плате, надеюсь, уже исключили? Особенно по питанию МК.
А вопрос, собственно, стоит ли такого внимания если это один экземпляр глючный? Может проще глючный МК заменить?
Блокировочные конденсаторы, "Непропай", брак металлизации отверстий на плате, надеюсь, уже исключили? Особенно по питанию МК.
А вопрос, собственно, стоит ли такого внимания если это один экземпляр глючный? Может проще глючный МК заменить?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: ATmega128 работает не по алгоритму(((
еще забыл сказать.. ошибка повторяется весьма апериодически( хоть 5 раз подряд, хоть один раз в час( питание очень хорошее смотрели непосредственно в том месте где оно приходит на МК.. с металлизацией переходных отверстий у нас уже много раз были проблемы.. но они обычно однозначные, либо есть либо их нет.. разве они могут то быть, то не быть((
проверял на вибрацию.. методом постукивания отверткой по плате во время работы.. достаточно сильно и часто ударял, двигал.. ошибку это не провоцирует...
проверял на вибрацию.. методом постукивания отверткой по плате во время работы.. достаточно сильно и часто ударял, двигал.. ошибку это не провоцирует...
Большое спасибо всем, кто помогает разобраться =) !
Re: ATmega128 работает не по алгоритму(((
поможет только внимательная отладка и в симуляторе (он есть в avr studio) и на макете
установить контрольные точки может лиш автор схемы и программы (желательно в одном лице) и то, если программа не на Си писана...(т.е. при разработке ПО на Си имели место стандартные библиотеки к собственной схемотехнике) иначе... весьма сочувствую...
установить контрольные точки может лиш автор схемы и программы (желательно в одном лице) и то, если программа не на Си писана...(т.е. при разработке ПО на Си имели место стандартные библиотеки к собственной схемотехнике) иначе... весьма сочувствую...
Re: ATmega128 работает не по алгоритму(((
Неее, это фигня, а не отладка. Работает такое, только когда вся основа отлажена и ничто, кроме конкретных фрагментов, вопросов не вызывает.dedan писал(а):такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((
роль отладчика выполнял сам МК, в разных местах кода переменной Flag присваивались значения от 0 до "сколькито"..
Намекните работодателю, что теряет деньги. Пара дней слепого тыканья специалиста стоят дороже отладчика.
Re: ATmega128 работает не по алгоритму(((
Несколько мыслей в слух - может что-то поможет.
1) Я, таки, не уловил на чём программа написана. Если на асм-е и используются прерывания, то проверить правильность таблицы прерываний. Проверить обработчики неиспользуемых прерываний, если таковые имеются.
2) Проверьте что с режимом совместимости с ATmega103, со всеми вытекающими.
3) Обработчики прерываний доступны на прямую только в первых 64Кб. Если программа на Си, то компилятор должен всё сделать сам. Но это только "должен", а что он на самом деле делает - вопрос. Посмотреть где располагаются обработчики прерываний и, возможно, передвинуть обработчики в начало кода. Как - это отдельный вопрос.
4) Проверить сторожевой таймер (watchdog).
5) Ещё раз проверить питание и Brown-out detector.
1) Я, таки, не уловил на чём программа написана. Если на асм-е и используются прерывания, то проверить правильность таблицы прерываний. Проверить обработчики неиспользуемых прерываний, если таковые имеются.
2) Проверьте что с режимом совместимости с ATmega103, со всеми вытекающими.
3) Обработчики прерываний доступны на прямую только в первых 64Кб. Если программа на Си, то компилятор должен всё сделать сам. Но это только "должен", а что он на самом деле делает - вопрос. Посмотреть где располагаются обработчики прерываний и, возможно, передвинуть обработчики в начало кода. Как - это отдельный вопрос.
4) Проверить сторожевой таймер (watchdog).
5) Ещё раз проверить питание и Brown-out detector.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
-
phanis
- Вымогатель припоя
- Сообщения: 513
- Зарегистрирован: Сб фев 19, 2011 18:04:08
- Откуда: Татарстан, пос. Актюбинский
- Контактная информация:
Re: ATmega128 работает не по алгоритму(((
Оптимизаторы компилятора могут напакостить. Размер и глубина стека. Возможные рекурсии.
- paskal
- Нашел транзистор. Понюхал.
- Сообщения: 160
- Зарегистрирован: Пн сен 05, 2011 10:03:06
- Откуда: Тула
Re: ATmega128 работает не по алгоритму(((
А силовые ключи чем управляют? Случайно не излучающей помехи нагрузкой? А то мне кажется у вас наводятся сильные помехи на процессор и вводят его в какой то ступор.
Если бы на станции "Мир" стояли Винды, она бы еще висела и висела...
Re: ATmega128 работает не по алгоритму(((
я один из соразработчиков и схемотехники, и топологии ПП, и собственно самой программы.. знаю ее всю как родную..
таких выпустили уже тфу-тфу=( 300 шт за 4 года.. во время проведения разных ремонтов, с такой проблемой не встречался..
программа написана на СИ..
питание проверял, ниже браун детект - 4 Вольта, оно не спускается.. и не подходит к нему близко..
ключи силовые, если бы фонили, то фонили бы и на других платах, скорее всего, мы тоже об этом думали.. но на этой плате уже успели сменится почти все силовые ключи.. поэтому и то, что были какие то плохие ключи, мы тоже можно исключить..
вотчдог стоит, но тогда бы МК перезапускался, а тут он себя именно странно ведет.. хотя иногда и просто перезапускается..
как я понял больше никто не сталкивался с таким поведением в работе МК.. значит скорее это старая болячка, которую я не выцепил за время работы с этими платами.. но тогда не понятно почему она повторяется так часто и именно на этой силовой плате(мы проверили на этой силовой уже 3 управляющие платы, каждая со своим МК - все повторяется).. буду дальше искать..
всем спасибо за советы!
таких выпустили уже тфу-тфу=( 300 шт за 4 года.. во время проведения разных ремонтов, с такой проблемой не встречался..
программа написана на СИ..
питание проверял, ниже браун детект - 4 Вольта, оно не спускается.. и не подходит к нему близко..
ключи силовые, если бы фонили, то фонили бы и на других платах, скорее всего, мы тоже об этом думали.. но на этой плате уже успели сменится почти все силовые ключи.. поэтому и то, что были какие то плохие ключи, мы тоже можно исключить..
вотчдог стоит, но тогда бы МК перезапускался, а тут он себя именно странно ведет.. хотя иногда и просто перезапускается..
как я понял больше никто не сталкивался с таким поведением в работе МК.. значит скорее это старая болячка, которую я не выцепил за время работы с этими платами.. но тогда не понятно почему она повторяется так часто и именно на этой силовой плате(мы проверили на этой силовой уже 3 управляющие платы, каждая со своим МК - все повторяется).. буду дальше искать..
всем спасибо за советы!
Большое спасибо всем, кто помогает разобраться =) !
Re: ATmega128 работает не по алгоритму(((
Так, т.е., имеются платы управления и силовая плата. И глючит МК на платах управления, когда их ставят конкретную силовую плату. Так?
Ну, дык, смотрите чем же выделяется эта самая силовая плата.
Ну, дык, смотрите чем же выделяется эта самая силовая плата.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Shapa
- Встал на лапы
- Сообщения: 127
- Зарегистрирован: Пт июн 20, 2008 09:38:05
- Откуда: Харьков
- Контактная информация:
Re: ATmega128 работает не по алгоритму(((
Привтствую! Почитал я вашу историю..и возникла у меня мысль. Которую, уже высказали
P.S. Да и брак производителя никто не отменял.
Скажите пожалуйста, вы пробовали МК заменить? Ведь раз у вас сгорели ключи, которыми управлял МК, то скорее всего на МК "что-то" попало и кристалу пришел частичный кирдыкKavka писал(а): А вопрос, собственно, стоит ли такого внимания если это один экземпляр глючный? Может проще глючный МК заменить?
P.S. Да и брак производителя никто не отменял.
-
demiurg301
- Опытный кот
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Re: ATmega128 работает не по алгоритму(((
Не в CVAVR пишите? У него бывают разные "глюки" если оптимизация не на максимуме. Но очень редко и в основном связана с "тупняками" типа одинаковых имён, отсутствия "volatile" и прочего.причем на этом участке кода никакой возможности выйти из функции просто нет.. например PORTA.1=0;
Такая ситуация как у вас была , когда функция возвращала переменную, но я её ничему не присваивал и прога уходила в разные места программы. Оптимизация лечит...
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: ATmega128 работает не по алгоритму(((
Почему роскошь? В сети куча простейших схем отладчика JTAG ICE с прошивкой. Все паяется максимум за вечер.dedan писал(а):такой роскоши как отладчика у нас нету(( я счастлив что нам осциллограф цифровой купили(((
Я думаю ваша контора как-нибудь переживет затраты на покупку одной меги16 для отладчика. Ну можно у китайцев клон заказать за 10 баксов если паять лень(в принципе цена примерно такая и выходит).
Раньше я тоже как и вы отлаживался по косвенным проявлениям программы. Теперь понимаю как много времени было потрачено впустую...
Re: ATmega128 работает не по алгоритму(((
именно это я хотел от кого-нибудь услышать) да тоже CVAVR..demiurg301 писал(а): Такая ситуация как у вас была , когда функция возвращала переменную, но я её ничему не присваивал и прога уходила в разные места программы..
мы смотрели, осциллографом, все сигналы идущие на МК с силовой платы, и с МК на силовую плату.. все чистенькие, красивые, во время зависаний МК форму не меняющие.. но оч. быструю помеху так я думаю не увидишь( если в ней дело.. а так силовая вроде ничем не отличается.. мы еще пропаяли все элементы на ней..Kavka писал(а):Так, т.е., имеются платы управления и силовая плата. И глючит МК на платах управления, когда их ставят конкретную силовую плату. Так?
Ну, дык, смотрите чем же выделяется эта самая силовая плата.
Большое спасибо всем, кто помогает разобраться =) !
-
demiurg301
- Опытный кот
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Re: ATmega128 работает не по алгоритму(((
Какая версия? Если 1.25.х то переходите на 2.04-2.05 - заметно удобнее и много глюков повылечивало.dedan писал(а):
именно это я хотел от кого-нибудь услышать) да тоже CVAVR..


