Add HAL API for pwmout pinmap

Add the function pwm_pinmap to all targets.
pull/9449/head
Russ Butler 2019-01-23 22:16:51 -06:00
parent 22a89773fa
commit be492fe07a
59 changed files with 300 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#define MBED_PWMOUT_API_H #define MBED_PWMOUT_API_H
#include "device.h" #include "device.h"
#include "pinmap.h"
#if DEVICE_PWMOUT #if DEVICE_PWMOUT
@ -108,6 +109,15 @@ void pwmout_pulsewidth_ms(pwmout_t *obj, int ms);
*/ */
void pwmout_pulsewidth_us(pwmout_t *obj, int us); void pwmout_pulsewidth_us(pwmout_t *obj, int us);
/** Get the pins that support PWM
*
* Return a PinMap array of pins that support PWM.
* The array is terminated with {NC, NC, 0}.
*
* @return PinMap array
*/
const PinMap *pwmout_pinmap(void);
/**@}*/ /**@}*/
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -300,3 +300,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
/* This call updates pulse width as well as period */ /* This call updates pulse width as well as period */
pwmout_write(obj, duty_cycle); pwmout_write(obj, duty_cycle);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -305,3 +305,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
float new_duty = (us / 1000000.0) * (float)obj->waveconfig.us_frequency; float new_duty = (us / 1000000.0) * (float)obj->waveconfig.us_frequency;
pwmout_write(obj, new_duty); pwmout_write(obj, new_duty);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -339,3 +339,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
} }
pwm_start(obj, obj->period, us); pwm_start(obj, obj->period, us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM_OUT;
}

View File

@ -319,3 +319,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
} }
pwm_start(obj, obj->period, us); pwm_start(obj, obj->period, us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM_OUT;
}

View File

