oleg88135

Помогите разобраться с прерываниями

9 сообщений в этой теме

oleg88135    0

Хочу самостоятельно написать прогу под PIC12F629 для управления тиристором(симистором) с целью регулировать нагрузку. Просмотрел готовые разработки, везде используют прерывания. Самостоятельно разобраться не смог (плохо учился в школе), объясните, в чем смысл. Заранее благодарен неравнодушным и более смышленым.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    551
6 минут назад, oleg88135 сказал:

объясните, в чем смысл

Смысл чего ? Вашей задумки написать программу ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zhuk72    12

Смысл в том, что процессор прерывает исполнение основного кода и переходит по адресу 04h, в котором программным путем (опросом флагов) определяет того, кто это прерывание вызвал. При этом разрешение глобального прерывания (GIE) отключается автоматом, и его нужно включить после выполнения всех действий. Си это делает сам, в асм это делают командой retfie.

Изменено пользователем Zhuk72

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oleg88135    0

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Alex    551

А покурить тему не пробовали ? - https://yandex.ru/yandsearch?text=фазоимпульсное управление тиристором&lr=2&clid=2186620
Зачем это всё переписывать тут ?
В сети просто огромное кол-во информации по этой теме. И картинки, и диаграммы, и чего только нет ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    472
10 минут назад, oleg88135 сказал:

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

Что такое фазоимпульсный метод? Это подача импульса отпирания тиристора (симистора) в определенный момент от "начала" полупериода синусоиды. И тут возникают следующие вопросы в плане реализации на микроконтроллере:

- как отследить "начало" полупериода?
- как реализовать "определенный момент" от начала?
- как сформировать импульс нужной длительности?

И для решения всех этих вопросов достаточно удобно использовать прерывания. Подаем ограниченную по току синусоиду на вход микроконтроллера, и получаем прерывание в момент, когда напряжение равно нулю (а нулю напряжение в сети равно как раз в момент "начала" полупериода). Запускаем таймер на некоторое время, например, 5 мс, и он сгенерирует нам прерывание как раз через 5 мс от начала полупериода - вот вам и "нужный" момент. Теперь включим выход и запустим таймер на 100 мкс и по прерыванию выключим выход - вот вам и импульс управления в 100 мкс.

А без прерываний это было бы совсем не так просто и красиво реализовывать.

Изменено пользователем ARV

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
oleg88135    0

Респект ARV-исчерпывающее объяснение! Ну и , естественно, весь процесс нужно зациклить?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ARV    472

Зацикливать в данном случае надо то, что не требует прерываний: например, обслуживание кнопок, при помощи которых будет изменяться фаза отпирания тиристора. То есть в цикле непрерывно ведется опрос кнопок и корректировка фазы, а остальное - по прерываниям.

Прерывания на то и прерывания, что прерывают основной цикл работы по мере надобности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас