Home
DM6816/DM5816 User's Manual - RTD Embedded Technologies, Inc.
Contents
1. 3 1 Width Modulators u l aa TR ES ER Nea Fee 3 3 Bl te I SE EE 3 3 CHAPTER 4 I O MAPPING anne 4 1 Defining the IO Map coins p a 4 3 BA 0 Pulse Width Modulator 0 0 Duty Cycle 001 teens 4 4 1 Pulse Width Modulator 0 1 Duty Cycle Write eese eene 4 4 BA 2 Pulse Width Modulator 0 2 Duty Cycle Write sees 4 4 3 PWM Control and Digital Output Register Write pt 4 4 BA 4 Pulse Width Modulator 1 0 Duty Cycle Write 4 5 BA 5 Pulse Width Modulator 1 1 Duty Cycle Write essere eene 4 5 BA 6 Pulse Width Modulator 1 2 Duty Cycle 4 5 7 PWM Control and Digital Output Register Write pe 4 5 BA 8 Pulse Width Modulator 2 0 Duty Cycle Write essent 4 6 BA 49 Pulse Width Modulator 2 1 Duty Cycle Write essent 4 6 10 Pulse Width Modulator 2 2 Duty Cycle 4 6 BA 11 PWM Control and Digital Output Register Write pp 4 6 12 8254 Timer Counter O Read Write 2 1 20000 0 00000 000000000000000000000400 0000000 4 7 13 8254 Timer Counter 1 Read Write 1 1 2 2 2 40 002 00000000000000000000000000000000500 e
2. u N u s 9 Resolutio Ee 8 bits Max internal cloek et ne 8 MHz Max external clock niue ice tr e m Yer eme rtr e rea 10 MHz Output type nase reise einen TTL Output level uuu u can deed 0 5 volts ISOUIGO i eoe en ee eee 12 mA a ECCLE 24 mA Digital Outputs Number of INES E cinco cca een fe doe o rare geo ger h sie tai 12 ME HET DP TTL Output levels 0 5 volts 12 STR it id a 24 mA Timer Gounters uu u u uu A CMOS 82C54 Three 16 bit down counters 6 programmable operating modes Counter input External clock 8 MHz max or on board 8 MHz 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 5 volts ground Power Requirements 5V 238 mA 1 18W typical Connectors P2 and P3 50 pin right angle header P6 12 pin box header Environmental Operating temperature pp to 70 C Storage temperature pp 40 to 85 C A 0 to 90 non condensing 3 55 L x 3 775 W x 0 6 H 90mm x 96mm x 15mm A 3 A 4 APPENDIX CONNECTOR PIN ASSIGNMENTS B 2 P2 Connector PWM 0 1 PWM 0 0 5 VOLTS DIGITAL GND DIGITAL GND DIGITAL GND PIN 49
3. N 4 Fig 1 6 Interrupt Source Select Jumper P14 51 Base Address Factory Setting 300 hex 768 decimal One of the most common causes of failure when you are first trying your module is address contention Some of your computer s I O space is already occupied by internal I O and other peripherals When the module attempts to use I O address locations already used by another device contention results and the module does not work To avoid this problem the DM6816 DM58 16 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 unsuit able for your system you can select a different 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 module record the value in the table inside the back cover Figure 1 7 shows the DIP switch set for a base address of 300 hex 768 decimal Table 1 2 Base Address Switch Settings S1 Base Address Switch Setting Base Address Switch Setting Decimal Hex
4. SEE 7 4 8259 Programmable Interrupt Controller 3 7 4 Interrupt Mask Register AMR Ja ces B EP e 7 4 End of Interrupt EOD Command sceninis eieiei iann a ie n i Ei ie eie i 7 4 What Exactly Happens When an Interrupt Occurs 4 7 5 Using Interrupts in Your Programs 4 7 5 Writing an Interrupt Service Routine ISR a aa ener ener enne nr en nennen inerte nanna 7 5 Saving the Startup Interrupt Mask Register IMR and Interrupt Vector 7 6 Restoring the Startup IMR and Interrupt Vector 4 7 7 Common Interrupt Mistakes 7 7 APPENDIX A DM6814 DM5814 SPECIFICATIONS 1 APPENDIX B CONNECTOR PIN ASSIGNMENTS B 1 APPENDIX C COMPONENT DATA SHEETS C 1 APPENDIX D WARRANTY aecccvcsesssietsescassueneatecnsaaieesssoassestadeoussonssnsseceegeesasesshotosnsesbadusenestsetsassedsiees D 1 1 1 1 2 1 3 1 5 1 6 1 7 2 1 3 1 3 2 6 1 List of Illustrations Module Layout Showing Factory Configured Settings n n enne 1 4 Interrupt Channel Select Jumper 1 5 Pulling Down the Interrupt Request Lines eese nennen nennen enne nennen 1 5 8254 Clock and Gate Sources Jumpers
5. Pulse Width Modulators PWM The DM5816 has nine 8 bit pulse width modulator circuits The PWM function is divided into three blocks with each having three PWMs and four digital outputs Each block consists of an 8 bit counter that is driven by either an on board 8 MHz clock the 8 MHz clock divided by a 16 bit counter timer or an external clock There are three 8 bit PWM registers The counter output is compared to each register and the PWM outputs are high if the count is less than the register and low if the count is greater than the register Four buffered digital output lines available for control functions such as direction 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 Module You receive the following items in your module package DM6816 DM5816 module with stackthrough bus header Mounting hardware Example programs in BASIC and C with source code amp diagnostics software User s manual If any item is missing or damaged please call RTD Embedded Technologies Inc Customer Service Depart ment at 814 234 8087 If you require service outside the U S contact your local distributor Module Accessories In addition to the items included in your module package RTD Embedded Technologies Inc offers a full line of software and hardware accessories Call your local distributor or our main of
6. N C EXT INT 1 DIG OUT 2 2 DIGITAL GND DIG OUT 2 1 5 6 DIGITAL GND DIG OUT 2 0 7 8 DIGITAL GND N C 9 0 DIGITAL GND PWM 2 2 11 12 DIGITAL GND PWM 2 1 G3G2 DIGITAL GND PWM 2 0 15 16 DIGITAL GND N C 28 DIGITAL GND PIN 1 DIG OUT 1 2 DIGITAL GND DIG OUT 1 1 2702 DIGITAL GND DIG OUT 1 0 23 DIGITAL GND N C 25 G DIGITAL GND PWM 1 2 6269 DIGITAL GND PWM 1 1 DIGITAL GND PWM 1 0 81 82 DIGITAL GND N C 63 G DIGITAL GND DIG OUT 0 2 35 36 DIGITAL GND DIG OUT 0 1 67 68 DIGITAL GND DIG OUT 0 0 DIGITAL GND N C DIGITAL GND PWM 0 2 DIGITAL GND P3 Connector N C N C 5 VOLTS DIGITAL GND DIGITAL GND DIGITAL GND N C 1 2 EXT INT 1 N C 2 DIGITAL GND N C 6 DIGITAL GND N C 7 8 DIGITAL GND N C 9 0 DIGITAL GND N C 19 2 DIGITAL GND N C G3 G2 DIGITAL GND N C 15 16 DIGITAL GND N C G2G8 DIGITAL GND N C DIGITAL GND N C 1 22 DIGITAL GND N C G3 2 DIGITAL GND N C 25 26 DIGITAL GND N C 7 8 DIGITAL GND N C DIGITAL GND N C GDG DIGITAL GND N C 63 64 DIGITAL GND N C 85 66 DIGITAL GND N C 67 68 DIGITAL GND N C DIGITAL GND N C DIGITAL GND N C DIGITAL GND B 3 P6 Connector EXT CLK 0 GATE 0 OUT 0 DIGITAL GND EXT CLK 1 GATE 1 OUT 1 DIGITAL GND EXT CLK 2 GATE 2 OUT 2 DIGITAL GND B 4 APPENDIX
7. P5 Ne 1 6 8254 Circuit Dia rete ee eb i PERDE EU E RERO RU pi 1 6 Interrupt Source Select Jumper 14 1 7 Base Address Switch ST 2 8 san unt eiae bea 1 8 P2 P3 and P6 I O Connector Pin nnne enne enne enne 2 4 DM6816 DM5816 Block Diagram eren erint trennen treten treten trennen trennen 3 3 Timer Counter Circuit Block 22 2 0 2220 0 01 61010000000 00000 3 4 8254 Timer Counter Circuit Block Diagram eese enne eene een entree enne 6 3 iii iv INTRODUCTION The DM5816 DM6816 Pulse Width Modulator PWM dataModule turns your IBM PC compatible cpuModule or other PC 104 computer into a high performance control system The DM5816 and DM68 16 are the same board except for the addition of the AT bus connector on the DM6816 This connector allows you to stack the module easily with other AT modules and also allows you access to the AT interrupts Ultra compact for embedded and portable applications the module features Nine 8 bit Pulse Width Modulated Outputs 12 buffered digital outputs Three 16 bit timer counters and on board 8 MHz clock Operation from single 5V supply DOS example programs with source code in BASIC and C Diagnostics software The following paragraphs briefly describe the major functions of the module A detailed discussion of module functions is included in subsequent chapters
8. GATE 1 PIN 7 u T C OUT 1 PIN 9 EXT CLK 2 TIMER COUNTER CLK 2 45V 1 PIN 100 EXT GATE 2 PIN 11 T C 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 remains 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 cl
9. Polarity 0 positive edge 1 negative edge A write enables P14 interrupts and selects whether the interrupt will occur on the positive rising edge or negative falling edge of the pulse Bit 2 is used to enable and disable the interrupt sharing circuit If you are not using shared interrupts it is best to disable this feature to ensure compatibility with all CPUs 4 7 BA 17 IRQ Status Read Only A read shows the status of the jumper selectable interrupt circuit at P14 Reserved P14 IRQ Status 0 1 Reserved Reserved 18 Reserved 19 Reserved 4 8 Programming the DM6816 DM5816 This section gives you some general information about programming and the DM5816 The module 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 Language Read Write BASIC Data INP Address OUT Address Data Turbo C Data inportb Address outportb Address Data Turbo Pascal Assembly Data Port Address mov dx Address in al dx Port Address Data mov dx Address mov al Data out dx al In addition to being able to read write the I O ports on the DM6
10. TC Read value in Load count in Counter 1 BA 13 Counter 1 Counter 1 8254 TC Read value in Load count in Counter 2 BA 14 Counter 2 Counter 2 8254 Control Reserved Word Clear IRQ IRQ Clear interrupt Enable interrupt line P14 BA 16 Enable line P14 Disable interrupt sharing IRQ Status Read interrupt Reserved BA 17 status PWM 7 Data PWM 8 Data PWM 9 Data Program counter mode BA 15 Reserved BA 18 Reserved Reserved Reserved Reserved BA 19 4 3 0 Pulse Width Modulator 0 0 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 BA 1 Pulse Width Modulator 0 1 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 BA 2 Pulse Width Modulator 0 2 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 D7 D6 05 D4 D3 02 D1 DO LSB MSB Typical of all PWM registers BA 3 PWM Control and Digital Output Register Write Only Bit 0 0 disables PWM 0 0 1 enables PWM 0 0 Bit 1 0 disables PWM 0 1 1 enables PWM 0 1 Bit 2 0 disables PWM 0 2 1 enables PWM 0 2 Bit 3 0 use 8 MHz clock 1 use output of timer 1 for clo
11. 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 DM6816 DM5816 will be using 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 IRQ1 and so on See the paragraph entitled Interrupt 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 with a direct memory 7 6 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
12. 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 DM6816 DM5816 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 request 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 DM6816 DM5816 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
13. 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 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 w
14. is based on the number of the IRQ IRQO has the highest priority IRQI 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 keyboard by 2 IRQ4 by COM1 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 module 8259 Programmable Interrupt Controller The chip responsible for handling 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 IRQI 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 ne mos ma or For all bits 0 IRQ unmasked enabled 1 IRQ masked disabled End of Interrupt EOD 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 What Exac
15. 2 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 sure 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 10 5 DIGITAL VO This chapter explains the digital I O circuitry on the DM6816 DM5816 5 1 5 2 The DM6816 DM5816 has three TTL CMOS digital output lines available for digital control applications each of the three pulse width modulator chips Chapter 4 shows how to program these lines 5 3 5 4 CHAPTER 6 TIMER COUNTERS This chapter explains the 8254 timer counter circuit on the DM6816 DM5816 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 CONNECTOR ji x I XTAL 8 MHz TIMER couNTER CLK PIN 10 EXT CLK 0 0 5 V GATE PIN 2 EXT GATE 0 PIN 3 T C OUT O 1 I OUNT PIN 5 EXT CLK 1 1 couNTER CLK L 1 45V GATE PIN 6 EXT
16. 259 interrupt controller by writing 20H to port 20H Pop all registers pushed on entrance Most C and Pascal interrupt routines automatically 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 jumper selectable 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 20 20 Send EOI command to 8259 end 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 located 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
17. 4321 Decimal Hex 4321 512 200 0000 768 300 1000 544 220 0001 800 320 1001 576 240 0010 832 340 1010 608 260 0011 864 360 1011 640 280 0100 896 380 1100 672 2A0 0101 928 3A0 1101 704 2C0 0110 960 3 0 1110 736 2E0 0111 992 3E0 1111 0 Closed 1 Open Fig 1 7 Base Address Switch S1 2 MODULE INSTALLATION The DM6816 DM5816 is easy to install in your cpuModule or other PC 104 based system This chapter tells you step by step how to install and connect the module After you have installed the module and made all of your connections you can turn your system on and run the 5816DIAG board diagnostics program included on your example software disk to verify that your module is working 2 1 2 2 Module Installation Keep the module in its antistatic bag until you are ready to install it in your cpuModule or other PC 104 based system When removing it from the bag hold the module at the edges and do not touch the components or connectors Before installing the module in your system 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 module operation and erratic response The DM6816 DM5816 comes with a stackthrough P1 connector The stackthro
18. 816 DM5816 you must be able to perform a variety of operations that you might not normally use in your programming The table below shows 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 Division AND OR am a b Ic a amp a b c Pascal MOD DIV AND OR a b MOD c a bDIVc b AND a bORc MOD AND OR BASIC b MOD a a bANDc a bORc 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 DM5816 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 DM5816 cannot be read back therefore you must save the value in your program To clear a single bit in
19. COMPONENT DATA SHEETS C 2 Intel 82C54 Programmable Interval Timer Data Sheet Reprint C 3 C 4 APPENDIX WARRANTY AND RETURN POLICY Return Policy If you wish to return a product to the factory for service please follow this procedure Read the Limited Warranty to familiarize yourself with our warranty policy Contact the factory for a Return Merchandise Authorization RMA number Please have the following available Complete board name Board serial number A detailed description of the board s behavior List the name of a contact person familiar with technical details of the problem or situation along with their phone and fax numbersl addressl and e mail address if available List your shipping address Indicate the shipping method you would like used to return the product to you We will not ship by next day service without your pre approval Carefully package the product using proper anti static packaging Write the RMA number in large 1 letters on the outside of the package Return the package to RTD Embedded Technologies Inc 103 Innovation Blvd State College PA 16803 0906 USA D 2 LIMITED WARRANTY RTD Embedded Technologies 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 RTD Embedded Technologies INC This warranty is limited to the original purchaser of
20. DM6816 DM5816 User s Manual RTD Embedded Technologies Inc Real Time Devic es Accessing the Analog World BDM 610010020 Rev A DM6816 DM5816 User s Manual RTD Embedded Technologies INC 103 Innovation Blvd State College PA 16803 0906 Phone 1 814 234 8087 FAX 1 814 234 5218 E mail sales rtd com techsupport rtd com web site http www rtd com Revision History New manual naming method Published RTD Embedded Technologies Inc 103 Innovation Blvd State College PA 16803 0906 Copyright 1999 2002 2003 by RTD Embedded Technologies Inc All rights reserved Printed in U S A The RTD Logo is a registered trademark of RTD Embedded Technologies cpuModule and utilityModule are trademarks of RTD Embedded Technologies PhoenixPICO and PheonixPICO BIOS are trademarks of Phoenix Technologies Ltd PS 2 PC XT PC AT and IBM are trademarks of International Business Machines Inc MS DOS Windows Windows 95 Windows 98 and Windows NT are trademarks of Microsoft Corp PC 104 is a registered trademark of PC 104 Consortium All other trademarks appearing in this document are the property of their respective owners Table of Contents INTRODUCTION Bre 1 1 Pulse Width Modulators PWM i 3 8254 Timer Cointers 1 3 What Comes With Your Module 1 3 Module Accessories i tret a ERE ERE 1 3 Hard
21. M1 0 Output Output Output Clock Output Output Output 0 Use 8 MHz clock L 1 Use output of timer 1 8 Pulse Width Modulator 2 0 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 9 Pulse Width Modulator 2 1 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 10 Pulse Width Modulator 2 2 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 07 p6 D5 D4 D3 02 Di DO LSB MSB Typical of all PWM registers BA 11 PWM Control and Digital Output Register Write Only Bit 0 0 disables PWM 2 0 1 enables PWM 2 0 Bit 1 0 disables PWM 2 1 1 enables PWM 2 1 Bit 2 0 disables PWM 2 2 1 enables PWM 2 2 Bit 3 0 use 8 MHz clock 1 use output of timer 1 for clock Bit 4 Digital Output 2 0 Bit 5 Digital Output 2 1 Bit 6 Digital Output 2 2 Bit 7 Reserved Write with a 0 D7 D6 05 D4 93 02 01 DO Rsvd P2 2 P2 1 P2 0 PWM PWM2 2 PWM2 1 PWM2 0 Output Output Output Clock Output Output Output 0 Use 8 MHz clock L 1 Use output of timer 1 12 8254 Timer Counter 0 Read Write This address is used to read write ti
22. SHALL BE REPAIR OR REPLACEMENT AS PROVIDED ABOVE UNDER NO CIRCUMSTANCES WILL RTD Embedded Technologies BE LIABLE TO THE PURCHASER OR ANY USER FOR ANY DAMAGES INCLUD ING ANY INCIDENTAL OR CONSEQUENTIAL DAMAGES 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 CONSEQUENTIAL DAMAGES FOR CONSUMER PRODUCTS AND SOME STATES DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY LASTS SO THE ABOVE LIMITATIONS OR EXCLUSIONS 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 RTD Embedded Technologies Inc 103 Innovation Blvd State College PA 16803 0906 USA Our website www rtd com D 4 DM6816 DM5816 User Settings Base I O Address decimal
23. 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 resulting value to the port In BASIC this is programmed as V_SAVE V_SAVE AND 223 OUT PortAddress V 4 9 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 2 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 2 and then write the resulting value to the port In C 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 o
24. ck Bit 4 Digital Output 0 0 Bit 5 Digital Output 0 1 Bit 6 Digital Output 0 2 Bit 7 Reserved Write with a 0 D7 p6 D5 D4 93 02 D1 DO Rsvd P0 2 P0 1 P0 0 PWM PWM0 2 PWM0 1 PWMO O Output Output Output Clock Output Output Output 0 Use 8 MHz clock L 1 Use output of timer 1 BA 4 Pulse Width Modulator 1 0 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 BA 5 Pulse Width Modulator 1 1 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 BA 6 Pulse Width Modulator 1 2 Duty Cycle Write only This 8 bit port is the duty cycle register of the pulse width modulator A write sets the duty cycle to DATA 256 The data will be 0 to 255 07 p6 D5 D4 D3 02 D1 DO LSB MSB Typical of all PWM registers BA 7 PWM Control and Digital Output Register Write Only Bit 0 0 disables PWM 1 0 1 enables PWM 1 0 Bit 1 0 disables PWM 1 1 1 enables PWM 1 1 Bit 2 0 disables PWM 1 2 1 enables PWM 1 2 Bit 3 0 use 8 MHz clock 1 use output of timer 1 for clock Bit 4 Digital Output 1 0 Bit 5 Digital Output 1 1 Bit 6 Digital Output 1 2 Bit 7 Reserved Write with a 0 D7 D6 05 Da 93 02 01 DO Rsvd P1 2 P1 1 P1 0 PWM PWM1 2 PWM1 1 PW
25. counters cascaded Not Used Not Installed Dom e ausa Dom jua APP mo APP en APP Not Used Not Installed P13 Selects one of four interrupt sources for interrupt generation OT2 Connects interrupt source jumpered on P14 to an AT P16 interrupt channel DM6816 only no jumper Sets the base address 300 hex 768 decimal P4 P5 P7 P10 P11 14 51 9000 m umm 0000 azcs4 5 mmm ki 9 ninm 9 ma L m N m inii niii 4 umm y C1 pm u nm 6559 Boo Fig 1 1 Module Layout Showing Factory Configured Settings P4 P16 Interrupt Channel Select Factory Setting Jumper installed on G IRQ Disabled These header connectors shown in Figure 1 2 lets you connect any one of four jumper selectable P14 interrupt sources to an interrupt channel IRQ2 through IRQ15 XT channels 2 through 7 are jumpered on P4 and AT channels 10 through 15 are jumpered on P16 DM6816 only In AT computers channels 2 and 9 are the same channel To activate a channel you must install a jumper vertically across the desired IRQ channel s pins Only one channel on either P4 or P16 should be jumpered at any time Figure 1 2a shows the factory settings This module supports an interrupt sharing mode where the pins labeled connect a 1 kilohm pull down
26. ease include your company s name and address your name your telephone number and a brief description of the problem You can also contact us through our E mail address techsupport rtd com 1 MODULE SETTINGS The DM6816 DM5816 has jumper and switch settings you can change if necessary for your application The module is factory configured as listed in the table and shown on the layout diagram in the beginning of this chapter Should you need to change these settings use these easy to follow instructions before you stack the module with your computer system Factory Configured Switch and Jumper Settings Table 1 1 lists the factory settings of the user configurable jumpers and switch on the DM6816 DM58 16 module Figure 1 1 shows the module 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 Switch Factory Settings Jumper Function Controlled Jumpers Installed Connects a P14 jumper selectable interrupt source to an interrupt channel pulls tri state buffers to ground Jumper installed on G ground for G for multiple interrupt applications buffer interrupt channels disabled CLKO OSC CLK1 OTO Sets the clock and gate sources for the 8254 CLK2 OT1 GT2 EG2 timer counter timer
27. 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 doing before it was interrupted Other common devices that use interrupts are modems disk drives and mice Your DM6816 DM5816 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
28. f the port OR it with 168 168 23 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 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
29. fice for more information about these accessories and for help in choosing the best items to support your module s application Hardware Accessories Hardware accessories for the DM6816 DM5816 include the DOP series optoisolated digital input boards the DMR series mechanical relay output boards the TB50 terminal board and XB50 prototype terminal board for easy signal access and prototype development the DM14 extender board for testing your module in a conventional desktop computer and XT50 twisted pair wire flat ribbon cable assembly for external interfacing Using This Manual This manual is intended to help you install your new module and get it running quickly while also providing enough detail about the module 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 module provide enough information to properly use all of the module s features If you have any problems installing or using this dataModule 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 pl
30. for standard single wire cables pin 1 is the red wire 7 Make sure all connections are secure External I O Connections Figure 2 1 shows I O connector pinouts for P2 P3 and P6 Refer to these diagrams as you make your I O connections 2 3 N C EXT INT 1 N C EXT INT 1 EXT CLK 0 GATE 0 DIG OUT 2 2 DIGITAL GND N C DIGITAL GND DIG OUT 2 1 DIGITAL GND N C DIGITAL GND OUTO DIGITAL GND DIG OUT 2 0 DIGITAL GND N C DIGITAL GND EXT CLK 1 GATE 1 N C DIGITAL GND N C DIGITAL GND OUT 1 DIGITAL GND PWM 2 2 DIGITAL GND N C DIGITAL GND EXT CLK 2 GATE 2 PWM 2 1 DIGITAL GND N C DIGITAL GND PWM 2 0 DIGITAL GND N C DIGITAL GND SITE DIGITAL GND N C DIGITAL GND N C DIGITAL GND DIG OUT 1 2 DIGITAL GND N C DIGITAL GND 6 DIG OUT 1 1 61 62 DIGITAL GND N c DIGITAL GND 12 pin connector DIG OUT 1 0 DIGITAL GND N C DIGITAL GND N C DIGITAL GND N C DIGITAL GND PWM 1 2 DIGITAL GND N C DIGITAL GND PWM 1 1 DIGITAL GND N C DIGITAL GND PWM 1 0 61 62 DIGITAL GND N C 62 DIGITAL GND N C DIGITAL GND N C DIGITAL GND DIG OUT 0 2 DIGITAL GND N C DIGITAL GND DIG OUT 0 1 DIGITAL GND N C DIGITAL GND DIG OUT 0 0 DIGITAL GND N C DIGITAL GND N C DIGITAL GND N C DIGITAL GND PWM 0 2 DIGITAL GND N C DIGITAL GND PWM 0 1 DIGITAL GND N C DIGITAL GND PWM 0 0 DIGITAL GND N C DIGITAL GND 5 VOLTS DIGITAL GND 5 VOLTS DIGITAL GND P2 50 I O connector 50 pin I O connector Fig 2 1 P2 P3 and P6 I O Connector Pin Assignmen
31. g multiple modules sharing the same interrupt only one module should have the G jumper installed The rest should be disconnected Whenever you operate a single module the G jumper should be installed Whenever you operate the module with interrupt sharing disabled the G jumper should be removed PA P16 Oul 10 11 12 14 15 Fig 1 2 Interrupt Channel Select Jumpers P4 and P16 PROGRAMMABLE INVERT P14 P14 IRQ STATUS INTERRUPT BA 17 BIT 3 SOURCE INTERRUPT REGISTER INTERRUPT Fig 1 3 Pulling Down the Interrupt Request Lines 5 8254 Clock and Gate Source Select Factory Settings See Figure 1 4 This header connector shown in Figure 1 4 lets you select the clock sources for the three 8254 16 bit timer counters Figure 1 5 shows a block diagram of the timer counter circuitry to help you in making these connections The clock source for Counter 0 is selected by placing a jumper on one of the two leftmost pairs of pins on the header OSC or ECO OSC is the on board 8 MHz clock and ECO is an external clock source which can be con nected through I O connector P6 pin 1 Counter 1 has three clock sources which cascades it to Counter 0 OSC which is the on board 8 MHz clock and EC1 which is an external clock source connected through I O connector P6 pin 5 Counter 2 has three clock sources OT1 which cascades it to Counter 1 OSC which is the on board 8 MHz clock and EC2 which is an ex
32. 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 of the DM6816 DM58 16 and forgetting to issue the EOI command to the 8259 interrupt controller before exiting the ISR 7 7 7 8 APPENDIX DM6816 DM5816 SPECIFICATIONS A 2 DM6816 DM5 816 Characteristics Typical 25 Interface Switch selectable base address I O mapped Jumper selectable interrupts Pulse Width Modulators 95 4
33. hich 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 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 point emulators are not reentrant Of course 7 5 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 ssue the EOI command to the 8
34. lectable Interrupts The DM5816 circuitry has four jumper selectable interrupt sources which can be set by installing a jumper across the desired pair of pins at P14 To use these interrupts an interrupt source must be jumpered on P14 an interrupt channel must be jumpered on P4 and the IRQ enable must be set high BA 16 bit 0 BA 16 bit 1 sets the polarity of the interrupt Selecting the Interrupt Channel The IRQ channel is selected by installing a jumper on header connector P4 or P16 across the desired pair of pins as described in Chapter 1 A jumper is also installed across the pins if you are using the interrupt sharing feature Interrupt Sharing This module is capable of sharing interrupts with multiple modules This circuit is described in chapter 1 If you are not planning on using shared interrupts or you are not sure that your CPU can support shared interrupts you should disable this sharing circuit by setting bit 2 at BA 16 toa 1 By doing this the board works in normal interrupt mode and is compatible with all CPUs 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
35. mer 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 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 value Counting begins as soon as the count is loaded BA 15 8254 Timer Counter Control Word Write Only m BCD Binary 0 binary 1 BCD Counter Select 00 Counter 0 01 Counter 1 Counter Mode Select 000 Mode event count 10 Counter2 Read Load 001 Mode 1 programmable 1 shot 11 read back setting 00 latching operation 010 Mode 2 rate generator 01 read load LSB only 011 Mode 3 square wave rate generator 10 read load MSB only 100 Mode 4 software triggered strobe 11 read load LSB then MSB 101 Mode 5 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 P14 jumper selectable IRQ status flag at BA 17 bit 3 IRQ Enable Register P14 IRQ Enable IRQ Sharing 1 disable IRQ
36. n be selected using DIP switch S1 located on the edge of the module as described in Chapter 1 Module Settings This switch can be accessed without removing the module from the stack The following sections describe the register contents of each address used in the I O map Table 4 1 DM6816 DM5816 I O Map Register Read Function Write Function Offset from Base I O Address Description BA PWM 1 Data 8 bit PWM 1 duty cycle value BA 0 256 PWM 2 Data 8 bit PWM 2 duty cycle value 1 256 8 PWM 3 duty cycle value BA 2 X 256 PWM 3 Data PWM 1 2 amp 3 Bit 0 PWM 1 on off BA 3 Bit PWM 2 on off Bit 2 PWM on off control word Bit 3 Reserved Bit 4 7 Digital outputs N A N A PWM 4 Data N A 8 bit PWM 4 duty cycle value BA 4 X 256 PWM 5 Data N A 8 bit PWM 5 duty cycle value BA 5 256 PWM 6 Data 8 bit PWM 6 duty cycle value BA 6 X 256 PWM 4 5 amp 6 Bit 0 PWM 4 on off 7 control word Bit 1 PWM 5 on off Bit 2 PWM 6 on off Bit 3 Reserved Bit 4 7 Digital outputs 8 bit PWM 7 duty cycle value BA 8 X1256 8 bit PWM 8 duty cycle value BA 9 X 256 8 bit PWM 9 duty cycle value BA 10 X 256 PWM7 8 amp 9 N A Bit 0 PWM 7 on off BA 11 control word Bit 1 PWM 8 on off Bit 2 PWM 9 on off Bit 3 Reserved Bit 4 7 Digital outputs 8254 TC Read value in Load count in Counter 0 BA 12 Counter 0 Counter 0 8254
37. nne 4 7 14 8254 Timer Counter 2 Read Write 2 1 1 22 1 0000000000000000000000000000005050 eene enne 4 7 15 8254 Timer Counter Control Word Write Only eese enne enne 4 7 16 Clear Enable Read Write 4 7 12 IRQ Stats Read On 4 8 18 Reserved asses eR te REDE d re IS REIN 4 8 BA 19 Reserved an eo ete e itte e aed Ae om anna e ette nhe hac eie imet cran 4 8 Programming the DM6816 DMS8106 eset ette ertt ne eer etie 4 9 Clearing and Setting DIE ROI E RUN e EE RR PU or e er 4 9 CHAPTERS DIGITAL IO aaa seo 5 1 CHAPTER 6 TIMER COUNTERS 6 1 CHAPTER 7 INTERRUPTS 7 1 P14 Jumper Selectable Ru a a a Sa na R 7 3 Selecting the Interrupt Channel edet e is 7 3 Interrupt unte e eene ee Ip OC bee DE RPG I petu 7 3 Basic Programming For Interrupt Handling esee enne nennen enter 7 4 What Is udin 7 4 InteiruptReanES
38. ock 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 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 7 INTERRUPTS This chapter explains P14 jumper selectable interrupts and basic interrupt programming techniques 7 1 7 2 The DM6816 DM58 16 has one interrupt circuit which can generate interrupts on any IRQ channel 2 through 15 depending on the setting of the jumper on P4 or P16 P14 Jumper Se
39. product and is not transferable During the one year warranty period RTD Embedded Technologies 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 RTD Embedded Technologies All replaced parts and products become the property of RTD Embedded Technologies 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 DAMAGED 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 RTD Embedded Technologies acts of God or other contingencies beyond the control of RTD Embedded Technologies OR AS A RESULT OF SERVICE OR MODIFICATION BY ANYONE OTHER THAN RTD Embedded Technologies EXCEPT AS EXPRESSLY SET FORTH ABOVE NO OTHER WAR RANTIES ARE EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND RTD Embedded Technologies 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 DE FECTS AS WARRANTED ABOVE THE PURCHASER S SOLE REMEDY
40. resistor to the output of a high impedance tri state driver which carries the interrupt request signal This pull down resistor drives the interrupt request line low whenever interrupts are not active Whenever an interrupt request is made the tri state buffer is enabled forcing the output high and generating an interrupt There are four IRQ circuits one for the P14 jumper selectable interrupts and one each for the incremental encoder channels Their outputs are tied together through an OR gate allowing all interrupt sources to share the same IRQ channel To determine which circuit has generated an interrupt on the selected IRQ channel read the status byte I O address location BA 17 and check the status of bits 0 through 3 as described in Chapter 4 After the interrupt has been serviced you must return the IRQ line low disabling the tri state buffer and pulling the output low again This is done by clearing the IRQ for the source which generated the interrupt You also can have two or more modules that share the same IRQ channel You can tell which module issued the interrupt request by monitoring each module s IRQ status bit s If you are not planning on sharing interrupts or if you are not sure that your CPU supports interrupt sharing it is best to disable this feature and use the interrupts in the normal mode This will insure compatibility with all CPUs See chapter 4 for details on disabling the interrupt sharing circuit NOTE When usin
41. ternal clock source connected through I O connector P6 pin 9 The gate of Counter 2 can be connected to the output of Counter 1 OT1 or to an external gate source EG2 connected through I O connector P6 pin 10 When no external gate source is connected this line is tied high P5 9250 093 010 250 193 LLO 9250 393 LLO CLK2 GT2 Fig 1 4 8254 Clock and Gate Sources Jumpers P5 PIN 10 EXT GATE 2 GATE O OUT PIN 11 b T C OUT 2 ON BOARD CONNECTOR 6 N XTAL 8 MHz TIMER PIN 1 EXT CLK 0 COUNTER CLK A 9V PIN2 EXT GATE 0 O ot PIN 3 L T C OUT 0 PIN 5 EXT CLK 1 COUNTER CLK O 1 5 V me PIN 6 EXT GATE 1 PIN 7 4 T C OUT 1 OUT PIN 9 EXT CLK 2 COUNTER CLK 2 5 V Fig 1 5 8254 Circuit Diagram P13 Not Used This header connector is not used on the DM6816 DM5816 and should have no jumpers installed P14 Interrupt Source Select Factory Setting OT2 This header connector shown in Figure 1 6 lets you select one of four interrupt sources for interrupt genera tion The four sources are external interrupt 1 P2 2 EI2 external interrupt 2 P3 2 OT1 the output of timer counter 1 and OT2 the output of timer counter 2 To connect an interrupt source place the jumper across the desired set of pins P14
42. that your module is ready to use you will want to try it out An easy to use menu driven diagnostics program 5816DIAG is included with your example software to help you verify your module s operation You can also use this program to make sure that your current base address setting does not contend with another device 2 5 3 HARDWARE DESCRIPTION This chapter describes the features of DM6816 DM58 16 hardware The major circuits are the incremental encoders and the timer counters 3 1 3 2 The DM6816 DM5816 has two major circuits the pulse width modulators and the timer counters Figure 3 1 shows the block diagram of the module This chapter describes the hardware which makes up the major circuits PC 104 Bus 3 Three 8 Et PWM 3 DigitD Outputs CRntrRl Ind Three 8 Ht PWM Interrupts 3 DigitD Outputs Three 8 Ht PWM 3 DigitD Outputs Fig 3 1 DM6816 DM5816 Block Diagram Pulse Width Modulators The DM6816 DM5816 has three pulse width modulator circuits Each circuit has one 8 bit up down counter and three 8 bit compare registers to generate the PWM output Twelve digital output lines are available for control functions see I O connector pinout diagrams in Appendix B 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 t
43. tly Happens When an Interrupt Occurs 7 4 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 DM6816 DM5816 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 processor The current code segment CS instruction pointer 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
44. ts Connecting the Digital I O The DM6816 DM5816 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 connector 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 RTD Connecting the Timer Counter I O External connections to the timer counters on the DM6816 DM5816 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 DM6816 DM5816 can receive externally generated interrupt signals EXT INTI through I O connector P2 pin 2 and EXT INT2 through I O connector P3 pin 2 and route them to an IRQ channel through on board header connectors P14 and P4 Interrupt generation is enabled through software When interrupts are enabled a rising or falling edge on the EXT INT line will cause the selected IRQ line to go high depending on the setting of BA 16 bit 1 and the IRQ status bit will change from to 1 The pulse applied to the EXT INT pin should have a duration of at least 100 nanoseconds 2 4 Running the 5816DIAG Diagnostics Program Now
45. ugh connector lets you stack another module on top of your DM6816 DM58 16 To install the module follow the procedures described in the computer manual and the steps below 1 Turn OFF the power to your system 2 Touch a metal rack to discharge any static buildup and then remove the module from its antistatic bag 3 Select the appropriate standoffs for your application to secure the module when you install it in your system two sizes are included with the module 4 Holding the module by its edges orient it so that the 1 bus connector s pin 1 lines up with pin 1 of the expansion connector onto which you are installing the module 5 After carefully positioning the module so that the pins are lined up and resting on the expansion connector gently and evenly press down on the module until it is secured on the connector NOTE Do not force the module onto the connector If the module does not readily press into place remove it and try again Wiggling the module or exerting too much pressure can result in damage to the DM6816 DM5816 or to the mating module 6 After the module is installed connect the cables as needed to I O connector P2 P3 and P6 on the module When making these connection note that there is no keying to guide you in orientation You must make sure that pin 1 of the cable is connected to pin of the connector pin 1 is marked on the module with a small square For twisted pair cables pin 1 is the dark brown wire
46. ware Ac essoties yu an u diia did a EORR ce EN ea Sodus ie na abi edu ed e Rein i 3 Using This Manual enn ee heben eer EE EUER GU ted eden i 4 When You Need Re i 4 CHAPTER 1 MODULE SETTINGS 1 1 Factory Configured Switch and Jumper Settings tenete enne enne 1 3 P4 P16 Interrupt Channel Select Factory Setting Jumper installed on G IRQ Disabled 1 4 P5 8254 Clock and Gate Source Select Factory Settings See Figure 1 4 sess 1 6 P13 Not Used vos cases 55 ett e er nein EE e IER IR st eroe ette edes d resins 1 7 P14 Interrupt Source Select Factory Setting 2 2222000044040001000 1 7 51 Base Address Factory Setting 300 hex 768 decimal essent 1 8 CHAPTER 2 MODULE INSTALLATION 2 1 Module Installation nes eee eee e ee de ee u a eee 2 3 External TO Connections eieren e RE 2 3 Connecting the Digital MO n een BER EIER o tatem 2 4 Cornnectmg the Timer Counter VO nennen odes Rep eerie eee pete eee pre 2 4 Connecting the External Interrupt 2 4 Running the 5816DIAG Diagnostics Program 2 4 CHAPTER 3 HARDWARE DESCRIPTION
47. wo 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 de scribed in Chapter 4 The command word also lets you set up the mode of operation The six programmable modes are Mode 0 Event Counter Interrupt on Terminal Count Mode 1 Hardware Retriggerable One Shot Mode 2 Rate Generator Mode 3 Square Wave Mode Mode 4 Software Triggered Strobe Mode 5 Hardware Triggered Strobe Retriggerable These modes are detailed in the 8254 Data Sheet reprinted from Intel in Appendix C 3 3 TIMER COUNTER TIMER COUNTER 1 TIMER COUNTER CLK GATE OUT CLK GATE OUT CLK GATE OUT ON BOARD 1 0 CONNECTOR P6 XTAL 8 MHz PIN 1 EXT CLK 0 5 V PIN 2 EXT GATE 0 PIN 3 AC OUT 0 PIN 5 EXT CLK 1 O 45V PIN 6 4 EXT GATE 1 PIN 7 gt T C OUT 1 PIN 9 EXT CLK 2 5 V PIN 10 b EXT GATE 2 PIN 11 b OUT 2 Fig 3 2 Timer Counter Circuit Block Diagram 3 4 4 VO MAPPING This chapter provides a complete description of the I O map for the DM6816 DM58 16 general programming information and how to set and clear bits in a port 4 1 4 2 Defining the I O The I O map for the DM6816 DM58106 is shown in Table 4 1 below As shown the module occupies 20 consecutive I O port locations The base address designated as BA ca
Download Pdf Manuals
Related Search
Related Contents
Ragalta RCF-600 fan PDF Belkin RK4000 User's Manual SETZER - Encyclopedie des Arts Martiaux 取扱説明書 (6.39 MB/PDF) プレリリース資料 - LED照明「Luci」 User Manual of Omnik Internal Data Collector MAKO User Manual - BenchMark Wireline Copyright © All rights reserved.
Failed to retrieve file