|
Сброс CM3 программно |
|
|
|
Apr 28 2012, 17:26
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Здраствуйте. Пытаюсь сделать сброс МК программно в соответствии с Цитата Software may initiate a reset (e.g. if it finds itself in a non-recoverable state). By asserting the SYSRESETREQ in the Application Interrupt and Reset Control Register (write 0x05FA 0004), a reset is issued. Делаю так: Код AIRCR=0x05FA0004; Но после этих действий программа вопреки моим ожиданиям оказывается не Reset_Handler, а в Default_Handler. Что я не правильно делаю? Спасибо.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 23)
|
Apr 28 2012, 19:24
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(GetSmart @ Apr 28 2012, 20:54)  Проц какой? EFMG890F128 Цитата(GetSmart @ Apr 28 2012, 20:54)  В LPC17xx юзер мануале написано "... не реализовано". Я цитату из reference manual-а приводит. Из неё следует что запрос реализован (если я правильно понял). Уточнение: программа попадает в HardFault_Handler.
|
|
|
|
|
Apr 28 2012, 19:59
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Apr 28 2012, 22:32)  В CMSIS это делается вот так: Заменил у себя: Код volatile unsigned char ResetRqFlag; int main() { if (ResetRqFlag) { ResetRqFlag=0; NVIC_SystemReset(); } Результат тот же, программа оказывается тут: Код void HardFault_Handler(void) { for (;;) GPIO->P[2].DOUTTGL=1; }
|
|
|
|
|
Apr 29 2012, 04:44
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Тогда остаётся только одно: в ваш чип забыли положить эту функцию!  Пишите в суппорт. ----------- Подумал ещё: а вы не перевели случайно процессор в user-mode? Может быть, из него нельзя писать в эти регистры? (Для проверки попробуйте вызвать NVIC_SystemReset() из прерывания).
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 3 2012, 20:45
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ Apr 29 2012, 07:44)  Тогда остаётся только одно: в ваш чип забыли положить эту функцию!  Нет, не забыли. Всё работает: и мой первый вариант и ваш и просто вызов NVIC_SystemReset. Почему сразу не заработал - загадка. Цитата(AHTOXA @ Apr 29 2012, 07:44)  Подумал ещё: а вы не перевели случайно процессор в user-mode? Хм. Трудно сказать. Reset задумывался сразу после входа в main (просто что бы проверить эту функцию). Вряд ли там в Reset_Handler где-то переход был. Да и не упоминалось в описании запроса на сброс о режиме процессора: Цитата Software may initiate a reset (e.g. if it finds itself in a non-recoverable state). By asserting the SYSRESETREQ in the Application Interrupt and Reset Control Register (write 0x05FA 0004), a reset is issued. Разве что где-ещё смотреть надо.
|
|
|
|
|
May 4 2012, 03:09
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(_Артём_ @ May 4 2012, 02:45)  Разве что где-ещё смотреть надо. В первоисточнике ( Cortex-M3 Technical Reference Manual): Цитата You can only fully access the NVIC from privileged mode, but you can pend interrupts in user-mode if you enable the Configuration Control Register (see Configuration Control Register on page8-25). Any other user-mode access causes a bus fault.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 4 2012, 14:48
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(AHTOXA @ May 4 2012, 17:40)  Здесь как раз всё нормально. По умолчанию кортексы работают в привилегированном режиме. Может быть. Пока с режимами и их переключениями не разбирался. Непривычно после АВР. Режимы какие-то - зачем они? Пока не улеглось в голове. Цитата(AHTOXA @ May 4 2012, 17:40)  Чтобы переключить их в user-mode, надо предпринять определённые действия. Попробую предпринять и проверить как будет тогда работать (когда найду как оно переключается).
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|