Если Вам во время Ваших начальных экспериментов с процессорами Texas Instruments любого семейства захочется быстро стартануть и поэкспериментировать, то Вы не должны наступать на мои грабли! В чем суть?!
Во время отладки простой программы было замечено, что поработав какое-то время (минута-две), процессор сваливался в непонятное состояние, отладка как будто прекращалась: Graph Tool не обновлялся, когда держишь мышкой окно Graph tool; не появлялась в строке состояния CCS буква G :
и когда останавливал процессор (halt) и затем нажимал F10 ( Step Over ) - желтая стрелка пропадала ( зеленая в Дизассемблерном окне также исчезала).
Возникла мысль о том, что это watchDog timer. Да, действительно! Происходил сброс в непонятное место (видимо, из-за того, что не делаю в программе вообще никаких настроек).
Решение: для ваших экспериментов нужно отключать полностью WatchDog timer!
Вставлять следующий код до функции main() :
#define WDCR *((volatile int *)0x7029) /* WD Control reg */
#define DISABLE_WD 0x0068
void Disable_WD(void)
{
asm(" eallow");
WDCR |= DISABLE_WD;
asm(" edis");
}
В самой функции main() добавить:
Disable_WD();
Полностью пример можно посмотреть здесь
Во время отладки простой программы было замечено, что поработав какое-то время (минута-две), процессор сваливался в непонятное состояние, отладка как будто прекращалась: Graph Tool не обновлялся, когда держишь мышкой окно Graph tool; не появлялась в строке состояния CCS буква G :
и когда останавливал процессор (halt) и затем нажимал F10 ( Step Over ) - желтая стрелка пропадала ( зеленая в Дизассемблерном окне также исчезала).
Возникла мысль о том, что это watchDog timer. Да, действительно! Происходил сброс в непонятное место (видимо, из-за того, что не делаю в программе вообще никаких настроек).
Решение: для ваших экспериментов нужно отключать полностью WatchDog timer!
Вставлять следующий код до функции main() :
#define WDCR *((volatile int *)0x7029) /* WD Control reg */
#define DISABLE_WD 0x0068
void Disable_WD(void)
{
asm(" eallow");
WDCR |= DISABLE_WD;
asm(" edis");
}
В самой функции main() добавить:
Disable_WD();
Полностью пример можно посмотреть здесь
Комментариев нет:
Отправить комментарий