310 of 318
ZBasic System Library 300 ZX Microcontroller Family OutputCapture(), ShiftIn(), ShiftOut(), X10Cmd(), etc. will introduce more latency than simple instructions like assigning a value to a variable. Examples Call WaitForInterrupt(zxPinChange) Call WaitForInterrupt(zxPinRisingEdge, WaitInt2) Call WaitForInterrupt(&H40, WaitPinChangeA) ' await a change on Port A, bit 6 Resource Usage Only one task can be awaiting each interrupt at any particular time. If a task is already awaiting the specified interrupt, another call to WaitForInterrupt() for that same interrupt will return immediately. Also, on the ZX-24 the interrupt pins are common with I/O pins as shown in the table below. This means that you should set the corresponding pin to be an input (either tri-state or pull-up) when you want to use WaitForInterrupt(). Note, however, that if the pin is an output and a task is awaiting an interrupt, a transition on the corresponding output can generate the interrupt for the waiting task. This may be of use in special situations as a “software interrupt”. Interrupt and I/O Pin Sharing for ZX-24, ZX-24a, ZX-24p, ZX-24n, ZX-24r, ZX-24s Interrupt Port/Bit Pin 0 Port C, Bit 6 6 1 Port C, Bit 1 11 2 Port A, Bit 2 18 Interrupt Input Pins (ATmega Devices) ZX Models INT0 INT1 INT2 INT3 INT4 INT5 INT6 INT7 AIN0 AIN1 ZX-24, ZX-24a, ZX-24p, ZX-24n, ZX-24r, ZX-24s 6 11 18 - - - - - 18 - ZX-40, ZX-40a, ZX-40p, ZX-40n, ZX-40r, ZX-40s 16 17 3 - - - - - 3 4 ZX-44, ZX-44a, ZX-44p, ZX-44n, ZX-44r, ZX-44s 11 12 42 - - - - - 42 43 ZX-24e, ZX-24ae, ZX-24ne, ZX-24pe, ZX-24nu, ZX-24pu 18 17 26 - - - - - 26 25 ZX-328n, ZX-328l 4 5 - - - - - - 12 13 ZX-32n, ZX-32l 32 1 - - - - - - 10 11 ZX-1281, ZX-1281n 25 26 - - 6 7 8 9 4 5 ZX-1280, ZX-1280n 43 44 45 46 6 7 8 9 4 5 ZX-128e, ZX-128ne, ZX-1281e, ZX-1281ne 12 11 10 9 16 15 14 13 18 17 ZX-328nu 5 6 - - - - - - 9 10 In the Interrupt Input Pin table above, the columns for INT2 and INT3 indicate that these interrupts are not available for the ZX-1281. That is because the corresponding I/O pins are used for serial channel Com1. For the ZX-1280, ZX-128e and ZX-1281e, INT2 and INT 3 will not be available if serial channel Com2 is in use. Also, INT0 and INT1 are not available on mega128, mega1281and mega1280-based devices when I2C channel 0 is in use since the same pins are used for the SCL and SDA signals. For native code devices, the following table lists the ISRs that may be included in your program if it invokes WaitForInterrupt(). The compiler will attempt to include only those ISRs that are required based on what it can determine from analysis of the various invocations. If the compiler is unable to determine which specific ISR is require, all those listed will be included.