00001
00082 #include <avr32/io.h>
00083 #include "pwm.h"
00084 #include "gpio.h"
00085 #include "board.h"
00086
00087
00090
00091 #if BOARD == EVK1100
00092 # define EXAMPLE_PWM_PIN AVR32_PWM_3_PIN
00093 # define EXAMPLE_PWM_FUNCTION AVR32_PWM_3_FUNCTION
00094 # define EXAMPLE_PWM_CHANNEL_ID 3
00095 #elif BOARD == EVK1101
00096 # define EXAMPLE_PWM_PIN AVR32_PWM_0_0_PIN
00097 # define EXAMPLE_PWM_FUNCTION AVR32_PWM_0_0_FUNCTION
00098 # define EXAMPLE_PWM_CHANNEL_ID 0
00099 #elif BOARD == STK1000
00100 # define EXAMPLE_PWM_PIN AVR32_PWM_0_PIN
00101 # define EXAMPLE_PWM_FUNCTION AVR32_PWM_0_FUNCTION
00102 # define EXAMPLE_PWM_CHANNEL_ID 0
00103 #endif
00104
00105 #if !defined(EXAMPLE_PWM_PIN) || \
00106 !defined(EXAMPLE_PWM_FUNCTION) || \
00107 !defined(EXAMPLE_PWM_CHANNEL_ID)
00108 # error The PWM configuration to use in this example is missing.
00109 #endif
00111
00112
00117 int main()
00118 {
00119 pwm_opt_t pwm_opt;
00120 avr32_pwm_channel_t pwm_channel = { .ccnt = 0 };
00121
00122
00123 unsigned int channel_id;
00124
00125 channel_id = EXAMPLE_PWM_CHANNEL_ID;
00126 gpio_enable_module_pin(EXAMPLE_PWM_PIN, EXAMPLE_PWM_FUNCTION);
00127
00128
00129 pwm_opt.diva = AVR32_PWM_DIVA_CLK_OFF;
00130 pwm_opt.divb = AVR32_PWM_DIVB_CLK_OFF;
00131 pwm_opt.prea = AVR32_PWM_PREA_MCK;
00132 pwm_opt.preb = AVR32_PWM_PREB_MCK;
00133
00134 pwm_init(&pwm_opt);
00135
00136 pwm_channel.CMR.calg = PWM_MODE_LEFT_ALIGNED;
00137 pwm_channel.CMR.cpol = PWM_POLARITY_LOW;
00138 pwm_channel.CMR.cpd = PWM_UPDATE_DUTY;
00139 pwm_channel.CMR.cpre = AVR32_PWM_CPRE_MCK_DIV_256;
00140 pwm_channel.cdty = 5;
00141 pwm_channel.cprd = 20;
00142 pwm_channel.cupd = 0;
00143
00144
00145
00146
00147 pwm_channel_init(channel_id, &pwm_channel);
00148
00149 pwm_start_channels(1 << channel_id);
00150
00151 while(1);
00152 }