Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сброс LPC2142.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
DreamTwister
Скажите пожалуйста, как программно сбросить микроконтроллер?
aaarrr
WatchDog'ом. Как конкретно - почитайте соответствующий раздел UM.
DreamTwister
Ну про WatchDog я знаю, просто думал, что есть иной способ.
Получается только WatchDog?
aaarrr
Цитата(DreamTwister @ Jan 27 2009, 15:10) *
Получается только WatchDog?

На LPC21xx, насколько я помню, да. Неужели этого недостаточно?
Папа Карло
Извиняюсь, что влезаю, но чтоб зря темы не плодить...

Настроил сторожевую собаку вот так:
Код
//Watchdog
  WDTC = 15000000;
  WDMOD = 3;
  WDFEED = 0xAA;
  WDFEED = 0x55;


А скидываю вот так:
Код
/*----------------------------------------------------------------------------
*        Task 'watchdog': watchdog task
*---------------------------------------------------------------------------*/
__task void watchdog_task( void )
{
while( 1 )
    {
    WDFEED = 0xAA;
    WDFEED = 0x55;
    os_dly_wait( 50 );
    }
}


Стоит ОС RTX Kernel от Keil.
Задачу создал так:
Код
t_watchdog = os_tsk_create( watchdog_task, 3 );


Проблема в том, что периодически скидывается МК LPC2134.
Когда я отключил собаку, то МК перестал сбрасываться.

Что бы это означало ?
zltigo
Цитата(Папа Карло @ Jan 28 2009, 20:27) *
А скидываю вот так:



Как минимум так:

Код
      __disable_interrupt();
         WDFEED = 0xAA;
         WDFEED = 0x55;
         __enable_interrupt();

Ну а приоритетами задач и перегрузками разбирайтесь отдельно.
Папа Карло
Что то в Keil-е сообщает об ошибке, если писать __disable_interrupt() и __enable_interrupt().

Приоритет выставил 3, другие остальные задачи запускал под 1 и 2 приоритетами.

Как я понял, что задача имеет более высокий приоритет.

Чип работает на 60МГц и PCLK = 15МГц.
zltigo
Цитата(Папа Карло @ Jan 28 2009, 20:50) *
Что то в Keil-е сообщает об ошибке, если писать __disable_interrupt() и __enable_interrupt().



А что они делают совсем не понятно??? Используйте соответствующий inline keil-овский, или вызов системный вызов операционки.
aaarrr
Цитата(Папа Карло @ Jan 28 2009, 20:50) *
Что то в Keil-е сообщает об ошибке, если писать __disable_interrupt() и __enable_interrupt().

В Кейле - __disable_irq(), __enable_irq();

Цитата(Папа Карло @ Jan 28 2009, 20:50) *
Как я понял, что задача имеет более высокий приоритет.

Светодиодом в задаче помигайте - сразу станет ясно, клинит ее, или нет.
Папа Карло
Задачи не клинит, а завтра попробую __disable_irq...

Кстати, в симуляторе работает нормально.
Только, если в МК зашить, то перегружается.
Папа Карло
Заработало, как добавил __disable_irq
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.