PICMASTER Support of Microsoft Windows DDE AN584 PICMASTER™ Support of Microsoft® Windows™ DDE 5. The PICMASTER system supports Windows Dynamic Data Exchange (DDE). This feature allows the contents of the trace buffer to be transferred to other windows applications such as Microsoft Excel™. This feature is invaluable to control systems designers who would like to plot real-time data to debug and fine tune an application. This application note will show how to set this up and graph system data. Note: PICMASTER must be running and the trace buffer open with data displaying in order to use DDE for other Windows applications (such as Microsoft Excel as described in the next section). THE TRACE BUFFER The PICMASTER contains a 8K x 40 bit trace buffer. The fields within this buffer are broken up into three categories: (1) Current Address of instruction SETTING UP EXCEL After starting Excel with a blank spread sheet, select 100 rows in the first column by pressing the left mouse button and holding it down to drag across all cells. Next Type the following string in the box: 16-Bits (ADDRESS) (2) Data/Opcode Field 16-Bits (DATA) (3) External Logic Analyzer inputs 8-Bits (EXT) ————— =PICMASTR|’c:\path\test.hex’!’data 0 99’ and hit CNTRL+SHIFT+ENTER The format for this command is as follows: 40-Bits Any instruction can be optionally traced or not traced; the trace for each instruction is enabled by the “T” field on the far left column of the program memory dump window. To set up the trace buffer, do the following: 1. You will see the trace buffer fill with instructions and data if those instructions were executed and trace enabled. If you do not see any instructions in the trace buffer, check the Trace Settings in (1) and look for loops or deadlock situations that would prevent your program from executing these instructions. =PICMASTR|’<hex_file>‘!’<string> <start_address> <end_address>‘ Select the SETUP->TRACE SETTINGS window option to set up a range of addresses to be traced. These ranges are selecting specific memory addresses that will be traced if these instructions are executed. Individual instructions can also be trace enabled / disabled with the SHIFT+RIGHT_MOUSE button • <hex_file> represents the full path and filename of the object code file that you have downloaded to program memory. This string must match what is displayed in the PICMASTER window handle at the top of the PICMASTER window. • <string> defines the group of values that you want to look at in the trace buffer. The following are the three groups of trace information: 2. Open the trace window by selecting the WATCH>TRACE MEMORY menu selection. • ADDRESS for opcode address (16-bits Real-time data) 3. Click the RUN button after opening the Run box with the RUN->RUN BOX menu selection. • DATA for the opcode coding itself (16-bits Real-time data) 4. The processor will now run. At a later time you may hit the HALT button from the Run Box. • EXT for the external logic probes (8-bits Real-time data) EXAMPLE 1: TRACE BUFFER DATA Trace Buffer Address 0 1 2 3 : : : : Program Memory Address Instruction Opcode (12,14,16 bit) 711 712 713 714 425 525 305 36F Address Label BIT3 © 1994 Microchip Technology Inc. Instruction bcf bsf rrf rlf porta,0x1 porta,0x1 porta,W 0xF Comments ;Toggle Clock ;Clock in data DS00584A-page 1 5-231 5 PICMASTER Support of Microsoft Windows DDE • RAM for the current state of any file registers (8-bits, Not Real-time) • PROG The current state of program memory (16bits, Not Real-time) • <start_address> specifies starting address location in the trace buffer to be transferred • <end_address> specifies the ending address location in the trace buffer. Note: MOVING LIVE DATA INTO THE TRACE BUFFER Many applications would like to show trends in register values over time as the application runs real-time. For example, if the microcontroller software is using a file register SPEED to show the current shaft speed of a motor that the controller was controlling, the designer may want to capture the motor speed VS time when the controller is running in real-time. This can be accomplished with three different methods, two of which work with the PIC16CXX and PIC16C5X family, and all three work with the PIC17C42. Generally, the <end_address> must be greater than the <start_address> and the difference equal to the number of cells selected in Excel. Hit SHIFT-CTL-ENTER and the data/opcode field values show up in the excel cells. You can now create hex values or strip off the literal encoding with formulas written for Excel. Method 1: Lookup Table (PIC16C5X, PIC16CXX, PIC17C42) At the end of your code, add a look-up table that returns the literal value that is passed to it. This value can then be traced in the trace buffer through the DATA field and the data value stripped from the opcode. The lookup table that is added would look like the following: . ; Here is your code that calculates SPEED . MOVF SPEED,W ; Place the current value of the SPEED register into W CALL TRACE_REG ; Call TRACE_REG so the opcode is stored in trace buffer . . ORG (600-3) TRACE_REG ; This address must have bit 9 as a zero in 16C5X ; and must always have the ADDWF PC on address XX00h BTFSC STATUS,Z ; Skip to Decrement if not zero RETLW 0 ; if zero, return zero DECF SPEED,W ; Compensate for table offset ADDWF PC ; Jump into lookup table and return same value as W-1 .T.. RETLW 1 ; Return 1 .T.. RETLW 2 ; Return 2 .T.. RETLW 3 ; Return 3 .T.. . .T.. . .T.. RETLW 0FEh ; Return FE .T.. RETLW 0FFh ; Return FF .T.. ; There are 250 RETURN instructions here ; RETLW 4 through RETLW 0FDh Note: Since the RETLW instruction takes two cycles and the next instruction is prefetched, the trace buffer will contain two sequential values for every value that is traced with this method. The user can strip this intervening value out with the spread sheet. DS00584A-page 2 © 1994 Microchip Technology Inc. 5-232 PICMASTER Support of Microsoft Windows DDE Method 2: Using the Logic Analyzer external inputs (PIC16C5X, PIC16CXX, PIC17C42). Connect the eight logic analyzer inputs TRC<7:0> to a currently unused digital output port of the PIC16/17. Set the port direction of this port to OUTPUT and when you want to look at a value, simply move the value to the port and set the trace bit on the second instruction following the move instruction. The following example shows this: . ; Code Initialization CLRW ; Place 0 into W register OPTION Port_B . ; Make all Port B pins outputs to feed variable state data to logic inputs ; Use MOVWF DDRB instruction in place of OPTION for 17C42 . . ; Place where Speed variable is modified and needs to be traced MOVF SPEED,W ; Place Speed value into W register MOVWF Port_B ; Place value into Port B . ; Trace second instruction after Port B move to capture current value . ; Execute normal instruction .T.. FIGURE 1: EXCEL SPREADSHEET EXAMPLE OF REAL-TIME PSEUDO-SINE WAVE GENERATOR 5 300 250 200 Series1 150 100 50 0 1 11 21 31 41 51 61 © 1994 Microchip Technology Inc. 71 81 91 DS00584A-page 3 5-233 PICMASTER Support of Microsoft Windows DDE Method 3: Using TBLWRT instruction to modify program memory (PIC17C42 only) ANALYSIS OF VARIOUS METHODS Method 1 requires an additional 259 words of code space at the end of memory but does not require any external port pin connections. Method 2 requires an 8-bit port connection to the external logic input pins but does not require any additional code space. Additionally, Method 2 does not have an intervening sequential address that occurs from the two cycle RETLW instruction used in Method 1 and Method 3. The PIC17C42 supports table lookup and writing features that are not supported on the PIC16CXX family. The emulator supports write operations to program memory using the TBLWRT instruction. To capture real-time RAM data, the user simply sets up the table pointers to an unused portion of program memory space and loads the current register value into the table latch. Next the user issues the TBLWRT instructiono load the data into the least significant byte of the word used for trace. A simple call to this location with the trace bit set will capture the data. The following example shows this: MOVLW TRACE_HIGH Method 3 does not require the additional code of Method 1 or the port connections of Method 2, but this is only supported on the PIC17C42. ; PlaceTRACE_LOCATION MSB into W MOVWF TBLPTRH ; Move TRACE_LOCATION MSB into Table pointer HIGH MOVLW TRACE_LOW ; Place TRACT_LOCATION LSB into W MOVWF TBLPTRL ; Move TRACE_LOCATION LSB into Table pointer LOW TLWT 1,0B6h TABLWT 0,0,SPEED CALL ; Place RETLW opcode MSB into Table Latch High ; Place SPEED value into Table Latch low and write to mem TRACE_LOCATION; Now Call to trace the value . . TRACE_LOCATION .T.. RETLW XX ; The data in XX with reflect current SPEED value CONCLUSION Although there is no straight forward method to do this, it is practical to trace real-time file register data with the PICMASTER trace buffer. Author: John Day, Field Applications Engineer, Northeast Region (North America) DS00584A-page 4 © 1994 Microchip Technology Inc. 5-234 Note the following details of the code protection feature on PICmicro® MCUs. • • • • • • The PICmicro family meets the specifications contained in the Microchip Data Sheet. Microchip believes that its family of PICmicro microcontrollers is one of the most secure products of its kind on the market today, when used in the intended manner and under normal conditions. There are dishonest and possibly illegal methods used to breach the code protection feature. All of these methods, to our knowledge, require using the PICmicro microcontroller in a manner outside the operating specifications contained in the data sheet. The person doing so may be engaged in theft of intellectual property. Microchip is willing to work with the customer who is concerned about the integrity of their code. Neither Microchip nor any other semiconductor manufacturer can guarantee the security of their code. Code protection does not mean that we are guaranteeing the product as “unbreakable”. Code protection is constantly evolving. We at Microchip are committed to continuously improving the code protection features of our product. If you have any further questions about this matter, please contact the local sales office nearest to you. Information contained in this publication regarding device applications and the like is intended through suggestion only and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. No representation or warranty is given and no liability is assumed by Microchip Technology Incorporated with respect to the accuracy or use of such information, or infringement of patents or other intellectual property rights arising from such use or otherwise. Use of Microchip’s products as critical components in life support systems is not authorized except with express written approval by Microchip. No licenses are conveyed, implicitly or otherwise, under any intellectual property rights. Trademarks The Microchip name and logo, the Microchip logo, FilterLab, KEELOQ, microID, MPLAB, PIC, PICmicro, PICMASTER, PICSTART, PRO MATE, SEEVAL and The Embedded Control Solutions Company are registered trademarks of Microchip Technology Incorporated in the U.S.A. and other countries. dsPIC, ECONOMONITOR, FanSense, FlexROM, fuzzyLAB, In-Circuit Serial Programming, ICSP, ICEPIC, microPort, Migratable Memory, MPASM, MPLIB, MPLINK, MPSIM, MXDEV, PICC, PICDEM, PICDEM.net, rfPIC, Select Mode and Total Endurance are trademarks of Microchip Technology Incorporated in the U.S.A. Serialized Quick Turn Programming (SQTP) is a service mark of Microchip Technology Incorporated in the U.S.A. All other trademarks mentioned herein are property of their respective companies. © 2002, Microchip Technology Incorporated, Printed in the U.S.A., All Rights Reserved. Printed on recycled paper. Microchip received QS-9000 quality system certification for its worldwide headquarters, design and wafer fabrication facilities in Chandler and Tempe, Arizona in July 1999. The Company’s quality system processes and procedures are QS-9000 compliant for its PICmicro® 8-bit MCUs, KEELOQ® code hopping devices, Serial EEPROMs and microperipheral products. In addition, Microchip’s quality system for the design and manufacture of development systems is ISO 9001 certified. 2002 Microchip Technology Inc. M WORLDWIDE SALES AND SERVICE AMERICAS ASIA/PACIFIC Japan Corporate Office Australia 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7200 Fax: 480-792-7277 Technical Support: 480-792-7627 Web Address: http://www.microchip.com Microchip Technology Australia Pty Ltd Suite 22, 41 Rawson Street Epping 2121, NSW Australia Tel: 61-2-9868-6733 Fax: 61-2-9868-6755 Microchip Technology Japan K.K. Benex S-1 6F 3-18-20, Shinyokohama Kohoku-Ku, Yokohama-shi Kanagawa, 222-0033, Japan Tel: 81-45-471- 6166 Fax: 81-45-471-6122 Rocky Mountain China - Beijing 2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 480-792-7966 Fax: 480-792-7456 Microchip Technology Consulting (Shanghai) Co., Ltd., Beijing Liaison Office Unit 915 Bei Hai Wan Tai Bldg. No. 6 Chaoyangmen Beidajie Beijing, 100027, No. China Tel: 86-10-85282100 Fax: 86-10-85282104 Atlanta 500 Sugar Mill Road, Suite 200B Atlanta, GA 30350 Tel: 770-640-0034 Fax: 770-640-0307 Boston 2 Lan Drive, Suite 120 Westford, MA 01886 Tel: 978-692-3848 Fax: 978-692-3821 Chicago 333 Pierce Road, Suite 180 Itasca, IL 60143 Tel: 630-285-0071 Fax: 630-285-0075 Dallas 4570 Westgrove Drive, Suite 160 Addison, TX 75001 Tel: 972-818-7423 Fax: 972-818-2924 Detroit Tri-Atria Office Building 32255 Northwestern Highway, Suite 190 Farmington Hills, MI 48334 Tel: 248-538-2250 Fax: 248-538-2260 Kokomo 2767 S. Albright Road Kokomo, Indiana 46902 Tel: 765-864-8360 Fax: 765-864-8387 Los Angeles 18201 Von Karman, Suite 1090 Irvine, CA 92612 Tel: 949-263-1888 Fax: 949-263-1338 China - Chengdu Microchip Technology Consulting (Shanghai) Co., Ltd., Chengdu Liaison Office Rm. 2401, 24th Floor, Ming Xing Financial Tower No. 88 TIDU Street Chengdu 610016, China Tel: 86-28-6766200 Fax: 86-28-6766599 China - Fuzhou Microchip Technology Consulting (Shanghai) Co., Ltd., Fuzhou Liaison Office Unit 28F, World Trade Plaza No. 71 Wusi Road Fuzhou 350001, China Tel: 86-591-7503506 Fax: 86-591-7503521 China - Shanghai Microchip Technology Consulting (Shanghai) Co., Ltd. Room 701, Bldg. B Far East International Plaza No. 317 Xian Xia Road Shanghai, 200051 Tel: 86-21-6275-5700 Fax: 86-21-6275-5060 China - Shenzhen 150 Motor Parkway, Suite 202 Hauppauge, NY 11788 Tel: 631-273-5305 Fax: 631-273-5335 Microchip Technology Consulting (Shanghai) Co., Ltd., Shenzhen Liaison Office Rm. 1315, 13/F, Shenzhen Kerry Centre, Renminnan Lu Shenzhen 518001, China Tel: 86-755-2350361 Fax: 86-755-2366086 San Jose Hong Kong Microchip Technology Inc. 2107 North First Street, Suite 590 San Jose, CA 95131 Tel: 408-436-7950 Fax: 408-436-7955 Microchip Technology Hongkong Ltd. Unit 901-6, Tower 2, Metroplaza 223 Hing Fong Road Kwai Fong, N.T., Hong Kong Tel: 852-2401-1200 Fax: 852-2401-3431 New York Toronto 6285 Northam Drive, Suite 108 Mississauga, Ontario L4V 1X5, Canada Tel: 905-673-0699 Fax: 905-673-6509 India Microchip Technology Inc. India Liaison Office Divyasree Chambers 1 Floor, Wing A (A3/A4) No. 11, O’Shaugnessey Road Bangalore, 560 025, India Tel: 91-80-2290061 Fax: 91-80-2290062 Korea Microchip Technology Korea 168-1, Youngbo Bldg. 3 Floor Samsung-Dong, Kangnam-Ku Seoul, Korea 135-882 Tel: 82-2-554-7200 Fax: 82-2-558-5934 Singapore Microchip Technology Singapore Pte Ltd. 200 Middle Road #07-02 Prime Centre Singapore, 188980 Tel: 65-334-8870 Fax: 65-334-8850 Taiwan Microchip Technology Taiwan 11F-3, No. 207 Tung Hua North Road Taipei, 105, Taiwan Tel: 886-2-2717-7175 Fax: 886-2-2545-0139 EUROPE Denmark Microchip Technology Nordic ApS Regus Business Centre Lautrup hoj 1-3 Ballerup DK-2750 Denmark Tel: 45 4420 9895 Fax: 45 4420 9910 France Microchip Technology SARL Parc d’Activite du Moulin de Massy 43 Rue du Saule Trapu Batiment A - ler Etage 91300 Massy, France Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79 Germany Microchip Technology GmbH Gustav-Heinemann Ring 125 D-81739 Munich, Germany Tel: 49-89-627-144 0 Fax: 49-89-627-144-44 Italy Microchip Technology SRL Centro Direzionale Colleoni Palazzo Taurus 1 V. Le Colleoni 1 20041 Agrate Brianza Milan, Italy Tel: 39-039-65791-1 Fax: 39-039-6899883 United Kingdom Arizona Microchip Technology Ltd. 505 Eskdale Road Winnersh Triangle Wokingham Berkshire, England RG41 5TU Tel: 44 118 921 5869 Fax: 44-118 921-5820 01/18/02 2002 Microchip Technology Inc.