Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зависает SAM7S64
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Joy
В проце SAM7S64 в цикле выполняется одна и та же последовательность функций. Идет обмен пакетами по USART1 и обмен данными по программно эмулируемому SPI. Проблема в том, что после произвольного количества циклов проц подвисает на моменте передачи байта по USART1, при чем реанимировать его можно только передергиванием питания (на команды JTag'а не отзывается). Кварц после сбоя не работает.
Watchdog работает корректно, это не он.
В обработчиках исключений стоят джампы на начальный сброс, тоже на них не похоже.
help.gif
Может есть идеи, где искать?
SpiritDance
В обработчиках исключений должны стоять джампы сами на себя! Если процессор в режиме прерывания начнет выполнение стартапа(которое для User mode)... Я даже представить не могу что будет.
Joy
Цитата(SpiritDance @ Aug 16 2006, 16:29) *
В обработчиках исключений должны стоять джампы сами на себя! Если процессор в режиме прерывания начнет выполнение стартапа(которое для User mode)... Я даже представить не могу что будет.

был и такой вариант. по идее, если в этом случае происходит исключение, проц подвисает, но не безнадежно, т.е., он должен по идее откликаться на жтаг... а это не происходит sad.gif
что может послужить причиной впадания в такое состояние? могут ли это быть неправильные компоненты плл-цепочки?
Harbour
там этих компонентов аж пару штук - надоть смотреть чтобы MCK <= 55MHZ, то же относится и к pll, ну и качество питания. если лок-биты не стоят - jtag должон работать всегда.
Master
Цитата(Joy @ Aug 16 2006, 13:27) *
Кварц после сбоя не работает. ...
Попробуйте пропаять кварц. Или заменить на другой. Такая же ерунда была. Оказалось, одна нога кварца обломалась аккурат возле корпуса.
А ещё лучше залейте код какого-нибудь примера для AT91SAM7S64, и с новым кварцем погоняйте.
Joy
Все это я уже раза по 4 проверил sad.gif Кварц перепаивал, лок-биты не ставил, а виснет наглухо! нашел уже кусок, от которого (вроде бы) все зависит. это цикл от 0 до 8, в котором (теперь уже) просто инкрементируется беззнаковый чар. все. есть цикл - виснет, нет цикла - жужжит. и это не watchdog sad.gif размером стека игрался.

то ли лыжи не едут, то ли..... на этом мысль останавливается wink.gif
Harbour
тут надо определится - железо виснет или прога. кварц можно 100 раз перепать, но если схема/плата приводит к его нестабильной работе - получим такой же результат. Перейдите на RC генератор. Далее что там с питанием (?) так и не понятно, надо произвести телодвижения в данном направлении, потому как я еще не видел чтобы от постов в форум что-либо само заработало wink.gif Потом никто не гарантирует что Ваша прога не отрубает PLL/MCK путем записи в "левый адрес". 2 довольно ценных рекомендации которые Вам дали, Вы не выполнили, селяви.
SpiritDance
Помигайте светодиодом в конце-концов, сбой работы жтага не говорит о том что проц висит. Это означает только то что jtag перестает работать на частоте которой работал сначала.

За самом ниблюдал следующее - при неправильной установке параметров генератора или при сбое подачи чатоты процессор переходил на slowclock (помоему еше и на pll помноженный), причем при воосттановлении подачи частоты начинал опять работать от нее, только на ресет уже не откликался.
Недавно была странность, причем на одном из двух процессоров. После записи во влеш процессор прыгал каким-то непонятным образом на поллед функцию приема по усарту и там висел. Причем когда проходила запись по шагам по шагам все работало, когда говорил run или просто запускал начинались чудеса. Так и не понял что=это значило, но когда прошил программу, выдернул шнур отладчика, и передернул питание - заработало как надо. Подозреваю что-то с клоками было или с ресетом - программа работающая на проце с внешним генератором не сбоила. Странно.
Joy
Цитата(Harbour @ Aug 18 2006, 05:25) *
тут надо определится - железо виснет или прога.

похоже все-таки прога.... я ж говорю, нашел цикл, от которого все зависит. мне кжется, в прерывании закакивается какой-то регистр... сижу разбираю листинги...
правда, открытым остается вопрос о том, что это за состояние и как туда можно попасть?
Цитата(Harbour @ Aug 18 2006, 05:25) *
кварц можно 100 раз перепать, но если схема/плата приводит к его нестабильной работе - получим такой же результат. Перейдите на RC генератор.

...вариант... надо попробовать....
Цитата(Harbour @ Aug 18 2006, 05:25) *
Далее что там с питанием (?) так и не понятно, надо произвести телодвижения в данном направлении, потому как я еще не видел чтобы от постов в форум что-либо само заработало wink.gif Потом никто не гарантирует что Ваша прога не отрубает PLL/MCK путем записи в "левый адрес". 2 довольно ценных рекомендации которые Вам дали, Вы не выполнили, селяви.

питание от LP2951, вроде схема проверенная...
МСК = 48МГц, pll посчитан по ексельке от атмела, лок-биты не стоят...


Цитата(SpiritDance @ Aug 18 2006, 06:55) *
Помигайте светодиодом в конце-концов, сбой работы жтага не говорит о том что проц висит. Это означает только то что jtag перестает работать на частоте которой работал сначала.

я б помигал, тока вот когда эта беда приключается, порты в пул-ап переходят и все диоды загораются (открыаются транзисторы, рулящие диодами). да и прога перестает подавать признаки жизни
Цитата(SpiritDance @ Aug 18 2006, 06:55) *
За самом ниблюдал следующее - при неправильной установке параметров генератора или при сбое подачи чатоты процессор переходил на slowclock (помоему еше и на pll помноженный), причем при воосттановлении подачи частоты начинал опять работать от нее, только на ресет уже не откликался.
Недавно была странность, причем на одном из двух процессоров. После записи во влеш процессор прыгал каким-то непонятным образом на поллед функцию приема по усарту и там висел. Причем когда проходила запись по шагам по шагам все работало, когда говорил run или просто запускал начинались чудеса. Так и не понял что=это значило, но когда прошил программу, выдернул шнур отладчика, и передернул питание - заработало как надо. Подозреваю что-то с клоками было или с ресетом - программа работающая на проце с внешним генератором не сбоила. Странно.

ух ты! а это, как говорил ги де мопассан, уже ближе к телу smile.gif а нельзя ли поподробней про "неправильные установки параметров генератора"?
SpiritDance
Все просто.

Во первых
У меня был внешний генератор, внутренний при этом я отключить "забыл". Потом можете попробовать установить частоту MCK больше 70 при работе из флеш - процессор при этом перейдет на slow clock.

Во вторых
Генератор был подпаян проводами, и один проводок отпаивался во время работы, не специально, потом запаивался назад, в это время происходило описанное выше переключение клоков, после которого не работал ресет, но программа работала как обычно - мигала исправно светодиодом с положенными интервалами. Кроме того посмотрите не дергается ли извне случайно ножка "тест" во время работы.
Harbour
Вот и чуденько - если железо пашет - значит остальное дело Ваших же програмерских рук - судя по симптомам, прога перетирает свою память, включая системные регистры cpu wink.gif - отладочные сообщения и consistency проверки - Ваш лучший друг, можно их #ifdef DEBUG'ом отделить от кода для удобства.
Joy
Цитата(Harbour @ Aug 19 2006, 04:43) *
Вот и чуденько - если железо пашет - значит остальное дело Ваших же програмерских рук - судя по симптомам, прога перетирает свою память, включая системные регистры cpu wink.gif - отладочные сообщения и consistency проверки - Ваш лучший друг, можно их #ifdef DEBUG'ом отделить от кода для удобства.

Именно этим и занимаюсь smile.gif С толку меня сбивает то, что глючное место может сработать так как надо n-е кол-во раз и только потом заглючить (крутится бесконечный цикл с двумя ф-ями, одна - упомянутый выше цикл, вторая - передача по СОМ-порту со всеми прилагающимися обработчиками прерываний). Единственное подозрение на прерывания, их листинги щас и прочесываю...
Joy
Новые подробности: проц на ресет не реагирует sad.gif То есть, пока он не завис, ресет срабатывает. Но как тока он подвисает, то низкий уровень на ноге ресета ничего не дает. К чему бы это?...
Harbour
Если вниматально почитать доку на RSTC то можно вполне понять почему wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.