PIC12F629 Interrupts

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
   Салют, All!

Если не сбросить флага прерывания в процессе его обработки
(конкретно в моем случае - флага TMR1IE) то что происходит
по команде retfie? Снова вызывается вектор прерывания?

Есть какая-нибудь application note по прерываниям?
--
      С приветом из Новосибирска
      Самойленко Михаил aka Билли Бонс



Re: PIC12F629 Interrupts
Hi Mikhail, hope you are having a nice day!


04 Апр 05, Mikhail Samoilenko wrote to All:

 MS> Если не сбросить флага прерывания в процессе его обработки
 MS> (конкретно в моем случае - флага TMR1IE) то что происходит
 MS> по команде retfie?

TMR1IF наверное имеллось ввиду.

 MS> Снова вызывается вектор прерывания?

Да.

WBR,
    AVB


Re: PIC12F629 Interrupts
   Салют, Михаил!

Quoted text here. Click to load it
Да.И так до бесконечности.Поэтому в теле прерывания СLRWDT лучше
избегать.

Quoted text here. Click to load it
Скачай описание на 12f629.Там будет пример сохранения регистров W,STATUS
во время входа в прерывание и восстановления их при выходе.


movwf w_temp
swapf status,w
bcf     status,rp0
movwf   status_temp

выполнения прерывания

swapf status_temp,w
movwf   status
swapf w_temp,f
swapf w_temp,w

retfie

При этом w_temp должен быть определен как в банке 0 так и в банке 1.
Общее правило в принципе такое.Значения регистров,которые могут измениться
во время выполнения прерывания, сохраняються в промежуточных регистрах в самом
начале прерывания.В конце прерывания значения регистров восстанавливаються.
И сбрасывается флаг прерывания.В этом примере речь идет о сохранении W и STATUS.
Но если ты что то делаешь в основном теле программы ,например, с EEADR и
во время прерывания тоже работаешь с EEADR ,то и его надо сохранять и восста-
навливать.
----------------
С уважением.Ю.







PIC12F629 Interrupts
  Привет!

Mon Apr 04 2005 02:01, Mikhail Samoilenko wrote to All:

...

 MS> Если не сбросить флага прерывания в процессе его обработки
 MS> (конкретно в моем случае - флага TMR1IE) то что происходит
 MS> по команде retfie? Снова вызывается вектор прерывания?

Да. Сэмплинг флагов производится в начале каждого цикла и если прерывание
действует, то выбиравшаяся в этом же цикле команда уже не исполняется.

 MS> Есть какая-нибудь application note по прерываниям?

В "PICmicro Mid-Range MCU Family Reference Manual", есть раздел "Interrupts".
Там не очень много информации, но в принципе всё есть.

В чем смысл эксперимента с неснятием флага?

Александр Голов, Москва, snipped-for-privacy@mail.ru


PIC12F629 Interrupts
сообщении:d30nq5$9bj$ snipped-for-privacy@www.fido-online.com...

Quoted text here. Click to load it

Не понял о каком сэмплинге и какой команде речь.
Хотя в принципе уже разобрался.

Quoted text here. Click to load it

Просто в первый раз использую прерывания, а в даташите на 629
про флаги как-то невнятно написано: "The interrupt flag bit(s) must be
cleared in software before re-enabling interrupts to avoid GP2/INT recursive
interrupts". До того речь шла о прерываниях вообще, а тут - акцент
на GP2/INT. Хотя у меня точно так же зациклился и с TMR1 при
неснятом TMR1IF.
--
      С приветом из Новосибирска
      Самойленко Михаил aka Билли Бонс



PIC12F629 Interrupts
  Привет!

Sat Apr 09 2005 20:59, Mikhail Samoilenko wrote to Alexander Golov:

...

 >>  MS> Если не сбросить флага прерывания в процессе его обработки
 >>  MS> (конкретно в моем случае - флага TMR1IE) то что происходит
 >>  MS> по команде retfie? Снова вызывается вектор прерывания?
 >>
 >> Да. Сэмплинг флагов производится в начале каждого цикла и если
 >> прерывание действует, то выбиравшаяся в этом же цикле команда
 >> уже не исполняется.

 MS> Hе понял о каком сэмплинге и какой команде речь.

Ядро в конце первого такте каждой команды производит проверку активности флага
прерывания и, соответственно, принимает решение о дальнейших действиях. Я
думал тебя интересует будет ли вообще исполнять основной код МК (хотя бы по
одной команде), или повиснет наглухо.

 MS> Хотя в принципе уже разобрался.

 >>  MS> Есть какая-нибудь application note по прерываниям?
 >>
 >> В "PICmicro Mid-Range MCU Family Reference Manual", есть раздел
 >> "Interrupts". Там не очень много информации, но в принципе всё есть.
 >>
 >> В чем смысл эксперимента с неснятием флага?

 MS> Просто в первый раз использую прерывания, а в даташите на 629
 MS> про флаги как-то невнятно написано: "The interrupt flag bit(s) must be
 MS> cleared in software before re-enabling interrupts to avoid GP2/INT
 MS> recursive interrupts". До того речь шла о прерываниях вообще, а тут -
 MS> акцент на GP2/INT.

Это просто ошибка. Посмотри в даташитах на другие 14-разрядные, там в сущности
тоже самое говорится, но несколько в другом порядке. Видимо когда слова/абзацы
двигали, что-то потеряли/лишнего прилепили.

 MS> Хотя у меня точно так же зациклился и с TMR1 при
 MS> неснятом TMR1IF.

Естественно.

Александр Голов, Москва, snipped-for-privacy@mail.ru


Site Timeline