We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello all, I have a problem using ISD51 to debug my board with C515C processor. In order to test the serial port and basic ISD51 functionality, I used a small piece of code below (Test.c). First under the Keil PK51 software simulator, it works fine. I could use the Hyperterminal to receive or to send any character to my board. Then I switched from simulator to Keil In-System ISD51 Debug and it failed. I don't know why as I tried everything in Keil's online documentation. One thing I need to point out is that I didn't burn the code into flash and instead used a flash simulator Flex III. Can someone giveme a hand with this issue? Thanks in advance, Frank /*------------------------------------------------------------------------------ TEST.C: ISD51 Demo for Infineon C868 Copyright 2003 Keil Software, Inc. ------------------------------------------------------------------------------*/ #include <intrins.h> #include <stdio.h> #include "ISD51.h" #include "reg515a.h" /* parameters to initialize serial communication */ #define B_38400 0x05 /* 38400 baud */ #define B_19200 0x04 /* 19200 baud */ #define B_9600 0x03 /* 9600 baud */ #define B_4800 0x02 /* 4800 baud */ #define B_2400 0x01 /* 2400 baud */ #define B_1200 0x00 /* 1200 baud */ void Delay(unsigned int i) { unsigned int j; while(i--) { // delay WDT = 1; // reset SWDT = 1; j = 0x200; while (j--); } } void Project_Init(serBaud) { switch ( serBaud ) { /* oscillator frequency = 10 Mhz */ case B_38400: SRELH = 0x03; /* Reloadwert für 38400 Baud */ SRELL = 0xF0; PCON |= 0x80; /* SMOD = 1 */ break; case B_19200: SRELH = 0x03; /* Reloadwert für 19200 Baud */ SRELL = 0xDF; PCON |= 0x80; /* SMOD = 1 */ break; case B_9600: SRELH = 0x03; /* Reloadwert für 9600 Baud */ SRELL = 0xBF; PCON |= 0x80; /* SMOD = 1 */ break; case B_4800: SRELH = 0x03; /* Reloadwert für 4800 Baud */ SRELL = 0x7E; PCON |= 0x80; /* SMOD = 1 */ break; case B_2400: SRELH = 0x02; /* Reloadwert für 2400 Baud */ SRELL = 0xFC; PCON |= 0x80; /* SMOD = 1 */ break; case B_1200: SRELH = 0x01; /* Reloadwert für 1200 Baud */ SRELL = 0xF7; PCON |= 0x80; /* SMOD = 1 */ break; default: return; break; } ADCON0 |= 0x80; /* enable baud rate generator */ SCON = 0x50; /* mode 1: 8-bit UART, enable receiver */ // ES = 1; /* enable serial interrupt IE.ES */ } #if 1 // uncomment this function to verify serial communication /* * Test Function: verify serial communication with HyperTerminal */ void TestSerial (void) { char c = 'A'; TI = 1; while (1) { Delay(200); if (RI) { c = SBUF; RI = 0; } while (!TI); TI = 0; SBUF = c; } } #endif void main (void) { unsigned int i; Project_Init(B_9600); // Initialize Chip and Serial Interface #ifndef ISD51 // init ISD51 only when the uVision2 Debugger tries to connect TestSerial(); #endif #if 0 // init ISD51 and start user program until the uVision2 Debugger connects ISDinit (); // initialize uVision2 Debugger and continue program run #endif #if 0 // init ISD51 and wait until the uVision2 Debugger connects ISDwait (); // wait for connection to uVision2 Debugger #endif while (1) { #ifdef ISD51 // init ISD51 only when the uVision2 Debugger tries to connect ISDcheck(); // initialize uVision2 Debugger and continue program run #endif i++; } }