Эксперимент #22: POR, BOR, etc.

Небольшая статья обзор способов сброса pic микроконтроллеров, которая будет служить в качестве предыстории к будущей статье о сохранении/загрузке настроек в мой будущий усилок. Здесь приведена теория и немного практики, показывающей пример реальной работы.

Схема подключения цепи сброса

Сначала немного про сброс: по сбросу микроконтроллер немедленно прекращает работу и очищает все свои регистры. Сброс может генерироваться как с помощью внешней обвязки, так и с помощью внутренней логики чипа. Ну и немного теории разбавленной практикой.

POR.

Power On Reset – сброс при подаче питания на чип, происходит всегда. Так как для корректной работы необходимо выдержать правильную временную задержку в чип встроено два таймера: Power-Up timer  и OST. Первый отключаемый и как правило может формировать задержку в 72 мс, а второй работает всегда и период его равен 1024 периодам частоты кварца. Срабатывают они при напряжении питания от 1.2 до 1.7. Чтобы проверить его работу достаточно вдолбить следующий код в любую программу:


if (!POR)
 {
printf("\r\nPOR!");
 }

Конечно круто и наглядно было бы привести еще рост напряжения питания, но я пока без осцилка, но думаю что скоро решу эту проблему :)

BOR.

Эта штука может возникать в двух случаях и в обоих она призвана для того, чтобы уберечь вашу программу от непредсказуемых действий.

1 случай: плавное снижение напряжения питания (например разряд батареи), вот как это будет выглядеть на графике:

made with ChartBoot

Минимальное и максимальное напряжение здесь указано произвольно, на самом деле при тестах в pic16f877a мк уходил в сброс где то на 3 вольтах.

2 случай – шум, бывает, что на линии питания происходят скачки напряжения:

made with ChartBoot

Собственно и все. Для проверки BOR нужно в конфигурации врубить BOREN и искусственно устанавливать биты POR и BOR в 1.

{
 if (!POR)
 {
 POR = 1;
 BOR = 1;
 printf("\r\nPOR!");
 }

Совсем корявое видео, но другого не получилось у меня.

Вот и все, по этому поводу с теорией покончено, буду заказывать микросхемку для создания референс уровня и заводить ее на компаратор с целью сохранения настроек усилка при вариациях напряжения питания, а вот когда эти вариации будут происходить тут мне и понадобиться BOR.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">