Prowler 0 12 августа, 2010 Опубликовано 12 августа, 2010 · Жалоба Здравствуйте. Такая проблема, контроллер 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 0 13 августа, 2010 Опубликовано 13 августа, 2010 · Жалоба Оказалось, что процессор все таки стартует по внешнему ресету, но он виснет при передаче по 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; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться