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;
}

Parents
  • Hi, I am using version 2.45.8.0 or 2.45h (both codes are mentioned under version) of the DCore51.dll file. Should I be using another ?

    Both the serial port and PWM stops working. The message in the case '1' loop for example is not written out over the serial link anymore and the pwm signal does not change when I push another keystroke.

    I do not know for sure which (serial input/output or the pwm) stops working first.

    Could it be that I need to insert a delay function for the pwm change to be affected and the serial write to be complete before hitting another keystroke. I would think the pwm change would be quite quick even in the center align mode.

Reply
  • Hi, I am using version 2.45.8.0 or 2.45h (both codes are mentioned under version) of the DCore51.dll file. Should I be using another ?

    Both the serial port and PWM stops working. The message in the case '1' loop for example is not written out over the serial link anymore and the pwm signal does not change when I push another keystroke.

    I do not know for sure which (serial input/output or the pwm) stops working first.

    Could it be that I need to insert a delay function for the pwm change to be affected and the serial write to be complete before hitting another keystroke. I would think the pwm change would be quite quick even in the center align mode.

Children