Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Виснет Silabs C8051F930
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Prowler
Здравствуйте.

Такая проблема, контроллер C8051F930 зависает при восстановлении питания после сброса по пониженному питанию (Vrst).

1) Организация питания:
VBAT - CR2032
VDD - 3.3V, при пропадании переключается на CR2032
При севшей батареи МК циклически сбрасывается по Vrst (1.75V), стартует(выполняется часть кода) и снова сбрасывается. При возврате питания 3,3V на VDD МК зависает. По сигналу RESET на внешнем выводе, по видимому, входит в режим сброса (изменяются сигналы на выводах), но не стартует после него. Выходит из зависания только при снятии напряжения с VDD и VBAT.
2) В программе организован переход в режим SLEEP при переключении на батарейное питание и выход из него по событию PORT MATCH. Генератор внутренний 24,5МГц.

Симптомы похожи на 13-ый пункт ерраты, но приведенное там решение не помогает.


Prowler
Оказалось, что процессор все таки стартует по внешнему ресету, но он виснет при передаче по SMBUS в самом начале программы, в цикле проверки флага занятости. Функции работы с SMBUS взяты из AN141.
Причем если старт МК происходит после сброса питания и с VDD и с VBAT, то все нормально, если же после случая описанного в первом посте, то бесконечно зацикливается.

Код
void SMB_Write (void)
{
   while (SMB_BUSY);                   // Wait for SMBus to be free.
   SMB_BUSY = 1;                       // Claim SMBus (set to busy)
   SMB_RW = 0;                         // Mark this transfer as a WRITE
   STA = 1;      
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.