cpu/lpc2387: adapted to PWM interface changes
This commit is contained in:
parent
b96cb04df2
commit
b41f915d86
@ -20,18 +20,21 @@
|
||||
|
||||
#include "bitarithm.h"
|
||||
#include "lpc2387.h"
|
||||
#include "periph/pwm.h"
|
||||
#include "periph_conf.h"
|
||||
|
||||
/* guard file in case no PWM device is defined */
|
||||
#if PWM_NUMOF
|
||||
#if (PWM_0_EN || PWM_1_EN)
|
||||
|
||||
/* pull the PWM header inside the guards for now. Guards will be removed on
|
||||
* adapting this driver implementation... */
|
||||
#include "periph/pwm.h"
|
||||
|
||||
/**
|
||||
* @note The PWM is always initialized with left-aligned mode.
|
||||
*
|
||||
* TODO: add center and right aligned modes
|
||||
*/
|
||||
int pwm_init(pwm_t dev, pwm_mode_t mode, unsigned int frequency, unsigned int resolution)
|
||||
uint32_t pwm_init(pwm_t dev, pwm_mode_t mode, uint32_t freq, uint16_t res)
|
||||
{
|
||||
(void) mode; /* unused */
|
||||
|
||||
@ -57,10 +60,10 @@ int pwm_init(pwm_t dev, pwm_mode_t mode, unsigned int frequency, unsigned int re
|
||||
PWM1TCR = BIT1;
|
||||
|
||||
/* set prescaler */
|
||||
PWM1PR = (CLOCK_CORECLOCK / (frequency * resolution)) - 1;
|
||||
PWM1PR = (CLOCK_CORECLOCK / (freq * res)) - 1;
|
||||
|
||||
/* set match register */
|
||||
PWM1MR0 = resolution;
|
||||
PWM1MR0 = res;
|
||||
PWM_0_CH0_MR = 0;
|
||||
PWM_0_CH1_MR = 0;
|
||||
PWM_0_CH2_MR = 0;
|
||||
@ -78,12 +81,22 @@ int pwm_init(pwm_t dev, pwm_mode_t mode, unsigned int frequency, unsigned int re
|
||||
PWM1LER = BIT0 | (1 << PWM_0_CH0) | (1 << PWM_0_CH1) | (1 << PWM_0_CH2);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
return frequency;
|
||||
return freq;
|
||||
}
|
||||
|
||||
int pwm_set(pwm_t dev, int channel, unsigned int value)
|
||||
uint8_t pwm_channels(pwm_t dev)
|
||||
{
|
||||
if (dev == PWM_0) {
|
||||
return PWM_0_CHANNELS;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pwm_set(pwm_t dev, uint8_t channel, uint16_t value)
|
||||
{
|
||||
switch (dev) {
|
||||
#if PWM_0_EN
|
||||
@ -102,14 +115,12 @@ int pwm_set(pwm_t dev, int channel, unsigned int value)
|
||||
PWM1LER |= (1 << PWM_0_CH2);
|
||||
break;
|
||||
default:
|
||||
return -2;
|
||||
return;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pwm_start(pwm_t dev)
|
||||
@ -156,4 +167,4 @@ void pwm_poweroff(pwm_t dev)
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* PWM_NUMOF */
|
||||
#endif /* (PWM_0_EN || PWM_1_EN) */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user