Перейти к содержанию
    

Вотчдог у LPC

Доброго времени.

 

Настраиваю вотчдог от внешнего кварца (Selects the APB peripheral clock (PCLK)).

Всего один раз заметил такую вещь:

При сбросе мк от вотчдога, прыгнул в 0 и далее застрял на защелкивании внешнего кварца.

После этого проц так и стоял в этом положении не сбрасываясь.

Это было в режиме дебаг. Вот теперь думаю как быть.

Изменено пользователем AirDevil

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это было в режиме дебаг.

:) типа копаясь в потрохах контроллера, слегка стуча по периферии через JTAG и притормаживая ядро я добился каког-то эффекта c контроллерной периферией.... Неужели это случилось с Вами впервые?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) типа копаясь в потрохах контроллера, слегка стуча по периферии через JTAG и притормаживая ядро я добился каког-то эффекта c контроллерной периферией.... Неужели это случилось с Вами впервые?

В этих камнях ни разу еще до этого момента не использовал вотчдог. Разве что только для перезагрузки камня.

йа понял. Вы только скажите, возможна ли такая ситуация в релизе.

Может стоит выбрать другой ватчдог таймер клок сурс?

Вообще наиболее надежным какой является ист синхр?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

Я тоже его использовал, но решил отказаться. Хоть и не много элементов, но в ограниченом корпусе впихать места не хватило.

Можно его включать до всех инициализаций в самом начале выполнения программы.

 

Всё таки. Какой ист клоков лучше использовать?

Изменено пользователем AirDevil

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

+1. Я в кончном итоге отказался от внутреннего и пользую внешний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

 

В LPC213x один раз включенный вочдог отключить нельзя. Работает он стабильно.

Читайте документацию и аккуратно программируйте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В LPC213x один раз включенный вочдог отключить нельзя.
До перезагрузки (пусть той же собакой). Поэтому самое надежное - включать его в самом начале программы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До перезагрузки (пусть той же собакой). Поэтому самое надежное - включать его в самом начале программы.

Под началом понимаете место после 0x00000000? Или же можно и после инициализаций PLL и внешнего кварца?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под началом понимаете место после 0x00000000? Или же можно и после инициализаций PLL и внешнего кварца?

 

Можно когда угодно. С этого момента таймер вочдога начнёт считать и остановить счёт невозможно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Покритикуйте пожалуйста:

    reset_handler:

/*
    инициализация вотчдога.
*/        
    /* WDCLKSEL= 0x00; internal oscillator; */
    ldr r0, =WDT_BASE
    mov r1, #0x00    
    str r1, [r0, #WDCLKSEL_OFFSET]
    
    /*WDTC    = 0xffffff; */
    mov r1, #0xffffff
    str r1, [r0, #WDTC_OFFSET]    
        
    /* WDMOD = 3; */
    mov r1, #0x03
    str r1, [r0, #WDMOD_OFFSET]

    /* Enable WotchDog */
    mov r1, #0xAA
    str r1, [r0, #WDFEED_OFFSET]
    mov r1, #0x55
    str r1, [r0, #WDFEED_OFFSET]
/*
    конец инициализации вотчдога.
*/

Далее инициализация плл.

Внешнего кварца.

...

 

Правильно?

Изменено пользователем AirDevil

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для LPC213x:

 

// --------------------------------------------------------------------------------

void KickTheDog(void) // Reset the watchdog timer

{

// __DISABLE_INTERRUPT(); // Disable all interrupts

WD_WDFEED=0xaa; // Reset the watchdog with back to back writes

WD_WDFEED=0x55;

// __ENABLE_INTERRUPT(); // Enable all interrupts

}

// --------------------------------------------------------------------------------

void wdt_init(void) // Configure Watchdog

{

WD_WDTC=(peripheralClockFrequency/4)*30; // Watchdog timeout set to 30 second

WD_WDMOD=0x00000003; // Watchdog no interrupts and causes reset

WD_WDFEED=0xaa; // Start the watchdog

WD_WDFEED=0x55;

}

// --------------------------------------------------------------------------------

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

// __DISABLE_INTERRUPT(); // Disable all interrupts

WD_WDFEED=0xaa; // Reset the watchdog with back to back writes

WD_WDFEED=0x55;

// __ENABLE_INTERRUPT(); // Enable all interrupts

А что будет, если это вызвать из секции с запрещенными прерываниями :(

void wdt_init(void) // Configure Watchdog

{

WD_WDTC=(peripheralClockFrequency/4)*30; // Watchdog timeout set to 30 second

WD_WDMOD=0x00000003; // Watchdog no interrupts and causes reset

WD_WDFEED=0xaa; // Start the watchdog

WD_WDFEED=0x55;

}

Надо:

void wdt_init(void)                            // Configure Watchdog 
{
  WD_WDTC=(peripheralClockFrequency/4)*30;        // Watchdog timeout set to 30 second
  WD_WDMOD=0x00000003;                            // Watchdog no interrupts and causes reset
   KickTheDog();
}

Ибо тоже атомарность должна быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...