X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=drv%2Fpwm_test.c;fp=drv%2Fpwm_test.c;h=cb2dc84ce8f7361ff6d3db4cbdc9fbeb848245f5;hb=34c6d352191b42168252d9f79f61f141cb15cff7;hp=0000000000000000000000000000000000000000;hpb=c8f1a57907a25aeb9176ec2af0a41f4e9ba27fcb;p=bertos.git diff --git a/drv/pwm_test.c b/drv/pwm_test.c new file mode 100644 index 00000000..cb2dc84c --- /dev/null +++ b/drv/pwm_test.c @@ -0,0 +1,108 @@ +/** + * \file + * + * + * + * \brief Test for PWM driver (implementation) + * + * \version $Id$ + * + * \author Daniele Basile + */ + +#include +#include + +#include +#include + +#include +#include + +/* + * Esample of value for duty cycle" + * + * - 100% => 0xFFFFFFFF + * - 80% => 0xCCCCCCCC + * - 75% => 0xBFFFFFFF + * - 50% => 0x7FFFFFFF + * - 25% => 0x3FFFFFFF + * - 33% => 0x55555555 + * - 16% => 0x2AAAAAAA + */ + +#define PWM_TEST_CH0 0 +#define PWM_TEST_CH0_FREQ 100UL // 100Hz +#define PWM_TEST_CH0_DUTY 0xCCCC // 80% + +#define PWM_TEST_CH1 1 +#define PWM_TEST_CH1_FREQ 1000UL // 1000Hz +#define PWM_TEST_CH1_DUTY 0xBFFF // 75% + +#define PWM_TEST_CH2 2 +#define PWM_TEST_CH2_FREQ 12356 // 12356Hz +#define PWM_TEST_CH2_DUTY 0x7FFF // 50% + +#define PWM_TEST_CH3 3 +#define PWM_TEST_CH3_FREQ 100000UL // 100KHz +#define PWM_TEST_CH3_DUTY 0x5555 // 33% + +#define PWM_TEST_CH_SET(index) \ + do { \ + pwm_setFrequency(PWM_TEST_CH##index , PWM_TEST_CH##index##_FREQ); \ + pwm_setDuty(PWM_TEST_CH##index, PWM_TEST_CH##index##_DUTY); \ + pwm_enable(PWM_TEST_CH##index, true); \ + } while (0) + +/** + * Test suit for genation of pwm waveform. + * + */ +void pwm_test(void) +{ + + pwm_init(); + kputs("Init pwm..\n"); + + PWM_TEST_CH_SET(0); + kprintf("Set pwm ch[%d] =>freq[%ld], duty[%d]\n", PWM_TEST_CH0, PWM_TEST_CH0_FREQ, PWM_TEST_CH0_DUTY); + PWM_TEST_CH_SET(1); + kprintf("Set pwm ch[%d] =>freq[%ld], duty[%d]\n", PWM_TEST_CH1, PWM_TEST_CH1_FREQ, PWM_TEST_CH1_DUTY); + PWM_TEST_CH_SET(2); + kprintf("Set pwm ch[%d] =>freq[%ld], duty[%d]\n", PWM_TEST_CH2, PWM_TEST_CH2_FREQ, PWM_TEST_CH2_DUTY); + PWM_TEST_CH_SET(3); + kprintf("Set pwm ch[%d] =>freq[%ld], duty[%d]\n", PWM_TEST_CH3, PWM_TEST_CH3_FREQ, PWM_TEST_CH3_DUTY); +} + + + + + +