Hello, here is how you can turn on an LED using PWM.


Include Library

#include "pwm.h"
#include "gpiodriver.h"


Define Macros

#define LED_RED    26  /* PWM 0 */
#define LED_BLUE   27  /* PWM 1 */
#define LED_GREEN  28  /* PWM 2 */

#define GPIO_PORT(x)  (x/16)
#define GPIO_PIN(x)   (x%16)

#define ENABLE_LED_RED    PWM0_OUTPUT_ENABLE_P26
#define ENABLE_LED_BLUE   PWM1_OUTPUT_ENABLE_P27
#define ENABLE_LED_GREEN  PWM2_OUTPUT_ENABLE_P28

#define DISABLE_LED_GPIO     GPIO_INPUT_ENABLE | GPIO_PULL_DOWN
#define LED_RED_CHANNEL      (PWM0)
#define LED_BLUE_CHANNEL     (PWM1)
#define LED_GREEN_CHANNEL    (PWM2)

     Note: depending on which chip you are using, the GPIO Pins might change


Enable LED

     // enable
     gpio_configurePin(GPIO_PORT(LED_RED), GPIO_PIN(LED_RED), ENABLE_LED_RED, 0); 
     pwm_start( LED_GREEN_CHANNEL, LHL_CLK, 0x000 , 0);

     // pwm_start( id, clk, toggleCount, initCount);
     // Output Voltage  | Toggle Count (Found these values by trial & error)
     // --------------------------------------------
     // ~ (4/4) V_MAX  |    0x000
     // ~ (3/4) V_MAX  |    0x100
     // ~ (2/4) V_MAX  |    0x210
     // ~ (1/4) V_MAX  |    0x315

 

     Note: depending on the hardware configuration, the V_MAX may change


Disable LED

     // disable
     gpio_configurePin(GPIO_PORT(LED_RED), GPIO_PIN(LED_RED), DISABLE_LED_GPIO, 0);
     pwm_disableChannel( 1 << LED_RED_CHANNEL );

 

 

References

BCM2073XS GPIO Basics

Hardware User Guide (SDK 2.x and TAG3 Board)

How to turn on LED

Different Frequencies for PWM

 

James