This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

PWM with menu control - hangs up

Hi,

Using: Keil uvision3 with Infineon XC866 Easy kit development board.

I am trying to write a little menu function to controller the PWM generation via key stoke selections. The first few keystrokes are implemented and I can see the PWM signal changing. Then the micro hangs up.

Not sure what is wrong !?

Here is the code:

#include "MAIN.H"

void message( char *pucMessage );

void MAIN_vInit(void)
{
  ///  Initialization of module 'UART (Serial Interface)'
  UART_vInit();

  ///  Initialization of module 'Capture / Compare Unit 6 (CCU6)'
  CC6_vInit();

  //   Interrupt Priority

  IP            =  0x00;         // load Interrupt Priority Register
  IPH           =  0x00;         // load Interrupt Priority High Register
  IP1           =  0x00;         // load Interrupt Priority 1 Register
  IPH1          =  0x00;         // load Interrupt Priority 1 High Register

  //   globally enable interrupts
  EA            =  1;

} //  End of function MAIN_vInit


void main(void)
{
  char key;

  MAIN_vInit();

	message("\n\n\xd Welcome to MENU : PWM Control");
	message("\n\xd Please select on of the following:");
	message("\n\xd 1 -- 1.00 ratio");
	message("\n\xd 2 -- 0.75 ratio");
	message("\n\xd 3 -- 0.50 ratio");
	message("\n\xd 4 -- 0.25 ratio");
	message("\n\xd 5 -- 0.00 ratio");
	message("\n\xd Thank you for using XC866 \n\n");

  while(1)
  {

	while(!RI){};	 // Wait for keystroke

	key = SBUF;

	if(key == '1')
	{
		message("\xd 1 -- 1.00 ratio");
        CCU6_PAGE = 0x00; // switch to page 0
		CCU6_CC60SRL |= 0x00;
		CCU6_CC60SRH |= 0x00;
		CCU6_TCTR4L |= 0x40; // enable shadow transfer
	}

	if(key == '2')
	{
		message("\xd 2 -- 0.75 ratio");
 		CCU6_PAGE = 0x00; // switch to page 0
		CCU6_CC60SRL |= 0x00;
		CCU6_CC60SRH |= 0x40;
		CCU6_TCTR4L |= 0x40; // enable shadow transfer
	}

	if(key == '3')
	{
		message("\xd 3 -- 0.50 ratio");
		CCU6_PAGE = 0x00; // switch to page 0
		CCU6_CC60SRL |= 0x00;
		CCU6_CC60SRH |= 0x80;
		CCU6_TCTR4L |= 0x40; // enable shadow transfer
	}

	if(key == '4')
	{
		message("\xd 4 -- 0.25 ratio");
		CCU6_PAGE = 0x00; // switch to page 0
		CCU6_CC60SRL |= 0x00;
		CCU6_CC60SRH |= 0xC0;
		CCU6_TCTR4L |= 0x40; // enable shadow transfer
	}

	if(key == '5')
	{
		message("\xd 5 -- 0.00 ratio");
 		CCU6_PAGE = 0x00; // switch to page 0
		CCU6_CC60SRL |= 0xFF;
		CCU6_CC60SRH |= 0xFF;
		CCU6_TCTR4L |= 0x40; // enable shadow transfer
	}

	RI = 0;	 // Reset RI

  }

} //  End of function main


void message( char *pucMessage )
{
 // while the character is not 0
 while (*pucMessage)
 {
  SBUF = *pucMessage++;
  while (TI == 0) {;}
  TI = 0;
 }
 return;
}

0