@ -117,3 +117,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
*obj->CnV = (uint32_t)(pwm_clock * (float)us); *obj->CnV = (uint32_t)(pwm_clock * (float)us);
*obj->SYNC |= FTM_SYNC_SWSYNC_MASK; *obj->SYNC |= FTM_SYNC_SWSYNC_MASK;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -123,3 +123,8 @@ void pwmout_pulsewidth_ms(pwmout_t* obj, int ms) {
void pwmout_pulsewidth_us(pwmout_t* obj, int us) { void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
*obj->CnV = (uint32_t)(pwm_clock * (float)us); *obj->CnV = (uint32_t)(pwm_clock * (float)us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -150,4 +150,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -150,4 +150,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -145,4 +145,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
base->CONTROLS[obj->pwm_name & 0xF].CnV = value; base->CONTROLS[obj->pwm_name & 0xF].CnV = value;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -145,4 +145,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
base->CONTROLS[obj->pwm_name & 0xF].CnV = value; base->CONTROLS[obj->pwm_name & 0xF].CnV = value;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -146,4 +146,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
base->CONTROLS[obj->pwm_name & 0xF].CnV = value; base->CONTROLS[obj->pwm_name & 0xF].CnV = value;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -150,4 +150,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -145,4 +145,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
base->CONTROLS[obj->pwm_name & 0xF].CnV = value; base->CONTROLS[obj->pwm_name & 0xF].CnV = value;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -150,4 +150,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -150,4 +150,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -167,4 +167,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
FTM_SetSoftwareTrigger(base, true); FTM_SetSoftwareTrigger(base, true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -297,3 +297,8 @@ static uint32_t timer_get_clock(uint32_t timer_periph)
return timerclk; return timerclk;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -297,3 +297,8 @@ static uint32_t timer_get_clock(uint32_t timer_periph)
return timerclk; return timerclk;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -344,3 +344,8 @@ static void dev_pwmout_init(pwmout_t *obj)
timer_primary_output_config(obj->pwm, ENABLE); timer_primary_output_config(obj->pwm, ENABLE);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -211,3 +211,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
// Update the register // Update the register
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -211,3 +211,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
// Update the register // Update the register
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -209,3 +209,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
// Update the register // Update the register
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -219,3 +219,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -219,3 +219,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -219,3 +219,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_update(obj); pwmout_update(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -378,3 +378,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
NRF_TIMER2->SHORTS = TIMER_SHORTS_COMPARE3_CLEAR_Msk | TIMER_SHORTS_COMPARE3_STOP_Msk; NRF_TIMER2->SHORTS = TIMER_SHORTS_COMPARE3_CLEAR_Msk | TIMER_SHORTS_COMPARE3_STOP_Msk;
NRF_TIMER2->TASKS_START = 1; NRF_TIMER2->TASKS_START = 1;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -256,4 +256,9 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
pwm_ticks_set(pwm, obj->pwm_channel, ticks); pwm_ticks_set(pwm, obj->pwm_channel, ticks);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif // DEVICE_PWMOUT #endif // DEVICE_PWMOUT

View File

@ -348,4 +348,9 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int pulse)
nordic_pwm_restart(obj); nordic_pwm_restart(obj);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif // DEVICE_PWMOUT #endif // DEVICE_PWMOUT

View File

@ -205,4 +205,9 @@ static void pwmout_config(pwmout_t* obj, int start)
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -181,4 +181,9 @@ static void pwmout_config(pwmout_t* obj)
PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, obj->pulsewidth_us * 100 / obj->period_us, obj->period_us); PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, obj->pulsewidth_us * 100 / obj->period_us, obj->period_us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -191,4 +191,9 @@ static void pwmout_config(pwmout_t* obj, int start)
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -188,4 +188,9 @@ static void pwmout_config(pwmout_t* obj)
PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, 100 - (obj->pulsewidth_us * 100 / obj->period_us), obj->period_us); PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, 100 - (obj->pulsewidth_us * 100 / obj->period_us), obj->period_us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -204,4 +204,9 @@ static void pwmout_config(pwmout_t* obj)
PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, obj->pulsewidth_us * 100 / obj->period_us, obj->period_us); PWM_ConfigOutputChannel2(pwm_base, chn, 1000 * 1000, obj->pulsewidth_us * 100 / obj->period_us, obj->period_us);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -219,4 +219,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -155,3 +155,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
timer->MR[tid.mr] = t_off; timer->MR[tid.mr] = t_off;
timer->TCR = TCR_CNT_EN; timer->TCR = TCR_CNT_EN;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -186,3 +186,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
timer->MR[tid.mr] = t_off; timer->MR[tid.mr] = t_off;
timer->TCR = TCR_CNT_EN; timer->TCR = TCR_CNT_EN;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -191,3 +191,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
timer->MR[tid.mr] = t_off; timer->MR[tid.mr] = t_off;
timer->TCR = TCR_CNT_EN; timer->TCR = TCR_CNT_EN;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -203,3 +203,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -169,3 +169,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
// set the channel latch to update value at next period start // set the channel latch to update value at next period start
LPC_PWM1->LER |= 1 << obj->pwm; LPC_PWM1->LER |= 1 << obj->pwm;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -187,3 +187,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
// set the channel latch to update value at next period start // set the channel latch to update value at next period start
obj->pwm->LER |= 1 << obj->channel; obj->pwm->LER |= 1 << obj->channel;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -161,3 +161,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
// set the channel latch to update value at next period start // set the channel latch to update value at next period start
obj->pwm->LER |= 1 << obj->channel; obj->pwm->LER |= 1 << obj->channel;
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -269,3 +269,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
LPC_SCT->OUT[i].CLR = (1 << 0); // event 0 clears PWM pin LPC_SCT->OUT[i].CLR = (1 << 0); // event 0 clears PWM pin
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -246,4 +246,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
obj->pwm->MATCHREL[(obj->pwm_ch) + 1].U = (uint32_t)us; // New endtime for this channel obj->pwm->MATCHREL[(obj->pwm_ch) + 1].U = (uint32_t)us; // New endtime for this channel
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -200,4 +200,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -223,4 +223,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
PWM_SetPwmLdok(base, (1 << module), true); PWM_SetPwmLdok(base, (1 << module), true);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -204,6 +204,11 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
/**@}*/ /**@}*/
#endif // DEVICE_PWMOUT #endif // DEVICE_PWMOUT

View File

@ -391,4 +391,9 @@ static void pwmout_update_cfgreg(pwmout_t* obj)
*(obj->CFGR) = reg_val | (obj->pulsewidth_ticks);//1~254 *(obj->CFGR) = reg_val | (obj->pulsewidth_ticks);//1~254
} }
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -567,3 +567,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us) {
} }
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -148,5 +148,10 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif // #ifdef CONFIG_PWM_EN #endif // #ifdef CONFIG_PWM_EN
#endif // #if DEVICE_PWMOUT #endif // #if DEVICE_PWMOUT

View File

@ -341,4 +341,9 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -352,4 +352,9 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles); TIMER_CompareBufSet(PWM_TIMER, obj->channel, width_cycles);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif

View File

@ -241,3 +241,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
value = (((seconds / obj->period) * 100.0f) / 100.0f); value = (((seconds / obj->period) * 100.0f) / 100.0f);
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -185,3 +185,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -197,3 +197,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -211,3 +211,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
value = (((seconds / obj->period) * 100.0f) / 100.0f); value = (((seconds / obj->period) * 100.0f) / 100.0f);
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -223,3 +223,8 @@ void pwmout_pulsewidth_us(pwmout_t *obj, int us)
value = (((seconds / obj->period) * 100.0f) / 100.0f); value = (((seconds / obj->period) * 100.0f) / 100.0f);
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -193,3 +193,8 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}

View File

@ -142,4 +142,9 @@ void pwmout_pulsewidth_us(pwmout_t* obj, int us)
pwmout_write(obj, value); pwmout_write(obj, value);
} }
const PinMap *pwmout_pinmap()
{
return PinMap_PWM;
}
#endif #endif