Доброго вечера! Есть программа, для Меги32. Уже пол-года в тестовой эксплуатации. Возникает следующая проблема - иногда, (из 50 приборов за 4 месяца круглосуточной эксплуатации) 3 или 4 раза произошел сбой системного времни Системные часы организованы по таймеру от задающего генератора (16МГц). CStack программы выбран в соответствии с МАР файлом, RStack - аналогично. Однако, в программе используется ф-я printf. И у меня есть подозрение, что для нее компиллер не может правильно оценить размер CStack, и она, при своей работе выходит за границы объявленного стека и портит рабочие переменные. переменная системного времени (__no init) расположена, естесственно в ОЗУ. Внимание вопрос - есть ли какие нибудь мысли, как расположить данную переменную так, чтобы никакая функция, вышедшая за границы стека ее не могла испортить. Отловить ошибку средствами отладчика не представляется возможным. Ошибка довольно редкая. И еще. что происходит с CStack, когда он достигает дна. Где после этого будут размещаться локальные переменные? Заранее благодарю.
|