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

 
 
 
Reply to this topicStart new topic
> Вотчдог у LPC, Заметил такую вещь:
AirDevil
сообщение Jun 2 2009, 17:42
Сообщение #1


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

Группа: Участник
Сообщений: 98
Регистрация: 3-03-09
Пользователь №: 45 590



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

Настраиваю вотчдог от внешнего кварца (Selects the APB peripheral clock (PCLK)).
Всего один раз заметил такую вещь:
При сбросе мк от вотчдога, прыгнул в 0 и далее застрял на защелкивании внешнего кварца.
После этого проц так и стоял в этом положении не сбрасываясь.
Это было в режиме дебаг. Вот теперь думаю как быть.

Сообщение отредактировал AirDevil - Jun 2 2009, 17:49
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 2 2009, 20:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(AirDevil @ Jun 2 2009, 20:42) *
Это было в режиме дебаг.

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
AirDevil
сообщение Jun 3 2009, 04:39
Сообщение #3


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

Группа: Участник
Сообщений: 98
Регистрация: 3-03-09
Пользователь №: 45 590



Цитата(zltigo @ Jun 3 2009, 00:02) *
smile.gif типа копаясь в потрохах контроллера, слегка стуча по периферии через JTAG и притормаживая ядро я добился каког-то эффекта c контроллерной периферией.... Неужели это случилось с Вами впервые?

В этих камнях ни разу еще до этого момента не использовал вотчдог. Разве что только для перезагрузки камня.
йа понял. Вы только скажите, возможна ли такая ситуация в релизе.
Может стоит выбрать другой ватчдог таймер клок сурс?
Вообще наиболее надежным какой является ист синхр?
Go to the top of the page
 
+Quote Post
HARMHARM
сообщение Jun 3 2009, 05:06
Сообщение #4


читатель даташитов
****

Группа: Свой
Сообщений: 853
Регистрация: 5-11-06
Из: Днепропетровск
Пользователь №: 21 999



Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...
Go to the top of the page
 
+Quote Post
AirDevil
сообщение Jun 3 2009, 05:19
Сообщение #5


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

Группа: Участник
Сообщений: 98
Регистрация: 3-03-09
Пользователь №: 45 590



Цитата(HARMHARM @ Jun 3 2009, 09:06) *
Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

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

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

Сообщение отредактировал AirDevil - Jun 3 2009, 05:20
Go to the top of the page
 
+Quote Post
vesago
сообщение Jun 3 2009, 06:10
Сообщение #6


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Цитата(HARMHARM @ Jun 3 2009, 08:06) *
Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...

+1. Я в кончном итоге отказался от внутреннего и пользую внешний.
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 3 2009, 06:58
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(HARMHARM @ Jun 3 2009, 09:06) *
Наиболее надежная вещь - внешний вочдог. Мало знаю людей, которые используют внутренний. Хотя бы потому, что его можно отключить из софта, или даже не включить...


В LPC213x один раз включенный вочдог отключить нельзя. Работает он стабильно.
Читайте документацию и аккуратно программируйте.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 3 2009, 07:29
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(etoja @ Jun 3 2009, 09:58) *
В LPC213x один раз включенный вочдог отключить нельзя.
До перезагрузки (пусть той же собакой). Поэтому самое надежное - включать его в самом начале программы.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AirDevil
сообщение Jun 3 2009, 08:01
Сообщение #9


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

Группа: Участник
Сообщений: 98
Регистрация: 3-03-09
Пользователь №: 45 590



Цитата(Сергей Борщ @ Jun 3 2009, 11:29) *
До перезагрузки (пусть той же собакой). Поэтому самое надежное - включать его в самом начале программы.

Под началом понимаете место после 0x00000000? Или же можно и после инициализаций PLL и внешнего кварца?
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 3 2009, 08:40
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(AirDevil @ Jun 3 2009, 12:01) *
Под началом понимаете место после 0x00000000? Или же можно и после инициализаций PLL и внешнего кварца?


Можно когда угодно. С этого момента таймер вочдога начнёт считать и остановить счёт невозможно.
Go to the top of the page
 
+Quote Post
AirDevil
сообщение Jun 3 2009, 09:05
Сообщение #11


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

Группа: Участник
Сообщений: 98
Регистрация: 3-03-09
Пользователь №: 45 590



Покритикуйте пожалуйста:
Код
    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 - Jun 3 2009, 09:24
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 3 2009, 09:46
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Для 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;
}
// --------------------------------------------------------------------------------
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 3 2009, 10:04
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(etoja @ Jun 3 2009, 12:46) *
// __DISABLE_INTERRUPT(); // Disable all interrupts
WD_WDFEED=0xaa; // Reset the watchdog with back to back writes
WD_WDFEED=0x55;
// __ENABLE_INTERRUPT(); // Enable all interrupts

А что будет, если это вызвать из секции с запрещенными прерываниями sad.gif
Цитата
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();
}

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
etoja
сообщение Jun 3 2009, 10:27
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Цитата(zltigo @ Jun 3 2009, 14:04) *
Ибо тоже атомарность должна быть.


Верно, если длины стека хватает.
Go to the top of the page
 
+Quote Post

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

 


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


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