Добавлено after 2 minutes 22 seconds: AlanDrakes, напряжение при передаче падает до 3,5 вольт всего. Даже без батарейки одних кондёров хватает на 2 передачи
Тогда BOD отпадает. Жаль. Это был хороший вариант. На батарейном питании при низком напряжении (около 2В) (вместо батарей был ЛБП) поведение становилось довольно занятным.
jcxz правильно предложил - уменьшить паузы засыпания и сделать эдакий стресс-тест. Желательно так же выводить данные в какой-нибудь логгер перед переходом в сон и после пробуждения.
Собирать... ну... пусть будет текущий адрес стэка (ну мало ли!) - он должен совпадать от запуска к запуску; Напряжение батареи прямо перед выключением (мало ли, вдруг просадка всё же случается?), флаги периферии. Что бы ещё?.. Флаги состояния FLASH->SR ?
Подключить к отладчику вряд ли получится - он будет терять соединение при каждом уходе в StandBy, ибо ядро обесточивается. Сам пробовал - довольно неудобно. Отладка превращается в "покури мануал, подумай, что мог сделать неправильно. Исправь, прошей, запусти, читай лог". К сожалению отладка глубже чем в глубоком сне уже невозможна.
А... Развивая идею логгирования. Есть у меня одна мысль. После очередного включения, когда звёзды сошлись очень неудачно, у чипа может быть недоступна память. Попробуйте в этом случае всё же подключить отладчик БЕЗ броса питания. Если чип появится - смотрите регистры ядра и SCB. В частности - PC, SP, SCB->VTOR и переопределите "Фатальные" ошибки (хотя вылавливать их будет то ещё удовольствие)
Добавлено after 2 minutes 49 seconds: AlanDrakes, Кстати, да. Kost286, а какой диапазон напряжения у прибора?
Если подключать батарейку с разряженными конденсаторами, то передачи сразу нет, из-за относительно медленной зарядки конденсаторов и в этот момент контроллер даёт прерывание PVR. Оттуда он засыпает снова, на большее время. И при этом РЕСЕТ как положено работает. Вообще есть мнение что возможно тактовый генератор LSI останавливается.
Добавлено after 2 minutes 49 seconds: AlanDrakes, Кстати, да. Kost286, а какой диапазон напряжения у прибора?
В моём случае запросили сделать "мигалку", имитирующую наличие записывающей камеры - банально вспыхивать каждые N секунд на M секунд (от 0.05с до 8с сделал... кажется). Питается это от пары элементов размера C ( https://upload.wikimedia.org/wikipedia/ ... riaR14.jpg ) на 1.5В и разряжает их до почти 0.8В на элемент (сохраняет работоспособность до 1.6~1.7В).
И, предвосхищая вопрос, нет. На низковольтной NE555 сделать было раза в два дороже. И сложнее. А тут и индикация разряда (по нажатию кнопки "проверка") и изменение настроек (при нажатии кнопки "Применить!"). До этого контрллер включается, измеряет положение движков потенциометров, запоминает его, настраивает таймеры и уходит в глубокий сон, время от времени моргая... за счёт аппаратного таймера. Если батарея садится - включает "бустер" на ICL7660, поднимая напряжение для светодиода.
jcxz, приёчем здесь доублы и прочее? Вопрос же не в том как лучше в коде сделать, а почему из сна не выходит и можно ли узнать почему и можно ли исправить.
К тому что весь код написан очень грязно. И нет того, что делается при корректном входе/выходе в сон: запрета всех ненужных прерываний, отключение неиспользуемой во сне периферии, установки пинов в состояние "для сна", контроля и установки регистров тактирования и питания для состояния сна и т.п. От вашего кода можно ожидать чего угодно. Что и происходит.
Странная реакция... То есть, критика, если она отрицательная, нахер ненужна, даже если может оказаться решением проблемы? А если так: Ваш код идеален, проблема в микроконтроллере, аппаратная, нужно все их поменять. Так лучше стало?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения