Home

DIO4804 User`s Manual

image

Contents

1. Often assigning a range of bits is a mixture of setting and clearing operations You can set or clear each bit individually or use a faster method of first clearing all the bits in the range then setting only those bits that must be set using the method shown above for setting multiple bits in a port The following example shows how this two step operation is done Example Assign bits 3 4 and 5 in a port to 101 bits 3 and 5 set bit 4 cleared First read in the port and clear bits 3 4 and 5 by ANDing them with 199 Then set bits 3 and 5 by ORing them with 40 and finally write the resulting value back to the port In C this is programmed as v save v save amp 199 v save v save 40 outportb port address v save A final note Don t be intimidated by the binary operators AND and OR and try to use operators for which you have a better intuition For instance if you are tempted to use addition and subtraction to set and clear bits in place of the methods shown above DON T Addition and subtraction may seem logical but they will not work if you try to clear a bit that is already clear or set a bit that is already set For example you might think that to set bit 5 of a port you simply need to read in the port add 32 25 to that value and then write the resulting value back to the port This works fine if bit 5 is not already set But what happens when bit 5 is already set Bits 0 to 4 will be unaffected and we can t say for su
2. APPENDIX C COMPONENT DATA SHEETS Intel 82C54 Programmable Interval Timer Data Sheet Reprint APPENDIX D WARRANTY D 2 LIMITED WARRANTY Real Time Devices Inc warrants the hardware and software products it manufactures and produces to be free from defects in materials and workmanship for one year following the date of shipment from REAL TIME DE VICES This warranty is limited to the original purchaser of product and is not transferable During the one year warranty period REAL TIME DEVICES will repair or replace at its option any defective products or parts at no additional charge provided that the product is returned shipping prepaid to REAL TIME DEVICES All replaced parts and products become the property of REAL TIME DEVICES Before returning any product for repair customers are required to contact the factory for an RMA number THIS LIMITED WARRANTY DOES NOT EXTEND TO ANY PRODUCTS WHICH HAVE BEEN DAM AGED AS A RESULT OF ACCIDENT MISUSE ABUSE such as use of incorrect input voltages improper or insufficient ventilation failure to follow the operating instructions that are provided by REAL TIME DEVICES acts of God or other contingencies beyond the control of REAL TIME DEVICES OR AS A RESULT OF SERVICE OR MODIFICATION BY ANYONE OTHER THAN REAL TIME DEVICES EXCEPT AS EX PRESSLY SET FORTH ABOVE NO OTHER WARRANTIES ARE EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AN
3. 7 1 7 2 The DIO4804 has four interrupt circuits which can generate interrupts on any IRQ channel 2 through 7 Software Programmable Interrupts The DIO4804 circuitry has five software selectable interrupt sources which can be selected at BA 19 bits 3 through 5 as described in Chapter 4 To use these interrupts an interrupt source must be selected at BA 19 an interrupt channel must be enabled at BA 19 bits 0 through 2 and the IRQ enable must be set high BA 16 bit 0 BA 16 bit 1 sets the polarity of the interrupt Digital Interrupts Each custom digital IC Port 0 1 Port 2 3 and Port 4 5 supports a digital interrupt using one of the digital I O lines as the interrupt source The interrupt source is software programmable as described in Chapter 5 Sampling Digital Lines for Change of State In the Digital Interrupt mode the digital lines are sampled at a rate set by the 8 MHz system clock or the clock programmed in the timer counter programmed at bit 5 of the port s Digital Mode Register With each clock pulse the digital circuitry looks at the state of the next bit To provide noise rejection and prevent erroneous interrupt generation because of noise spikes on the digital lines a change in the state of any bit must be seen for two edges of a clock pulse to be recognized by the circuit Figure 7 1 shows a diagram of this circuit Selecting the Interrupt Channel The IRQ channel is selected by programming the IRQ chan
4. CHAPTER 7 INTERRUPTS 200222200000000000000000000002000020000000000 7 1 Software Programmable Interrupts isis sie vive a 7 3 Digital Interruptor ete Repeat aub Ee 7 3 Sampling Digital Lines for Change of State Ne 7 3 Selecting the Interrupt ios 7 3 Basic Programming For Interrupt Handling 7 4 What Is an ii ini iii i eai 7 4 Interr upt Requests lo 7 4 8259 Programmable Interrupt Controller 7 4 Interrupt Mask Re istet IMR ss 7 4 End of Interrupt EOI Command ener eene eterne nne 7 4 What Exactly Happens When an Interrupt Occurs Ne 7 5 Using Interr pts in Your Programs ene Anas 7 5 Writing an Interrupt Service Routine ISR 7 5 Saving the Startup Interrupt Mask Register IMR and Interrupt Vector Ne 7 7 Restoring the Startup IMR and Interrupt Vector sse nennen nennen 7 7 Common Interrupt Mistakes n dee eie eise 7 1 APPENDIX A DIO4804 SPECIFICATIONS 200s 200220000200000000000000220000200000000000000 000000000 sese east sena A 1 APPENDIX B CONNECTOR PIN ASSIGNMENTS s20ss20000000000000020000200002000000000000000 200000000000 B 1 APPENDIX C COMPONENT DATA SHEETS 202220000000000000000002200020000200000000000000 0200000000000 C 1 APPENDIX D
5. There are a few cautions you must consider when writing your ISR The most important is do not use any DOS functions or routines that call DOS functions from within an ISR DOS is not reentrant that is a DOS function cannot call itself In typical programming this will not happen because of the way DOS is written But what about when using interrupts Then you could have a situation such as this in your program If DOS function X is being executed when an interrupt occurs and the interrupt routine makes a call to DOS function X then function X is essentially being called while it is already active Such a reentrancy attempt spells disaster because DOS functions are not written to support it This is a complex concept and you do not need to understand it Just make sure that you do not call any DOS functions from within your ISR The one wrinkle is that unfortunately it is not obvious which library routines included with your compiler use DOS functions A rule of thumb is that routines which write to the screen or check the status of or read the keyboard and any disk I O routines use DOS and should be avoided in your ISR The same problem of reentrancy exists for many floating point emulators as well meaning you may have to avoid floating point real math in your ISR 7 5 Note that the problem of reentrancy exists no matter what programming language you are using Even if you are writing your ISR in assembly language DOS and many floating p
6. WARRANTY av D 1 1 1 1 2 1 3 1 5 1 6 2 1 3 1 3 2 6 1 7 1 List of Illustrations Board Layout Showing Factory Configured Settings essere 1 4 8254 Clock and Gate Sources Jumpers P19 pe 1 5 8254 Circuit e Oeo tote t et tee epos 1 6 Port 0 Strobe Input Enable Jumper P20 sse neret 1 6 Base Address Switch di I deed dun edd 1 7 Port 0 Pull up Pull down Resistor Connections 7 1 8 P2 P3 and P6 I O Connector Pin Assignment 3 2 4 DIO4804 Block Diagram see 3 3 Timer Counter Circuit Block Diagram Ne 3 4 8254 Timer Counter Circuit Block Diagram Ne 6 3 Digital Interrupt Timing Diagram 7 3 iii iv INTRODUCTION The DIO4804 opto 22 compatible digital I O Advanced Industrial Control board is for use in an IBM PC compatible computer Installed in a single full size slot the DIO4804 features 48 bit programmable digital 1 O lines Pull up pull down resistors on each bit Three 16 bit timer counters and on board 8 MHz clock Direct connection to opto 22 I O system modules Operation from single 5V supply DOS example programs with source code in QuickBASIC and C Diagnostics software The following paragraphs briefly describe the major functions of the board A detailed discussion of board functions is included in subsequent chapters Digital I O The DIO4804 has 48 bit programmable buffered TTL
7. secure the slot bracket back into place and put the cover back on your computer The board is now ready to be connected via the external I O connector at the rear panel of your computer External I O Connections Figure 2 1 shows I O connector pinouts for the digital I O connectors Refer to these diagrams as you make your I O connections 2 3 P4 7 EXT INT 1 P5 7 EXT INT 2 EXT CLK 1 2 DIGITAL GND P4 6 DIGITAL GND P5 6 DIGITAL GND EXT GATE 0 OO DIGITAL GND P4 5 DIGITAL GND 5 5 DIGITAL GND T C OUT 0 5 6 DIGITAL GND P4 4 DIGITAL GND P5 4 DIGITAL GND EXT CLK 1 7 6 DIGITAL P4 3 DIGITAL GND P5 3 DIGITAL GND EXT GATE 1 5 0 DIGITAL GND P4 2 DIGITAL GND P5 2 DIGITAL GND Tc our 1 692 DIGITAL GND P4 1 DIGITAL GND P5 1 DIGITAL GND ext 2 369 DIGITAL ano P4 0 DIGITAL GND P5 0 DIGITAL GND EXT GATE 2 963 DIGITAL ano P2 7 DIGITAL GND P3 7 DIGITAL GND T c OUT 2 29 DIGITAL GND P2 6 DIGITAL GND P3 6 DIGITAL GND DIGITAL GND DIGITAL GND P2 5 DIGITAL GND P3 5 1 62 DIGITAL GND P3 4 DIGITAL GND P3 3 DIGITAL GND P3 2 DIGITAL GND P3 1 DIGITAL GND P3 0 DIGITAL GND P1 7 DIGITAL GND P1 6 DIGITAL GND P1 5 DIGITAL GND P1 4 DIGITAL GND P1 3 DIGITAL GND P1 2 DIGITAL GND P1 1 DIGITAL GND P1 0 DIGITAL GND 5 VOLTS DIGITAL GND DIGITAL GND P6 DIGITAL GND 68 DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGITAL GND DIGI
8. 4 5 IRQ Select Register Bit 3 Enables Port 4 strobe input used with P22 header Bit 4 Disables enables digital interrupts The IRQ channel is programmed at BA 19 Bit 5 Sets the clock rate at which the digital lines are sampled when in a digital interrupt mode Available clock sources are the 8 MHz system clock and the output of the 8254 Counter 1 16 bit programmable clock When a digital input line changes state it must stay at the new state for two edges of the clock pulse 62 5 nanoseconds when using the 8 MHz clock before it is recognized and before an interrupt can be generated This feature eliminates noise glitches that can cause a false state change on an input line and generate an unwanted interrupt This feature is detailed in Chapter 5 Bit 6 Reserved Bit 7 Reserved 4 9 BA 12 8254 Timer Counter 0 Read Write This address is used to read write timer counter 0 A read shows the count in the counter and a write loads the counter with a new value Counting begins as soon as the count is loaded BA 13 8254 Timer Counter 1 Read Write This address is used to read write timer counter 1 A read shows the count in the counter and a write loads the counter with a new value Counting begins as soon as the count is loaded BA 14 8254 Timer Counter 2 Read Write This address is used to read write timer counter 2 A read shows the count in the counter and a write loads the counter with a new v
9. Diagram P20 through P22 Strobe Input Enable Factory Setting Disabled These header connectors connect an external signal through P2 2 EXTINT1 or P3 2 EXTINT2 to the strobe input of Port 0 Port 2 and or Port 4 To enable the strobe input on the digital I O chip of a selected port you must remove the port s jumper from the DISABLE pins and place it across the desired EXTINT pins EXTINT3 and EXTINTA are not connected Note that multiple ports can be strobed from the same signal Figure 1 4 shows Port 0 P20 Port 2 is P21 and Port 4 is P22 P20 EXTINT1 P20 EXTINT1 U 0 3 EXTINT2 g EXTINT2 a EXTINT3 z EXTINT3 o o EXTINT4 EXTINT4 DISABLE DISABLE Fig 1 4a Strobe Disabled Factory Setting Fig 1 4b Strobe Enabled using EXTINT1 Fig 1 4 Port O Strobe Input Enable Jumper P20 S1 Base Address Factory Setting 300 hex 768 decimal One of the most common causes of failure when you are first trying your board is address contention Some of your computer s I O space is already occupied by internal and other peripherals When the board attempts to use I O address locations already used by another device contention results and the board does not work To avoid this problem the DIO4804 has an easily accessible DIP switch S1 which lets you select any one of 16 starting addresses in the computer s I O Should the factory setting of 300 hex 768 decimal be unsuitable for your system you can select a differen
10. GND P4 3 8 0 DIGITAL GND P5 3 9 10 DIGITAL GND pa 2 942 DIGITAL GND P5 2 02 DIGITAL GND 4 1 362 DIGITAL GND 5 1 944 DIGITAL GND P4 0 36 DIGITAL GND P5 0 546 DIGITAL GND P2 7 268 DIGITAL GND P3 7 268 DIGITAL GND P2 6 DIGITAL GND P3 6 DIGITAL GND P2 5 61 2 DIGITAL GND P3 5 61 62 DIGITAL GND P2 4 63 62 DIGITAL GND P3 4 3 4 DIGITAL GND P2 3 65 69 DIGITAL GND P3 3 65 DIGITAL GND P2 2 7 8 DIGITAL GND P3 2 6269 DIGITAL GND 2 1 DIGITAL GND P3 1 DIGITAL GND P2 0 61 62 DIGITAL GND P3 0 61 62 DIGITAL GND PO 7 63 62 DIGITAL GND P1 7 63 64 DIGITAL GND 6 65 69 DIGITAL GND P1 6 65 69 DIGITAL GND PO 5 67 68 DIGITAL GND P1 5 67 68 DIGITAL GND P0 4 DIGITAL GND P1 4 DIGITAL GND P0 3 DIGITAL GND P1 3 DIGITAL GND P0 2 DIGITAL GND P1 2 DIGITAL GND P0 1 DIGITAL GND P1 1 DIGITAL GND P0 0 DIGITAL GND P1 0 DIGITAL GND 5 VOLTS DIGITAL GND 5 VOLTS DIGITAL GND P2 amp P3 Mating Connector Part Numbers Manufacturer Part Number 1 746094 0 3425 7650 P6 Connector EXT CLK 0 DIGITAL GND EXT GATE 0 DIGITAL GND T C OUT 0 DIGITAL GND EXT CLK 1 DIGITAL GND EXT GATE 1 DIGITAL GND T C OUT 1 DIGITAL GND EXT CLK 2 DIGITAL GND EXT GATE 2 DIGITAL GND T C OUT 2 DIGITAL GND DIGITAL GND DIGITAL GND P6 Mating Connector Part Numbers Manufacturer Part Number 1 746094 4 B 4 C 1
11. I O Port 4 Read Write cient Ea eene enne nennen nennen eene 4 8 BA 9 Digital L O Port Read Wilton Sa a a Bla atti 4 8 10 Clear IRQ Program Port 4 Direction Port 5 Direction IRQ Source Registers Read Write 4 8 BA 11 Read Digital I O Status Program Digital Mode Read Write Ne 4 9 12 8254 Timer Counter 0 Read Write Ne 4 10 BA 13 8254 Timer Counter 1 noo nn canon anna nao 4 10 14 8254 Timer Counter 2 Read Write 4 10 BA 15 8254 Timer Counter Control Word Write Only Ne 4 10 16 Clear IRQ IRQ Enable Read Write Ne 4 10 BA F177 TRO Status Read Only 4 11 BART ReSeEVed ue eor 4 11 19 IRQ Channel Source Select Read Write Ne 4 11 Programming the DIO4804 Rte e CU cele BER die 4 12 Clearing and Setting Bits ina lei aan Ar Res te etes 4 12 CHAPTER 5 DIGITAL UO 5 1 Bit Programmable Digital tete de oc ee e Be Reiter ane 5 3 Digital A A eR 5 3 Resetting the Digital Circuitry il a a roe itt 5 3 Strobing Data into Ports 0 2 oan ete ERE l cete E its 5 3 CHAPTER 6 TIMER COUNTERS 200s22200200000000000000000002200020000000000000 0020000000000 nn tos sese ens senes 6 1
12. do this for you The following C and Pascal examples show what the shell of your ISR should be like Only the clear interrupt command sequence for the source which caused the interrupt needs to be included In C void interrupt ISR void Your code goes here Do not use any DOS functions inportb BaseAddress 16 Clear software programmable interrupt outportb BaseAddress 3 0 Set Port 0 1 digital 1 0 clear mode inportb BaseAddress 2 Clear Port 0 1 digital interrupt outportb BaseAddress 11 0 Set Port 4 5 digital 1 0 clear mode inportb BaseAddress 10 Clear Port 4 5 digital interrupt outportb 0x20 0x20 Send EOI command to 8259 In Pascal Procedure ISR Interrupt begin Your code goes here Do not use any DOS functions Port BaseAddress 16 Clear jumper selectable interrupt Port BaseAddress 3 0 Set Port 0 1 digital I O clear mode Port BaseAddress 2 Clear Port 0 1 digital interrupt Port BaseAddress 11 0 Set Port 4 5 digital I O clear mode Port BaseAddress 10 Clear Port 4 5 digital interrupt Port 20 20 Send EOI command to 8259 end 7 6 Saving the Startup Interrupt Mask Register IMR and Interrupt Vector The next step after writing the ISR is to save the startup state of the interrupt mask register and the interrupt vector that you will be using The IMR is locat
13. nolon 1 Port 4 5 IRQ Status O nolon 1 18 Reserved BA 19 IRQ Channel Source Select Read Write A read lets you review the IRQ source and channel D7 p6 D5 Da 93 02 D1 DO X X IRQ Source Select IRQ Channel Select 000 TIC I r TO 000 disable 001 TIC I r T1 001 disable 010 TIC I r T2 010 lon2 011 EXTINT1 011 lon3 100 EXTINT2 100 lon4 101 reserved 101 lonR 110 reserved 110 lon6 111 reserved 111 lonT A write programs the IRQ source and channel as shown above Programming the DIO4804 This section gives you some general information about programming and the DIO4804 The board is programmed by reading from and writing to the correct I O port locations These I O ports were defined in the previous section Most high level languages such as BASIC Pascal C and C and of course assembly language make it very easy to read write these ports The table below shows you how to read from and write to I O ports using some popular programming languages ReDd BASIC Data INP Address OUT Address Data Data inportb Address outportb Address Data Turbo Pascal Data Port Address Port Address Data mov dx Address mov dx Address Assembly in al dx ne eee ut dx In addition to being able to read write the I O ports on the DIO4804 you must be able to perform a variety of operations that you might not normally use in your programming The table below s
14. or programs one of the three control registers depending on the setting of bits 1 and 0 at BA 7 When bits 1 and 0 at BA 7 are 00 the read write operations clear the digital IRQ status flag read and the digital chip write When these bits are set to any other value one of the three Port 2 3 digital I O registers is addressed Port 2 Direction Register BA 7 bits 1 and 0 01 For all bits 1 output P2 T P2 6 P2 R P2 4 P2 3 P2 2 P2 1 P2 0 This register programs the direction input or output of each bit at Port 2 Port 3 Direction Register BA 7 bits 1 and 0 10 For all bits oziu D7 D6 D5 04 D3 02 01 Do 1 output P3 6 P34 P3 3 P3 2 P3 1 P3 0 This register programs the direction input or output of each bit at Port 3 4 6 Port 2 3 IRQ Source Register BA 7 bits 1 and 0 11 D7 D6 D5 D4 D3 D2 D1 DO Port 2 3 IRQ Select 0000 P2 0 0100 P2 4 1000 P3 0 1100 P3 4 0001 P2 1 0101 P2 R 1001 P3 1 1101 P3 R 0010 P2 2 0110 2 6 1010 P3 2 1110 P3 6 0011 2 3 0111 P2 T 1011 P3 3 1111 P3 T This register programs the bit to be used to generate a digital interrupt for the Port 2 3 custom digital IC A digital interrupt is generated when the selected bit goes from low to high interrupt generated on the positive going edge BA 7 Read Digital 1 O Status Program Digital Mode Read Write Digital IRQ Status 0 no digital interrupt 1 digital int
15. you in making these connections The clock source for Counter 0 is selected by placing a jumper on one of the two top pairs of pins on the header OSC or EXTCLKO OSC is the on board 8 MHz clock and EXTCLKO is an external clock source which can be connected through 1 O connector P6 pin 1 Counter 1 has three clock sources OUTO which cascades it to Counter 0 OSC which is the on board 8 MHz clock and EXTCLK1 which is an external clock source connected through I O connector P6 pin 7 Counter 2 has three clock sources OUTI which cascades it to Counter 1 OSC which is the on board 8 MHz clock and EXTCLK2 which is an external clock source connected through I O connector P6 pin 13 The gate of Counter 2 can be connected to the output of Counter 1 OUT1 or to an external gate source EXTGATE2 connected through I O connector P6 pin 15 When no external gate source is connected this line is pulled high P19 OSC EXTCLKO OUTO OSC EXTCLK1 OUT1 OSC EXTCLK2 OUT1 EXTGATE2 ZATO WATO 0419 calvo Fig 1 2 8254 Clock and Gate Sources Jumpers P19 ON BOARD CONNECTOR P6 XTAL 8 MHz TIMER COUNTER CLK ES PIN 1 EXT CLK 0 GATE PIN 34 EXT GATE 0 OUT PIN 51 T C OUT 0 PIN EXT CLK 1 COUNTER CLK L 1 5 V GATE PIN 9 EXT GATE 1 PIN 11 1 T C OUT 1 OUT PIN 134 EXT CLK 2 TIMER COUNTER CLK 2 45V GATE PIN 15 EXT GATE 2 OUT PIN 174 T C OUT 2 Fig 1 3 8254 Circuit
16. 0 P4 0 0100 4 4 1000 PRO 1100 PR4 0001 4 1 0101 1001 PR1 1101 PRR 0010 P4 2 0110 P4 6 1010 PR2 1110 PR6 0011 P4 3 0111 1011 1111 This register programs the bit to be used to generate a digital interrupt for the Port 4 5 custom digital IC A digital interrupt is generated when the selected bit goes from low to high interrupt generated on the positive going edge BA 11 Read Digital VO Status Program Digital Mode Read Write Digital IRQ Status 0 no digital interrupt 1 digital interrupt BA 10 Register Select Strobe Enable Digital IRQ Enable Strobe Status O nostrobe Digital Sample 1 strobe Clock Select A read shows you whether a digital interrupt has occurred and lets you review the states of the other bits in this register If bit 7 is high then a digital interrupt has taken place This provides the same status information as BA 17 bit 2 Digital Mode Register Reserved Reserved BA 10 Register Select Strobe Enable 00 clear mode Digital Sample 0 disabled 01 Port 4 Direction o egister Clock Select 1 enabled 10 Port R Direction o egister 0 8 Mez system clock 11 lon Source o egister 1 programmable clock Digital IRQ Enable 0 disabled 1 enabled Bits 0 and 1 Select the clear mode initiated by a read write operation at BA 10 or the control register you talk to at BA 10 Port 4 Direction Port 5 Direction or Port
17. 1 enabled Bits 0 and 1 Select the clear mode initiated by a read write operation at BA 2 or the control register you talk to at BA 2 Port 0 Direction Port 1 Direction or Port 0 1 IRQ Select Register Bit 2 Setting this bit high inverts the Port 0 1 IRQ at 2 interrupt generated on high to low transition Bit 3 Enables Port 0 strobe input used with P20 header Bit 4 Disables enables digital interrupts The IRQ channel is programmed at BA 19 Bit 5 Sets the clock rate at which the digital lines are sampled when in a digital interrupt mode Available clock sources are the 8 MHz system clock and the output of the 8254 Counter 1 16 bit programmable clock When a digital input line changes state it must stay at the new state for two edges of the clock pulse 62 5 nanoseconds when using the 8 MHz clock before it is recognized and before an interrupt can be generated This feature eliminates noise glitches that can cause a false state change on an input line and generate an unwanted interrupt This feature is detailed in Chapter 5 Bit 6 Reserved Bit 7 Reserved 4 5 BA 4 Digital IO Port 2 Read Write This port transfers the 8 bit Port 2 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 2 Direction Register at BA 6 For all bits set as inputs a read reads the input values and a writ
18. 1 EXT CLK 0 0 5 V GATE PIN EXT GATE 0 PIN 5 T C OUT 0 1 PIN 7 EXT CLK 1 couNTER CLK L 1 45V GATE PIN 9 EXT GATE 1 OUT PIN 11 4 T C OUT 1 PIN 13 4 EXT CLK 2 TIMER COUNTER CLK 1 2 5 V 1 PIN 150 EXT GATE 2 OUT PIN 17 OUT 2 1 1 Fig 6 1 8254 Timer Counter Circuit Block Diagram Each timer counter has two inputs CLK in and GATE in and one output timer counter OUT They can be programmed as binary or BCD down counters by writing the appropriate data to the command word as described in the I O map discussion in Chapter 4 The timer counter outputs are available at P6 where they can be used for interrupt generation as an A D trigger or for timing and counting functions The timers can be programmed to operate in one of six modes depending on your application The following paragraphs briefly describe each mode Mode 0 Event Counter Interrupt on Terminal Count This mode is typically used for event counting While the timer counter counts down the output is low and when the count is complete it goes high The output stays high until a new Mode 0 control word is written to the timer counter Mode 1 Hardware Retriggerable One Shot The output is initially high and goes low on the clock pulse following a trigger to begin the one shot pulse The output remains low until the count reaches 0 and then goes high and r
19. ATE 2 OUT PIN 17 T C OUT 2 4 i Fig 3 2 Timer Counter Circuit Block Diagram CHAPTER 4 VO MAPPING This chapter provides a complete description of the I O map for the DIO4804 general programming information and how to set and clear bits in a port 4 1 4 2 Defining the I O Map The map for the DIO4804 is shown in Table 4 1 As shown the board occupies 20 consecutive I O port locations To conserve the use of I O space the structure of the map is such that some of the registers control what operation you are performing at other addresses The digital registers you address at BA 2 6 and 10 are selected at BA 3 7 and 11 This scheme is easily understood once you review the register descriptions on the following pages The base address designated as BA can be selected using DIP switch S1 located on the edge of the board as described in Chapter 1 Board Settings This switch can be accessed without removing the board from the computer The following sections describe the register contents of each address used in the I O map VOI II Description Read Function Write Function ReDd 3ort 0 digitD inSXt lines SrogrDP 3ort 0 digitD oXtSXt lines DigitD 1 2 3ort 1 ReDd 3ort 1 digitD inSXt lines SrogrDP 3ort 1 digitD oXtSXt lines CleDr digitDi IR4 stDtXs IIDg reDd 3ort O CleDr digitD FhiS SrogrDP 3ort 0 CleDr IR4 3rogrDP 3ort DireFtion direFtion 3ort 1 direFtion or IR4 soXrFe d
20. CMOS digital I O lines which are grouped into six 8 bit ports Port 0 through Port 5 Three custom digital ICs handle the digital 1 O circuitry with each IC containing two ports or 16 bit programmable digital I O lines Bit configurable pull up or pull down resistors are provided for all 48 lines Instructions for activating these pull up pull down resistors are given at the end of Chapter 1 Board Settings 8254 Timer Counters An 8254 programmable interval timer provides three 16 bit 8 MHz timer counters to support a wide range of user timing and counting functions What Comes With Your Board You receive the following items in your board package DIO4804 opto 22 compatible digital control board DOS example programs in QuickBASIC and C with source code amp diagnostics software User s manual If any item is missing or damaged please call Real Time Devices Customer Service Department at 814 234 8087 If you require service outside the U S contact your local distributor Board Accessories In addition to the items included in your board package Real Time Devices offers a full line of software and hardware accessories Call your local distributor or our main office for more information about these accessories and for help in choosing the best items to support your board s application Hardware Accessories Hardware accessories for the DIO4804 include the DOP series optoisolated digital input front end boards the DMR ser
21. D FITNESS FOR A PARTICULAR PURPOSE AND REAL TIME DEVICES EXPRESSLY DISCLAIMS ALL WARRANTIES NOT STATED HEREIN ALL IMPLIED WARRANTIES INCLUDING IMPLIED WARRANTIES FOR MECHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE LIMITED TO THE DURATION OF THIS WARRANTY IN THE EVENT THE PRODUCT IS NOT FREE FROM DEFECTS AS WARRANTED ABOVE THE PURCHASER S SOLE REMEDY SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE UNDER NO CIRCUMSTANCES WILL REAL TIME DEVICES BE LIABLE TO THE PURCHASER OR ANY USER FOR ANY DAMAGES INCLUDING ANY INCIDENTAL OR CONSEQUENTIAL DAM AGES EXPENSES LOST PROFITS LOST SAVINGS OR OTHER DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PRODUCT SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSE QUENTIAL DAMAGES FOR CONSUMER PRODUCTS AND SOME STATES DO NOT ALLOW LIMITA TIONS ON HOW LONG AN IMPLIED WARRANTY LASTS SO THE ABOVE LIMITATIONS OR EXCLU SIONS MAY NOT APPLY TO YOU THIS WARRANTY GIVES YOU SPECIFIC LEGAL RIGHTS AND YOU MAY ALSO HAVE OTHER RIGHTS WHICH VARY FROM STATE TO STATE D 3 DIO4804 User Settings Base I O Address decimal
22. DIO4804 User s Manual O D O Real Time Devices Inc ae Accessing the Analog World Publication No 4804 9518 0104804 User s Manual 17207 REAL TIME DEVICES INC Post Office Box 906 State College Pennsylvania 16804 USA Phone 814 234 8087 FAX 814 234 5218 Published by Real Time Devices Inc P O Box 906 State College PA 16804 USA Copyright O 1995 by Real Time Devices Inc All rights reserved Printed in U S A 9518 Table of Contents INTRODUCTION c 1 1 Digital DO EE 1 3 8254 ICAA 1 3 What Comes With Your Boatd ii 1 3 Board A ccess ties E i 3 Hardware Accessories e ee RED bo i 3 Using 2 Manual erneuert pic i 3 When You Need Help o epe EU RE ee et per PR Ee o pe pa E a 1 4 CHAPTER 1 eret co aea eo co ea oo rone c rone ar 1 1 Factory Configured Switch and Jumper Settings 1 3 P19 8254 Clock and Gate Source Select Factory Settings See Figure 1 2 1 5 P20 through P22 Strobe Input Enable Factory Setting Disabled Ne 1 6 SI Base Address Factory Setting 300 hex 768 decimal sse 1 7 P7 through P12 Pull up Pull down Resistors on Digital I O Lines eene 1 8 CHAPTER 2 BOARD INSTALLATION ee esee eee e
23. Dd interrXSt stDtXs 4 3 deSendent BA 3 deSendent on BA 7 deSendent on BA 11 Reserved Address Decimal BA 0 BA 1 BA 2 BA 3 BA 4 5 BA 6 BA 7 8 BA 9 BA 10 BA 11 BA 12 BA 13 BA 14 BA 15 BA 16 BA 17 BA 18 BA 19 BA 0 Digital IO Port 0 Read Write This port transfers the 8 bit Port 0 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 0 Direction Register at BA 2 For all bits set as inputs a read reads the input values and a write is ignored For all bits set as outputs a read reads the last value sent out on the line and a write writes the current loaded value out to the line Note that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared _D7 D6 D5 Da D3 02 D1 PO T P0 6 POR P0 4 P0 3 P0 2 PO 1 PO O BA 1 Digital I O Port 1 Read Write This port transfers the 8 bit Port 1 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 1 Direction Register at BA 2 For all bits set as inputs a read reads the input values and a write is ignored For all bits set as outpu
24. IRQ line to go high depending on the setting of BA 16 bit 1 and the IRQ status bit will change from 0 to 1 The pulse applied to the EXTINT pin should have a duration of at least 100 nanoseconds Running the 4804DIAG Diagnostics Program Now that your board is ready to use you will want to try it out An easy to use menu driven diagnostics program 4804DIAG is included with your example software to help you verify your board s operation You can also use this program to make sure that your current base address setting does not contend with another device 2 4 CHAPTER 3 HARDWARE DESCRIPTION This chapter describes the features of the DIO4804 hardware The major circuits are the digital I O lines and the timer counters 3 1 3 2 The DIO4804 has two major circuits the digital 1 O lines and the timer counters Figure 3 1 shows the block diagram of the board This chapter describes the hardware which makes up the major circuits 1 0 CONNECTOR INTERRUPT CONTROL 3 X 8 BIT BIT PROGRAMMABLE DIGITAL PC BUS 3 X 8 BIT BIT PROGRAMMABLE DIGITAL tc o o o e d e lt lt e tc n E m BIT PROGRAMMABLE I O CONNECTOR 5 VOLTS CONTROL Fig 3 1 DIO4804 Block Diagram Digital I O The 48 bit programmable digital I O lines can be used to transfer data between the computer and external devices Six ports Ports 0 through 5 each provide eight bit progra
25. TAL GND DIGITAL GND DIGITAL GND P2 4 P2 3 2 2 P2 1 P2 0 6762 P0 7 PO 6 0 5 P0 4 P0 3 P0 2 P0 1 P0 0 5 VOLTS Fig 2 1 P2 P3 and P6 I O Connector Pin Assignments Connecting the Digital I O The DIO4804 is designed for direct connection to industry standard opto 22 isolated I O racks and system modules Each digital I O line has a digital ground as shown in Figure 2 1 For all digital I O connections the high side of an external signal source or destination device is connected to the appropriate signal pin on the I O connec tor and the low side is connected to the DIGITAL GND A cable to provide direct connection to opto 22 systems the 50 is available as an accessory from Connecting the Timer Counter I O External connections to the timer counters on the DIO4804 can be made by connecting the high side of the external device to the appropriate signal pin on I O connector P6 and the low side to a P6 DIGITAL GND Connecting the External Interrupt The DIO4804 can receive externally generated interrupt signals EXTINTI through I O connector P2 pin 2 and EXTINT2 through I O connector P3 pin 2 and route them to IRQ channel selected through software or to a port s strobe input pin through header connectors P20 through P22 as described in Chapter 1 Interrupt generation is enabled through software When interrupts are enabled a rising or falling edge on the EXTINT line will cause the selected
26. a single connector slot in the rear panel of the computer To install the cables a Remove the strain relief clamp attached to the DIO4804 bracket located on the right side of the board b Connectthe socket connector to the board connector for each cable When installing observe the connector keying and press firmly to make sure that the socket connector is fully seated on the board Each cable provided is labeled with the connector s P number for easy identification The cables have strain reliefs on one connector and not on the other The connector withoutthe strain reliefis to be installed on the board After the cables are installed on the board position them so that they pass over the flange in the board s bracket c Re attach the clamp to the bracket using the hardware supplied with your DIO4804 securing the ribbon cables in place After checking that the cables are correctly installed on the board orient the board inside the computer so that the cables extend through the rear panel opening and the card edge connector lines up with the expansion slot connector Then press down on the metal bracket tab and the top of the board until the board is firmly seated in the expansion slot connector NOTE Do not force the board into the slot If the board does not slide into place remove it and try again Wiggling the board or exerting too much pressure can result in damage to the board or to the computer After the board is installed
27. alue Counting begins as soon as the count is loaded BA 15 8254 Timer Counter Control Word Write Only 07 p6 05 Da 93 02 D1 DO BCD Binary 0 binary 1 BCD Counter Select 00 Counter 0 01 Counter 1 10 Counter 2 Read Load Counter Mode Select 000 Mode Ol event count 001 Mode 11 programmable 1 shot 11 read back setting 00 latching operation 010 Mode 21 rate generator 01 readlload i SB only 011 Mode 31 square wave rate generator 10 readlload MSB only 100 Mode 41 software triggered strobe 11 readlload i SBI then MSB 101 Mode RI hardware triggered strobe This address is used to write to the control register for the 8254 The control word is defined above BA 16 Clear IRQ IRQ Enable Read Write A read clears the board s IRQ status flag at BA 17 bit 6 IRQ Enable Register IRQ Enable 0 disabled 1 enabled IRQ Polarity 0 positive edge 1 negative edge A write enables software programmable interrupts at BA 31 and selects whether the interrupt will occur on the positive rising edge or negative falling edge of the pulse 4 10 17 IRQ Status Read Only A read shows the status of each of the three custom digital IC interrupt circuits and the board s interrupt circuit bit 6 so that you can determine which circuit generated an interrupt Port 0 1 IRQ Status Board IRQ Status lon 1 lon 1 lon Port 2 3 IRQ Status O
28. counters cascaded P P P Enables and connects a strobe input to Port 0 through the selected EXT INT external interrupt line DISABLE disabled Enables and connects a strobe input to Port 4 through the selected EXT INT external interrupt line DISABLE disabled Pes P25 JNotused No jumpers installed S1 Sets the base address 300 hex 768 decimal 7 10 11 19 20 Enables and connects a strobe input to Port 2 through 21 the selected EXT INT external interrupt line DISABLE disabled 22 1 a agggguangooonpooooopgpopo nuongugggooooonopDnoo oa oo 25 on on on m XM n LECLECLL A 20200000000000095905050000 H UEM Sram bo ere ma me w ator ET B 200 Tima Dude ma mm wm FERA oceces 600000 22260000000000005D500 2000000000005005DDD05 1 mu NM uw AI Seen NE g x n m sene coo HABEN E Muda In LGA Pn A iat nA TEE RR Fig 1 1 Layout Showing Factory Configured Settings 1 4 P19 8254 Clock and Gate Source Select Factory Settings See Figure 1 2 This header connector shown in Figure 1 2 lets you select the clock sources for the three 8254 16 bit timer counters Figure 1 3 shows a block diagram of the timer counter circuitry to help
29. e is ignored For all bits set as outputs a read reads the last value sent out on the line and a write writes the current loaded value out to the line Note that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared 07 D6 p5 Da D3 02 01 DO PAR P24 P2 3 P2 2 P2 1 P2 0 P2 T P2 6 BA 5 Digital I O Port 3 Read Write This port transfers the 8 bit Port 3 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 3 Direction Register at BA 6 For all bits set as inputs a read reads the input values and a write is ignored For all bits set as outputs a read reads the last value sent out on the line and a write writes the current loaded value out to the line Note that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared D7 D6 05 Da D3 02 D1 DO P3 T P3 6 P3 R 4 P3 3 P3 2 P3 1 P3 0 BA 6 Clear IRQ Program Port 2 Direction Port 3 Direction IRQ Source Registers Read Write A read clears the IRQ status flag or provides the contents of one of three control registers Port 2 Direction Port 3 Direction or Port 2 3 custom digital IC IRQ Source A write clears the digital chip
30. ed at I O port 21H The interrupt vector you will be using is located in the interrupt vector table which is simply an array of 256 bit 4 byte pointers and is located in the first 1024 bytes of memory Segment 0 Offset 0 You can read this value directly but it is a better practice to use DOS function 35H get interrupt vector Most C and Pascal compilers provide a library routine for reading the value of a vector The vectors for the hardware interrupts are vectors 8 through 15 where IRQO uses vector 8 IRQ1 uses vector 9 and so on Thus if the DIO4804 will be using IRQ3 you should save the value of interrupt vector 11 Before you install your ISR temporarily mask out the IRQ you will be using This prevents the IRQ from requesting an interrupt while you are installing and initializing your ISR To mask the IRQ read in the current IMR at I O port 21H and set the bit that corresponds to your IRQ remember setting a bit disables interrupts on that IRQ while clearing a bit enables them The IMR is arranged so that bit 0 is for IRQO bit 1 is for IRQI and so on See the paragraph entitled nterrupt Mask Register IMR earlier in this chapter for help in determining your IRQ s bit After setting the bit write the new value to I O port 21H With the startup IMR saved and the interrupts on your IRQ temporarily disabled you can assign the interrupt vector to point to your ISR Again you can overwrite the appropriate entry in the vector table
31. efore an interrupt can be generated This feature eliminates noise glitches that can cause a false state change on an input line and generate an unwanted interrupt This feature is detailed in Chapter 5 Bit 6 Reserved Bit 7 Reserved 4 7 8 Digital Port 4 Read Write This port transfers the 8 bit Port 4 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 4 Direction Register at BA 10 For all bits set as inputs a read reads the input values and a write is ignored For all bits set as outputs a read reads the last value sent out on the line and a write writes the current loaded value out to the line Note that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared P4 T P4 6 PAR P44 P4 3 P4 2 P4 1 P4 0 BA 9 Digital I O Port 5 Read Write This port transfers the 8 bit Port 5 bit programmable digital input output data between the board and external devices The bits are individually programmed as input or output by writing to the Port 5 Direction Register at BA 10 For all bits set as inputs a read reads the input values and a write is ignored For all bits set as outputs a read reads the last value sent out on the line and a write writes the current loaded value out to the line N
32. emains high until the clock pulse after the next trigger Mode 2 Rate Generator This mode functions like a divide by N counter and is typically used to generate a real time clock interrupt The output is initially high and when the count decrements to 1 the output goes low for one clock pulse The output then goes high again the timer counter reloads the initial count and the process is repeated This sequence continues indefinitely Mode 3 Square Wave Mode Similar to Mode 2 except for the duty cycle output this mode is typically used for baud rate generation The output is initially high and when the count decrements to one half its initial count the output goes low for the remainder of the count The timer counter reloads and the output goes high again This process repeats indefinitely 6 3 Mode 4 Software Triggered Strobe The output is initially high When the initial count expires the output goes low for one clock pulse and then goes high again Counting is triggered by writing the initial count Mode 5 Hardware Triggered Strobe Retriggerable The output is initially high Counting is triggered by the rising edge of the gate input When the initial count has expired the output goes low for one clock pulse and then goes high again Appendix C provides the 8254 data sheet 6 4 CHAPTER 7 INTERRUPTS This chapter explains programmable interrupts digital inter rupts and basic interrupt programming techniques
33. emoving it from the bag hold the board at the edges and do not touch the components or connectors Before installing the board in your computer check the jumper and switch settings Chapter 1 reviews the factory settings and how to change them If you need to change any settings refer to the appropriate instructions in Chapter 1 Note that incompatible jumper settings can result in unpredictable board operation and erratic response To install the board gt gt ON Turn OFF the power to your computer Remove the top cover of the computer housing refer to your owner s manual if you do not already know how to do this Select any unused full size expansion slot and remove the slot bracket Touch the metal housing of the computer to discharge any static buildup and then remove the board from its antistatic bag Holding the board by its edges orient it so that its card edge bus connector lines up with the expansion slot connector in the bottom of the selected expansion slot Before placing the board into the computer the two 50 pin ribbon cable assemblies must be installed on board connectors P2 and P3 and if you are using the 8254 timer counter a 20 pin cable assembly must be installed on P6 If you have purchased the DIO4804 cable set first install the P2 cable on connector P2 Then install the P3 cable on P3 and if needed the P6 cable on P6 Each cable is brought out through
34. errupt BA 6 Register Select Strobe Enable Digital IRQ Enable Strobe Status O nostrobe Digital Sample 1 strobe Clock Select A read shows you whether a digital interrupt has occurred and lets you review the states of the other bits in this register If bit 7 is high then a digital interrupt has taken place This provides the same status information as BA 17 bit 1 Digital Mode Register Reserved Reserved BA 6 Register Select Strobe Enable 00 clear mode Digital Sample 0 disabled 01 Port 2 Direction oegister Clock Select 1 enabled 10 Port 3 Direction oegister 0 8 Mez system clock 11 Source oegister 1 programmable clock Digital IRQ Enable 0 disabled 1 enabled Bits 0 and 1 Select the clear mode initiated by a read write operation at BA 6 or the control register you talk to at BA 6 Port 2 Direction Port 3 Direction or Port 2 3 IRQ Select Register Bit 3 Enables Port 2 strobe input used with P21 header Bit 4 Disables enables digital interrupts The IRQ channel is programmed at BA 19 Bit 5 Sets the clock rate at which the digital lines are sampled when in a digital interrupt mode Available clock sources are the 8 MHz system clock and the output of the 8254 Counter 1 16 bit programmable clock When a digital input line changes state it must stay at the new state for two edges of the clock pulse 62 5 nanoseconds when using the 8 MHz clock before it is recognized and b
35. est occurs on the specified IRQ An ISR is different than standard routines that you write First on entrance the processor registers should be pushed onto the stack BEFORE you do anything else Second just before exiting your ISR you must clear the interrupt status flag of the DIO4804 and write an end of interrupt command to the 8259 controller Finally when exiting the ISR in addition to popping all the registers you pushed on entrance you must use the IRET instruction and not a plain RET The IRET automatically pops the flags CS and IP that were pushed when the interrupt was called If you find yourself intimidated by interrupt programming take heart Most Pascal and C compilers allow you to identify a procedure function as an interrupt type and will automatically add these instructions to your ISR with one important exception most compilers do not automatically add the end of interrupt command to the procedure you must do this yourself Other than this and the few exceptions discussed below you can write your ISR just like any other routine It can call other functions and procedures in your program and it can access global data If you are writing your first ISR we recommend that you stick to the basics just something that will convince you that it works such as incrementing a global variable NOTE If you are writing an ISR using assembly language you are responsible for pushing and popping registers and using IRET instead of RET
36. hows you some of the operators discussed in this section with an example of how each is used with C Pascal and BASIC Note that the modulus operator is used to retrieve the least significant byte LSB of a two byte word and the integer division operator is used to retrieve the most significant byte MSB Language Modulus Integer Division C 8 a b c a b c a b8c a b c Bases MOD DIV AND OR a b MOD a bDIVc b ANDc b ORC Many compilers have functions that can read write either 8 or 16 bits from to an I O port For example Turbo Pascal uses Port for 8 bit port operations and PortW for 16 bits Turbo C uses inportb for an 8 bit read of a port and inport for a 16 bit read Be sure to use only 8 bit operations with the DIO4804 Clearing and Setting Bits in a Port When you clear or set one or more bits in a port you must be careful that you do not change the status of the other bits You can preserve the status of all bits you do not wish to change by proper use of the AND and OR binary operators Using AND and OR single or multiple bits can be easily cleared in one operation Note that most registers in the DIO4804 cannot be read back therefore you must save the value in your program To clear a single bit in a port AND the current value of the port with the value b where b 255 2 Example Clear bit 5 in a port Read in the current value of the port AND it with 223 223 255 2 and then write the
37. ies mechanical relay output front end boards the TB50 terminal board and XB50 prototype terminal board for easy signal access and prototype development and XO50 ribbon cable assembly for interconnection to an opto 22 rack Using This Manual This manual is intended to help you install your new board and get it running quickly while also providing enough detail about the board and its functions so that you can enjoy maximum use of its features even in the most complex applications We assume that you already have an understanding of data acquisition principles and that you can customize the example software or write your own application programs When You Need Help This manual and the example programs in the software package included with your board provide enough information to properly use all of the board s features If you have any problems installing or using this Advanced Industrial Control board contact our Technical Support Department 814 234 8087 during regular business hours eastern standard time or eastern daylight time or send a FAX requesting assistance to 814 234 5218 When sending a FAX request please include your company s name and address your name your telephone number and a brief description of the problem CHAPTER 1 BOARD SETTINGS The DIO4804 has jumper and switch settings you can change if necessary for your application The board 15 factory configured as listed in the table and shown on the layout diagram
38. in the begin ning of this chapter Should you need to change these settings use these easy to follow instructions before you install the board in your computer Also note that by setting the jumpers as desired on header connectors P7 through P12 you can configure each digital I O line to be pulled up or pulled down This procedure is explained at the end of this chapter Factory Configured Switch and Jumper Settings Table 1 1 lists the factory settings of the user configurable jumpers and switch on the DIO4804 Figure 1 1 shows the board layout and the locations of the factory set jumpers The following paragraphs explain how to change the factory settings Pay special attention to the setting of S1 the base address switch to avoid address contention when you first use your module in your system Table 1 1 Factory Settings Jumper Function Controlled Jumpers Installed O lines between COM amp V lines between COM amp V lines between COM amp V lines between COM amp V P Activates pull up pull down resistors on Port 4 digital All bits pulled up jumpers installed lines between COM amp V Activates pull up pull down resistors on Port 5 digital All bits pulled up jumpers installed P12 lines between COM amp V 13 18 JNotused No jumpers installed P P CLKO OSC CLK1 OUTTO CLK2 00UT1 Sets the clock and gate sources for the 8254 GATE2 EXTGATE2 P timer counter timer
39. ing before it was interrupted Other common devices that use interrupts are modems disk drives and mice Your DIO4804 can interrupt the processor when a variety of conditions are met By using these interrupts you can write software that effectively deals with real world events Interrupt Request Lines To allow different peripheral devices to generate interrupts on the same computer the PC bus has eight different interrupt request IRQ lines A transition from low to high on one of these lines generates an interrupt request which is handled by the PC s interrupt controller The interrupt controller checks to see if interrupts are to be acknowledged from that IRQ and if another interrupt is already in progress it decides if the new request should supersede the one in progress or if it has to wait until the one in progress is done This prioritizing allows an interrupt to be interrupted if the second request has a higher priority The priority level is based on the number of the IRQ IRQO has the highest priority is second highest and so on through IRQ7 which has the lowest Many of the IRQs are used by the standard system resources IRQO is used by the system timer IRQ is used by the key board IRQ3 by COM2 IRQ4 by COMI and IRQ6 by the disk drives Therefore it is important for you to know which IRQ lines are available in your system for use by the board 8259 Programmable Interrupt Controller The chip responsible for handling
40. interrupt requests in the PC is the 8259 Programmable Interrupt Controller To use interrupts you need to know how to read and set the 8259 s interrupt mask register IMR and how to send the end of interrupt EOI command to the 8259 Interrupt Mask Register IMR Each bit in the interrupt mask register IMR contains the mask status of an IRQ line bit 0 is for IRQO bit 1 is for IRQ and so on If a bit is set equal to 1 then the corresponding IRQ is masked and it will not generate an interrupt If a bit is clear equal to 0 then the corresponding IRQ is unmasked and can generate interrupts The IMR is programmed through port 21H For all bits 0 lon unmasked enabled 1 lon masked disabled End of Interrupt EOI Command After an interrupt service routine is complete the 8259 interrupt controller must be notified This is done by writing the value 20H to I O port 20H 7 4 What Exactly Happens When an Interrupt Occurs Understanding the sequence of events when an interrupt is triggered is necessary to properly write software interrupt handlers When an interrupt request line is driven high by a peripheral device such as the DIO9604 the interrupt controller checks to see if interrupts are enabled for that IRQ and then checks to see if other interrupts are active or requested and determines which interrupt has priority The interrupt controller then interrupts the proces sor The current code segment CS instruction poi
41. ireFtion 3ort 1 direFtion or IR4 soXrFe 1 2 3ot0 1 2 3ort 0 DigitD IRA 6tDtXs 6et DigitD Control Register digitD interrXSt stDIXs word 3rogrDP digitD Fontrol register DigitD 1 2 3ort 2 ReDd 3ort 2 digitD inSXt lines SrogrDP 3ort 2 digitD oXtSXt lines DigitD 1 2 3ort 3 ReDd 3ort 3 digitD inSXt lines SrogrDP 3ort digitD oXtSXt lines CleDr digitD IR4 stDtXs IIDgrepd 3ort 2 CleDr digitD FhiS SrogrDP 3ort 2 CleDr IR4 3rogrDP 3ort DireFtion direFtion 3ort direFtion or IR4 soXrFe direFtion 3ort direFtion or IR4 soXrFe DigitD IRA 6tDtXs Get DigitD Control Register ReDd digitD interrXSt stDtXs word 3rogrDP digitD Fontrol register DigitD 1 2 3ort 4 ReDd 3ort 4 digitD inSXt lines SrogrDP 3ort 4 digitD oXtSXt lines DigitD 1 2 3ort 5 ReDd 5 digitD inSXt lines SrogrDP 3ort 5 digitD oXtSXt lines CleDr digitD IR4 stDtXs IIDg reDd 3ort 4 CleDr digitD FhiS SrogrDP 3ort 4 CleDr IR4 3rogrDP 3ort DireFtion direFtion 3ort 5 direFtion or IR4 soXrFe direFtion 3ort 5 direFtion or IR4 soXrFe DigitD IRA 6tDtXs 6 et DigitD Control Register ReDd digitD interrXSt stDtXs word 3rogrDP digitD Fontrol register ems Reserved IR4 6tDtXs IR4 ChDnnel 6 oXrFe 6 eleFt ReDds seleFted IR4 FhDnnel soXrFe 3rogrDP IR4 FhDnnel amp soXrFe BDse Address Table 4 1 DIO4804 Map deSendent on BA 3 deSendent on BA 7 deSendent on BA 11 Re
42. ling them are high By pulling these lines down you can ensure that when the data acquisition system is first turned on the motors will not switch on before the port is initialized Pull up pull down resistors have been factory installed on the board and jumpers have been installed in the pull up position on P7 through P12 for all 48 1 O lines Each port and bit is labeled on the module P7 connects to the resistors for Port 0 P8 connects to the resistors for Port 1 and so on The pins are labeled G for ground on one end and V for 5V on the other end The middle pin is common Figure 1 6 shows P7 with the factory installed jumpers placed between the common pin middle pin of the three and the V pin For pull downs install the jumper across the common pin middle pin and G pin To disable the pull up pull down resistor remove the jumper V G P7 N OO RB A 0 1YOd Fig 1 6 Port 0 Pull up Pull down Resistor Connections P7 CHAPTER 2 BOARD INSTALLATION The DIO4804 is easy to install in your PC This chapter tells you step by step how to install and connect the board After you have installed the board and made all of your con nections you can turn your system on and run the 4804DIAG board diagnostics program included on your example software disk to verify that your board is working 2 1 2 2 Board Installation Keep the board in its antistatic bag until you are ready to install it in your computer When r
43. mmable lines which can be independentiv set for input or output The digital I O circuitry is contained in three custom digital ICs The ports are grouped as follows Ports 0 1 Ports 2 3 and Ports 4 5 Chapter 5 details digital I O operations and Chapter 7 explains digital interrupts Timer Counters An 8254 programmable interval timer provides three 16 bit 8 MHz timer counters to support a wide range of timing and counting functions Figure 3 2 shows the timer counter circuitry Each 16 bit timer counter has two inputs CLK in and GATE in and one output timer counter OUT Each can be programmed as binary or BCD down counters by writing the appropriate data to the command word as described in Chapter 4 The command word also lets you set up the mode of operation The six programmable modes are 3 3 Mode 0 Mode 1 Mode 2 Mode 3 Mode 4 Mode 5 Event Counter Interrupt on Terminal Count Hardware Retriggerable One Shot Rate Generator Square Wave Mode Software Triggered Strobe Hardware Triggered Strobe Retriggerable These modes are detailed in the 8254 Data Sheet reprinted from Intel in Appendix C ON BOARD CONNECTOR P6 XTAL 8 MHz PIN 14 EXT CLK 0 0 5 GATE PIN 3 EXT GATE 0 OUT PIN 5 T C OUT 0 TIMER PIN 7 EXT CLK 1 COUNTER CLK O 1 45V GATE PIN 9 EXT GATE 1 PIN 114 T T1 T C OU PIN 1344 EXT CLK 2 TIMER COUNTER CLK 2 5 V GATE PIN 154 EXT G
44. nel at BA 19 bits 0 through 2 To determine which interrupt source has generated an interrupt you must check bits 0 through 2 of the status word read at BA 17 Then service the interrupt that has occurred and clear the interrupt the software program mable interrupt is cleared by reading BA 16 and the digital interrupts are cleared by setting bits 1 and 0 in the corresponding port s Control Register and performing a read at the Port Direction IRQ Source Register address CLOC DIGITAL INP IRQ OUT Fig 7 1 Digital Interrupt Timing Diagram 7 3 Basic Programming For Interrupt Handling What Is an Interrupt An interrupt is an event that causes the processor in your computer to temporarily halt its current process and execute another routine Upon completion of the new routine control is returned to the original routine at the point where its execution was interrupted Interrupts are very handy for dealing with asynchronous events events that occur at less than regular intervals Keyboard activity is a good example your computer cannot predict when you might press a key and it would be a waste of processor time for it to do nothing while waiting for a keystroke to occur Thus the interrupt scheme is used and the processor proceeds with other tasks Then when a keystroke does occur the keyboard interrupts the processor and the processor gets the keyboard data places it in memory and then returns to what it was do
45. nne ee een aee etna esten sese etae sete eaae seta sese tees aeo 2 1 Board Installation aenn sea az 2 3 External Ae 2 3 Connecting the Digital TO tada ta 2 4 Connecting the Timer Counter VO ricino en ala naeh 2 4 Connecting the External Intetr pt cnin m rtt et et tee e een 2 4 Running the 4804DIAG Diagnostics Program 2 4 CHAPTER 3 HARDWARE DESCRIPTION 000000000000000000000000000000002000000000000000000 teens e tea aeo 3 1 Digital ace an e Om ome Accede ae tC C ii ot 3 3 Timer Counters ii A da he ee 3 3 CHAPTER 4 VO MAPPING a Ee sU ph 4 1 Detinine the LO Map iio las e beca o ito I ia rak ta eoe iud ue dto bte eruere 4 3 BA 0 Digital I O Port 0 Read Write ia ener 4 4 BA 1 Digital VO Port 1 Read Write essere enne enne enne nennen 4 4 BA 2 Clear IRQ Program Port 0 Direction Port 1 Direction IRQ Source Registers Read Write 4 4 3 Read Digital I O Status Program Digital Mode Read Write Ne 4 5 BA 4 Digital I O Port 2 Read Write esinin 4 6 BA 5 Digital O Port 3 Read Write ee eee dette entes MER a 4 6 6 Clear IRQ Program Port 2 Direction Port 3 Direction IRQ Source Registers Read Write 4 6 BA 7 Read Digital I O Status Program Digital Mode Read Write Ne 4 7 BA 8 Digital
46. nter IP and flags are pushed on the stack for storage and a new CS and IP are loaded from a table that exists in the lowest 1024 bytes of memory This table is referred to as the interrupt vector table and each entry is called an interrupt vector Once the new CS and IP are loaded from the interrupt vector table the processor begins executing the code located at CS IP When the interrupt routine is completed the CS IP and flags that were pushed on the stack when the interrupt occurred are now popped from the stack and execution resumes from the point where it was interrupted Using Interrupts in Your Programs Adding interrupts to your software is not as difficult as it may seem and what they add in terms of performance is often worth the effort Note however that although it is not that hard to use interrupts the smallest mistake will often lead to a system hang that requires a reboot This can be both frustrating and time consuming But after a few tries you ll get the bugs worked out and enjoy the benefits of properly executed interrupts In addition to reading the following paragraphs study the INTRPTS source code included on your DIO4804 program disk for a better understanding of interrupt program development Writing an Interrupt Service Routine ISR The first step in adding interrupts to your software is to write the interrupt service routine ISR This is the routine that will automatically be executed each time an interrupt requ
47. of the DIO4804 and forgetting to issue the EOI command to the 8259 interrupt controller before exiting the ISR 7 7 7 8 APPENDIX A 0104804 SPECIFICATIONS A 2 DIO4804 Characteristics Typical 25 C Interface Switch selectable base address mapped Software programmable interrupts Digital 1 O Number of lines 48 bit programmable iUc ERES 12 mA SIA A TA E AERIS 24 mA Timer Counters 2242222 adan CMOS 82C54 Three 16 bit down counters 6 programmable operating modes Counter input source nn nn nn nn External clock 8 Mezl max or on board 8 Mez clock Counter outputs pp Available externally used as PC interrupts Counter gate source pp External gate or always enabled Miscellaneous Inputs Outputs PC bus sourced Rvoltsl ground Power Requirements Rs 2RO mA 1 2Rt typical Connectors P2 and RO pin header P6 20 pin header Environmental I peratin temperature sca aad rg to TO C Storage temperature sen nennnnnnne emen 40 to 8R C enatis 0 to 90B non condensing Size 3 8TR e x 13 20 t 99mm x 33Rmm A 3 A 4 APPENDIX CONNECTOR PIN ASSIGNMENTS B 2 P2 Connector P3 Connector P4 7 CO EXT INT 1 P5 7 1 2 EXT INT 2 P4 6 3 4 DIGITAL GND P5 6 3 4 DIGITAL GND P4 5 5 6 DIGITAL GND P5 5 5 6 DIGITAL GND P4 4 7 DIGITAL GND P5 4 7 8 DIGITAL
48. oint emulators are not reentrant Of course there are ways around this problem such as those which involve checking to see if any DOS functions are currently active when your ISR is called but such solutions are well beyond the scope of this discussion The second major concern when writing your ISR is to make it as short as possible in terms of execution time Spending long periods of time in your ISR may mean that other important interrupts are being ignored Also if you spend too long in your ISR it may be called again before you have completed handling the first run This often leads to a hang that requires a reboot Your ISR should have this structure Push any processor registers used in your ISR Most C and Pascal interrupt routines automatically do this for you Put the body of your routine here Clear the interrupt status flag for the source which caused the interrupt Clear software programmable interrupt status flag by reading BA 16 Clear the Port 0 1 digital interrupt flag by setting bits 1 and 0 at BA 3 to 00 and reading 2 Clear the Port 2 3 digital interrupt flag by setting bits 1 and 0 at 7 to 00 and reading BA 6 Clear the Port 4 5 digital interrupt flag by setting bits 1 and 0 at BA 11 to 00 and reading BA 10 Issue the EOI command to the 8259 interrupt controller by writing 20H to port 20H Pop all registers pushed on entrance Most C and Pascal interrupt routines automatically
49. ote that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared 07 p6 D5 Da D3 D2 D1 DO PRT PR6 PRR PR4 PR3 PR2 PR1 PRO BA 10 Clear IRQ Program Port 4 Direction Port 5 Direction IRQ Source Registers Read Write A read clears the IRQ status flag or provides the contents of one of three control registers Port 4 Direction Port 5 Direction or Port 4 5 custom digital IC IRQ Source A write clears the digital chip or programs one of the three control registers depending on the setting of bits 1 and 0 at 11 When bits 1 and 0 at BA 11 are 00 the read write operations clear the digital IRQ status flag read and the digital chip write When these bits are set to any other value one of the three Port 4 5 digital I O registers is addressed Port 4 Direction Register BA 11 bits 1 and 0 01 For all bits D7 D6 D5 D4 D3 D2 D1 1 output P4 T P4 6 PAR P44 P4 3 P4 2 P4 1 P4 0 This register programs the direction input or output of each bit at Port 4 Port 5 Direction Register BA 11 bits 1 and 0 10 For all bits 1 output PRT PR6 PRR PR4 PR3 PR2 PR1 PRO This register programs the direction input or output of each bit at Port 5 4 8 Port 4 5 IRQ Source Register BA 11 bits 1 and 0 11 D7 D6 05 Da 03 02 01 DO Port 4 5 IRQ Select 000
50. re what happens to bits 6 and 7 but we can say for sure that bit 5 ends up cleared instead of being set A similar problem happens when you use subtraction to clear a bit in place of the method shown above 4 13 4 14 CHAPTER 5 DIGITAL VO This chapter explains the bit programmable digital I O circuitry on the DIO4804 5 1 5 2 The DIO4804 has 96 buffered bit programmable TTL CMOS digital I O lines available for digital control applications These lines are grouped in six 8 bit ports and can be independently programmed as input or output Bit Programmable Digital I O The eight digital lines in Ports 0 through 5 are individually set for input or output by writing to the respective port Direction Registers at BA 2 BA 6 and BA 10 The input lines are read and the output lines are written at 0 BA 4 and BA 7 Direction Register 5 o7 0s os Da os 02 br i PX T X 6 X 2 PX 1 Digital Interrupts Each custom digital IC contains the digital I O circuitry for two ports or 16 bit programmable lines There are three ICs Port 0 1 Port 2 3 and Port 4 5 One line on each chip can be programmed as a digital interrupt by programming the IRQ select register with the digital line to be monitored programming IRQ channel at 19 and setting the IRQ enable bit high in the Control Register If for example you wanted to use Port 0 bit 6 to generate an interrupt you would program the de
51. resulting value to the port In BASIC this is programmed as V SAVE V SAVE AND 223 OUT PortAddress V 4 12 To set a single bit in a port OR the current value of the port with the value b where b 2 Example Set bit 3 in a port Read in the current value of the port OR it with 8 8 23 and then write the resulting value to the port In Pascal this is programmed as V_Save V_Save OR 8 Port PortAddress V Save Setting or clearing more than one bit at a time is accomplished just as easily To clear multiple bits in a port AND the current value of the port with the value b where b 255 the sum of the values of the bits to be cleared Note that the bits do not have to be consecutive Example Clear bits 2 4 and 6 in a port Read in the current value of the port AND it with 171 171 255 2 24 26 and then write the resulting value to the port In this is programmed as v save v save amp 171 outportb port address v save To set multiple bits in a port OR the current value of the port with the value b where b the sum of the individual bits to be set Note that the bits to be set do not have to be consecutive Example Set bits 3 5 and 7 in a port Read in the current value of the port OR it with 168 168 2 2 27 and then write the resulting value back to the port In assembly language this is programmed as mov al v save or al 168 mov dx PortAddress out dx al
52. sired IRQ channel at BA 19 and set bits 4 1 and 0 at BA 3 high to access the IRQ Source Register and enable digital interrupts Then you would write 0110 in the bottom four bits at BA 2 to select digital I O line P0 6 Every time P0 6 goes from low to high a positive going edge an interrupt is generated Resetting the Digital Circuitry When a digital chip clear is issued all of the digital I O lines are set up as inputs and their corresponding output registers are cleared Strobing Data into Ports 0 2 and 4 External data can be strobed into any or all of these three ports by connecting the port s strobe jumper on the corresponding header and enabling the strobe by setting bit 3 high in the Control Register Port 0 is set at P20 Port 2 at P21 and Port 4 at P22 The strobe input is the EXTINTI signal P2 2 or the EXTINT2 signal P3 2 as selected on the headers EXTINT3 and EXTINTA are not connected 5 3 5 4 CHAPTER 6 TIMER COUNTERS This chapter explains the 8254 timer counter circuit on the DIO4804 6 1 6 2 An 8254 programmable interval timer provides three 16 bit 8 MHz timers for timing and counting functions such as frequency measurement event counting and interrupts These timer counters can be configured in a number of ways to support your application Figure 6 1 shows a block diagram of the timer counter circuitry ON BOARD 1 0 CONNECTOR y E I XTAL 8 MHz TIMER counter CLK PIN
53. t base address simply by setting the switches to any one of the values listed in Table 1 2 The table shows the switch settings and their corresponding decimal and hexadecimal in parentheses values Make sure that you verify the order of the switch numbers on the switch 1 through 4 before setting them When the switches are pulled forward they are OPEN or set to logic 1 as labeled on the DIP switch package When you set the base address for your board record the value in the table inside the back cover Figure 1 5 shows the DIP switch set for a base address of 300 hex 768 decimal Base Address Switch Setting Decimal Hex 4321 Decimal Hex 4321 512 200 1000 5441 220 1001 516 240 1010 608 260 1011 640 280 1100 672 1 QAO 1101 704 1110 736 QE 1111 Fig 1 5 Base Address Switch 1 P7 through P12 Pull up Pull down Resistors on Digital I O Lines The DIO4804 has 48 bit programmable TTL CMOS compatible digital I O lines which can be interfaced with external devices These lines are divided into six 8 bit ports Port 0 through Port 5 You can connect pull up or pull down resistors to any or all of these lines on a bit by bit basis You may want to pull lines up for connection to switches This will pull the line high when the switch is disconnected Or you may want to pull lines down for connection to relays which control turning motors on and off These motors turn on when the digital lines control
54. ts a read reads the last value sent out on the line and a write writes the current loaded value out to the line Note that when any reset of the digital circuitry is performed clear chip or computer reset all digital lines are reset to inputs and their corresponding output registers are cleared 07 06 05 Da D3 02 D1 DO P1 T P1 6 P1 R 1 4 P1 3 P1 2 P1 1 P1 0 BA 2 Clear IRQ Program Port 0 Direction Port 1 Direction IRQ Source Registers Read Write A read clears the IRQ status flag or provides the contents of one of three control registers Port 0 Direction Port 1 Direction or Port 0 1 custom digital IC IRQ Source A write clears the digital chip or programs one of the three control registers depending on the setting of bits 1 and 0 at BA 3 When bits 1 and 0 at BA 3 are 00 the read write operations clear the digital IRQ status flag read and the digital chip write When these bits are set to any other value one of the three Port 0 1 digital I O registers is addressed Port 0 Direction Register BA 3 bits 1 and 0 01 For all bits 1 output PO T PO 6 POR P0 4 P0 3 P0 2 1 P0 0 This register programs the direction input or output of each bit at Port 0 Port 1 Direction Register BA 3 bits 1 and 0 10 For all bits 1 output P1 T P1 6 P1 R P1 4 P1 3 P1 2 P1 1 P1 0 This register programs the direction input or output of each bit at Port 1 4 4 Port 0 1 IRQ Source Register BA 3 bi
55. ts 1 and 0 11 D7 D6 05 4 03 D2 D1 Port 0 1 IRQ Select 0000 P0 0 0100 P0 4 1000 P1 0 1100 P1 4 0001 P0 1 0101 POR 1001 P1 1 1101 P1 R 0010 P0 2 0110 P0 6 1010 P12 1110 P1 6 0011 P0 3 O111 POT 1011 P1 3 1111 P1 T This register programs the bit to be used to generate a digital interrupt for the Port 0 1 custom digital IC A digital interrupt is generated when the selected bit goes from low to high positive going edge or high to low negative going edge depending on the setting of BA 3 bit 2 BA 3 Read Digital I O Status Program Digital Mode Read Write Digital IRQ Status 0 no digital interrupt 1 digital interrupt BA 2 Register Select Strobe Enable Digital IRQ Enable Port 0 1 IRQ Invert Strobe Status 0 strobe Digital Sample 1 strobe Clock Select A read shows you whether a digital interrupt has occurred and lets you review the states of the other bits in this register If bit 7 is high then a digital interrupt has taken place This provides the same status information as BA 17 bit 0 Digital Mode Register Reserved Digital IRQ preserved Enable PEN BA 2 Register Select 0 disabled o 00 clear mode 1 enabled IRQ Invert 01 Port 0 Direction o egister 0 non invert 10 Port 1 Direction o egister Digital Sample 1 invert 11 lon Source Clock Select Strobe Enable 0 8 Mez system clock 0 disabled 1 programmable clock
56. with a direct memory write but this is a bad practice Instead use either DOS function 25H set interrupt vector or if your compiler provides it the library routine for setting an interrupt vector Remember that vector 8 is for IRQO vector 9 is for IRQI and so on If you need to program the source of your interrupts do that next For example if you are using the program mable interval timer to generate interrupts you must program it to run in the proper mode and at the proper rate Finally clear the bit in the IMR for the IRQ you are using This enables interrupts on the IRQ Restoring the Startup IMR and Interrupt Vector Before exiting your program you must restore the interrupt mask register and interrupt vectors to the state they were in when your program started To restore the IMR write the value that was saved when your program started to I O port 21H Restore the interrupt vector that was saved at startup with either DOS function 35H get interrupt vector or use the library routine supplied with your compiler Performing these two steps will guarantee that the interrupt status of your computer is the same after running your program as it was before your program started running Common Interrupt Mistakes Remember that hardware interrupts are numbered 8 through 15 even though the corresponding IRQs are numbered 0 through 7 Two of the most common mistakes when writing an ISR are forgetting to clear the interrupt status

Download Pdf Manuals

image

Related Search

Related Contents

A73017311 SOFT Z -CONFIG. ACCESORIOS 2009-02  取扱説明書 - 三菱電機  取扱説明書 - DXアンテナ  Cdp manual instalaciones  5 - Ergotron  Cscape Software User Manual for IC300OSW232, Second Edition  BP-PR PLUS  User manual_(HLWH003B)  Kapitel 1 Advance Installation  結線例 (標準電気回路図)  

Copyright © All rights reserved.
Failed to retrieve file