реклама на сайте
подробности

 
 
> Странное поведение Меги2560, после сброса от watchdog
no_d@t@
сообщение May 22 2008, 14:59
Сообщение #1


Участник
*

Группа: Validating
Сообщений: 24
Регистрация: 4-02-08
Пользователь №: 34 736



Мега2560 + IAR + JTAGICE2.
Обратил внимание, что после сброса от watchdog Мега и IAR впадают в некую кому, причем в IARе вываливается сообщение, что target reset, т.е. reset проходит, но до breakpointа, поставленного в начале программы, дело не доходит, среда висит. если остановить выполнение программы, то IAR пишет странные вещи, типа: sleep mode или target busy, хотя sleep mode не включен. А вот Watchdog почему-то оказывается включен. В дизассемблере видно, что программа находится в теле функции __flashcpy, я так понимаю, что это что-то стартапное у IAR или нет?
Что делать? Как жить дальше? Где копать?

В IAR C/C++ Compiler Reference Guide упоминаний про __flashcpy не нашел. Саму __flashcpy нашел в src\lib\segment_init.c. Расскажите, что это за __flashcpy и зачем?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
no_d@t@
сообщение May 23 2008, 10:31
Сообщение #2


Участник
*

Группа: Validating
Сообщений: 24
Регистрация: 4-02-08
Пользователь №: 34 736



TO SasaVitebsk:
подробно перечитал ваш пост, отчитываюсь о прочитанном:
>> Есть птица, в настройках которая говорит, что стартовать надо с 0 адреса. В противном случае, стандартная иаровская инициализация процессора проскакивает незаметно для глаза пользователя.

с птицей разобрался

>> Теперь по вылету. Возможно у вас по WDT не на 0 стартует?
Да вроде с 0, а куда ей еще деваться? Я использую стандартный стастап файл и в программе ничего лишнего вроде не делаю.

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

вообще я вспомнил, что когда только перешел с меги 128 на 2560, был удивлен, что после сброса по watchdog, флаг WDE в watchdog не сбрасывается, т.е. он продолжает работать и снова ресетит контроллер (естественно я проверил, что соответствующий fuse выключен), пришлось в main первой строкой прописать остановку watchdog (Для сравнения - в меге 128 после сброса по watchdog, флаг WDE в watchdog сбрасывается сам, да так и должно быть).

>> Почитайте описание на компилятор
Читаю, понял, что мне в стартап нужно добавить свой код по остановке watchdog. Только как это сделать? Пишут, что нужно редактировать __low_level_init. Но как? В cstartup есть вызов XCALL __low_level_init, в src\ есть файл low_level_init.c. Что с этим делать?

В опциях проекта в IAR нигде не нашел ни слова про стартап.

SasaVitebsk, я очень ценю ваше внимание к моему посту. Поделитесь еще опытом, потыкайте - как копать?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 01:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0144 секунд с 7
ELECTRONIX ©2004-2016