ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
132139
rhayader (22.09.2008 17:41, просмотров: 3675)
Добрового дня. Такой вопрос: возможно ли программно определить баг во внешнем генераторе (например, он не подключен или частота некорректна)? Сейчас у нас в плате перепутано и генераторы XTAL и RTC поменяны местами (10МГц и 32КГц). И вот виду того что у нас тут монтажники не очень добросовестны и иногда(почти всегда) не трезвы хотелось бы на будущее как то сделать, чтоб при баге в плате программа пыталась запуститься с внешнего генератора, если не получится, то работать от внутреннего. Код: SCS |= (1 << 5); // разрешаем работу основного генератора for(u32 i = 0; i <= 10000; i++) // ждем, пока не заработает { if( SCS & (1 << 6) ) break; // вау, работает, идём дальше delayus_rc(100); } if( SCS & (1 << 6) ) // проверяем, действительно ли заработал основной генератор { CLKSRCSEL = 0x1; // повезло, выбираем его в качестве источника ТЧ PLLCFG = SYS_CalcPLLCFG( MAIN_OSC_FREQ ); break; } На строчке CLKSRCSEL = 0x1 виснет, в дебагере выдается какое-то сообщение Unable to halt chip(expecting nMREQ=1, DBGACK=1) found nMREQ=0, DBGACK=0. А генератор как будто бы заработал... Может как-нибудь все-таки можно исхитриться и решить такую задачу? Заранее спасибо.