Прерывания в АРМе
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Eliseev 29 июля 2005 г. 12:42

Засёк, что проц входит в ДАТА АБОРТ режим, из-за того что при возникновении прерывания указатель стека указывает на несуществующий адрес. Но вот где указатель стэка мог съехать на какое-то левое значение не могу понять. В начале я его инициализирую, записываю корректный адрес. По ходу выполнения программы - останавливаю программу - указатель правильный. Как только прерывание происходит - первая же команда прерывания (STMDB SP, {...}) вызывает Data Abort, потому что стек-пойнтер указывает чёрт знает куда...
Вот. может есть у кого мысли почему стэк-пойнтер неправильный? И еще, вроде в описании написано, что для каждого режима свой стек-пойнтер. Скажите, я правильно его инициализирую: перехожу в режим IRQ, инициализирую стек-пойнтер, возвращаюсь в режим USR.

И для господина Ы: в ИАРе отлаживаю тоже из флеши, и таких глюков нет. Более того, как я уже говорил, можно после отладки в ИАРе, не отключая питания, вытащить разъем JTAG'а и прерывание будет нормально работать, причём даже хардварный резет не портит дело.
Всем спасибо, особенно г-ну Ы за отзывчивость.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru