User manual

PD-1021 TMCL Firmware V1.19 Manual (Rev. 1.01 / 2012-JUL-30) 17
www.trinamic.com
The following example shows the use of a timer interrupt:
VECT 0, Timer0Irq //define the interrupt vector
SGP 0, 3, 1000 //configure the interrupt: set its period to 1000ms
EI 0 //enable this interrupt
EI 255 //globally switch on interrupt processing
//Main program: toggles output 3, using a WAIT command for the delay
Loop:
SIO 1, 2, 1
WAIT TICKS, 0, 50
SIO 1, 2, 0
WAIT TICKS, 0, 50
JA Loop
//Here is the interrupt handling routine
Timer0Irq:
GIO 0, 2 //check if OUT0 is high
JC NZ, Out0Off //jump if not
SIO 0, 2, 1 //switch OUT0 high
RETI //end of interrupt
Out0Off:
SIO 0, 2, 0 //switch OUT0 low
RETI //end of interrupt
In the example above, the interrupt numbers are used directly. To make the program better readable use
the provided include file Interrupts.inc. This file defines symbolic constants for all interrupt numbers
which can be used in all interrupt commands. The beginning of the program above then looks like the
following:
#include Interrupts.inc
VECT TI_TIMER0, Timer0Irq
SGP TI_TIMER0, 3, 1000
EI TI_TIMER0
EI TI_GLOBAL
Please also take a look at the other example programs.