20.07.2015 Views

M16C/62 Group DATASHEET

M16C/62 Group DATASHEET

M16C/62 Group DATASHEET

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

InterruptMitsubishi microcomputers<strong>M16C</strong> / <strong>62</strong> <strong>Group</strong>SINGLE-CHIP 16-BIT CMOS MICROCOMPUTERRewrite the interrupt control registerTo rewrite the interrupt control register, do so at a point that does not generate the interrupt request forthat register. If there is possibility of the interrupt request occur, rewrite the interrupt control register afterthe interrupt is disabled. The program examples are described as follow:Example 1:INT_SWITCH1:FCLR I ; Disable interrupts.AND.B #00h, 0055h ; Clear TA0IC int. priority level and int. request bit.NOP; Four NOP instructions are required when using HOLD function.NOPFSET I ; Enable interrupts.Example 2:INT_SWITCH2:FCLR I ; Disable interrupts.AND.B #00h, 0055h ; Clear TA0IC int. priority level and int. request bit.MOV.W MEM, R0 ; Dummy read.FSET I ; Enable interrupts.Example 3:INT_SWITCH3:PUSHC FLG ; Push Flag register onto stackFCLR I ; Disable interrupts.AND.B #00h, 0055h ; Clear TA0IC int. priority level and int. request bit.POPC FLG ; Enable interrupts.The reason why two NOP instructions (four when using the HOLD function) or dummy read are insertedbefore FSET I in Examples 1 and 2 is to prevent the interrupt enable flag I from being set before theinterrupt control register is rewritten due to effects of the instruction queue.When a instruction to rewrite the interrupt control register is executed but the interrupt is disabled, theinterrupt request bit is not set sometimes even if the interrupt request for that register has been generated.This will depend on the instruction. If this creates problems, use the below instructions to changethe register.Instructions : AND, OR, BCLR, BSET58

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!