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

 
 
> SAM7S установка GPNVM-битов, виснет :(
OlegH
сообщение Aug 7 2010, 14:25
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Делаю проект на SAM7S128 и попутно осваиваю ARM.
Пытаюсь установить GPNVM0 и GPNVM1 биты для включения BrownOut Detector.
Пробую уже по-всякому, и так и сяк - но при выполнении все виснет... Даже WatchDog или J-Link потом не сбрасывает, помогает только выключение питания. Причем сами биты (один или оба) как раз устанавливаются...

Вот код IAR:
Код
__ramfunc void MemDelay(void)
{
  for (volatile int i=0; i<100; i++);
}

__ramfunc void EnableBrownOutDetector(void)
{
   __disable_irq();
    while ((AT91C_BASE_MC->MC_FSR & 1)==0);
    AT91C_BASE_MC->MC_FMR = (AT91C_BASE_MC->MC_FMR & ~AT91C_MC_FMCN) | (48 << 16); // 48 MHz
    AT91C_BASE_MC->MC_FCR = (0x5A<<24)|(1<<8)|AT91C_MC_FCMD_SET_GP_NVM;//AT91C_MC_FCMD_SET_GP_NVM;
    MemDelay();
    while ((AT91C_BASE_MC->MC_FSR & 1)==0);
    MemDelay();
    AT91C_BASE_MC->MC_FMR = (AT91C_BASE_MC->MC_FMR & ~AT91C_MC_FMCN) | (48 << 16); // 48 MHz
    AT91C_BASE_MC->MC_FCR = (0x5A<<24)|(0<<8)|AT91C_MC_FCMD_SET_GP_NVM;
    MemDelay();
    while ((AT91C_BASE_MC->MC_FSR & 1)==0);
   __enable_irq();
}



Сама программа во Flash.

EnableBrownOutDetector() вызывается по нажатию кнопки в меню отладочного терминала (DBGU).
Если ходить по шагам, то мертво виснет на записи первой (либо второй - уже точно не помню) команды.
Еще эффект - если SET_GP заменить на CLR_GP, то биты сбрасываются и очень шустро, ничего не виснет.

WatchDog включен примерно на 1 секунду (неужели биты устанавливаются дольше чем 1 секунда?)

Что это может быть ?
Go to the top of the page
 
+Quote Post



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

 


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


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