EmbDev.net

Forum: ARM programming with GCC/GNU tools No Signal on PWM5


von Stephan W. (weiss)


Rate this post
useful
not useful
Dear all

I am using an LPC2138 uController and I'm trying to set up 4 PWM signals
while still having the ports for serial communication (TXD0, RXD0) Hence
the choice
fell on PWM2, PWM4, PWM5, PWM6.

Problem:
PWM2,4,6 worked fine first, only PWM5 did not show any signal. Later
(one fine day) PWM4 went out as well. PWM2 and 6 work perfectly as they
should.

Debugging:
1) I measured the outputs directly at the uController's pins, so bad
connections on the board should not be the problem (except pin is pulled
to ground...I'll check that)
2) I configured PWM4 and 5 as GPIO and put a 1 to them -> I measured 0V!
3) I configured PWM6 as GPIO and put a 1 to it -> I measured 3.3V
(works)

Program code:

**********************snip********************
  /* init PLL, MAM etc. */
  systemInit();

  uart0Init(UART_BAUD(BAUD), UART_8N1, UART_FIFO_8);

  /* Enable pin 0.0 TXD0; pin 0.1 RXD0; pin 0.7 as PWM2; pin 0.8 as
PWM4; pin 0.9 PWM6*/
  PINSEL0 = 0x000A8005;

  /*Enable pin 0.21 as PWM5*/
  PINSEL1 = 0x00000400;

        /*Tests with gpio/*
        //PINSEL0 = 0x88005;  //set pwm4 as gpio
        //PINSEL0 = 0x28005;  //set pwm6 as gpio
        //PINSEL1 = 0x0; //set pwm5 as gpio
        //IODIR0 = 0x200000;  //set direction as output of according pin
        //IOSET0 = 0x200000;  // set level to 1 of according pin

  /* Load prescaler on x ticks
   * Here: 3B bei 4*14,7456MHz, Aufloesung auf ca 1us */
  PWMPR  = 0x0000003B;

  /* PWM channel 2,4,5,6 single edge control, output enable */
  PWMPCR = 0x00007400;

  /* On match with timer reset the counter */
  PWMMCR = 0x00000002;

  /* Set cycle rate to x ticks,
  /*here 3ms at 4*14.7...MHz and resolution of 1us*/
  PWMMR0 = 0x00000BB8;

  /* Set of PWM2 to x ticks,
  PWMMR5 = CENTER[0];
  PWMMR2 = CENTER[1];
  PWMMR4 = CENTER[2];
  PWMMR6 = CENTER[3];

  /* Enable shadow latch for match 0-1 */
  PWMLER = 0x00000075;

  /* Enable counter and PWM, release counter from reset */
  PWMTCR = 0x0000000B;
  PWMTCR = 0x00000009;

     while(1)              //from here on main while loop

***********************snip****************************************

Possible causes:
- uController pins of PWM4 and PWM5 broken but works correctly with the
rest??
- Register values wrong??

Many thanks in advance!!

Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
No account? Register here.