mbed-os/features/unsupported/tests/mbed/pwm/main.cpp

205 lines
6.1 KiB
C++
Raw Normal View History

#include "test_env.h"
/* Timer/Match Register Pinout Options
CT16B0/MR0 p5 (P0_9)
CT16B0/MR1 p6 (P0_8)
CT16B0/MR2 p34 (P1_15)
CT16B1/MR0 p36 (P0_21)
CT16B1/MR1 p20 (P0_22) and p14 (P1_23)
CT32B0/MR0 p25 (P1_24)
CT32B0/MR1 p26 (P1_25) and USBTX (P0_19)
CT32B0/MR2 p10 (P1_26)
*/
2014-05-29 13:49:47 +00:00
2014-04-03 19:30:01 +00:00
float value = 0.75;
int main() {
#if defined(TARGET_FF_ARDUINO)
PwmOut pwm(D9);
int period_ms = 10;
2014-04-03 19:30:01 +00:00
pwm.period_ms(period_ms);
2014-04-03 19:30:01 +00:00
pwm.write(value);
float result = floor(pwm.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("PWM period = %dms with duty cycle: %d%%\n", period_ms, (int) (result * 100));
2014-04-03 19:30:01 +00:00
notify_completion(result == value ? true : false);
2015-05-18 09:31:10 +00:00
#elif defined(TARGET_LPC1768) || defined(TARGET_LPC2368) || defined(TARGET_LPC11U24) || defined(TARGET_LPC4088) || defined(TARGET_LPC2460)
2014-04-03 19:30:01 +00:00
PwmOut pwm_p25(p25);
PwmOut pwm_p26(p26);
pwm_p25.write(0.75);
pwm_p26.write(0.50);
printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read());
printf("Initialize PWM on pin 26 with duty cycle: %.2f\n", pwm_p26.read());
2013-02-26 14:57:42 +00:00
#elif defined(TARGET_LPC1114)
PwmOut pwm_dp24(dp24); // P0_1
PwmOut pwm_dp18(dp18); // P1_9
pwm_dp24.write(0.75);
pwm_dp18.write(0.50);
printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_dp24.read());
printf("Initialize PWM on pin 18 with duty cycle: %.2f\n", pwm_dp18.read());
2016-09-26 07:07:41 +00:00
#elif defined(TARGET_LPC1347)
PwmOut pwm_1(P0_18);
PwmOut pwm_2(P0_9);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on P0_18 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on P0_9 with duty cycle: %.2f\n", pwm_2.read());
2016-02-26 17:51:35 +00:00
#elif defined(TARGET_NRF51822)
PwmOut pwm_p24(p24);
2014-04-03 19:30:01 +00:00
PwmOut pwm_p25(p25);
pwm_p24.write(0.75);
pwm_p25.write(0.50);
printf("Initialize PWM on pin 24 with duty cycle: %.2f\n", pwm_p24.read());
printf("Initialize PWM on pin 25 with duty cycle: %.2f\n", pwm_p25.read());
2014-03-19 12:15:59 +00:00
#elif defined(TARGET_DISCO_F100RB)
2014-05-29 13:49:47 +00:00
PwmOut pwm_1(PB_3);
2014-03-19 12:15:59 +00:00
PwmOut pwm_2(PB_4);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on pin PB_3 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on pin PB_4 with duty cycle: %.2f\n", pwm_2.read());
#elif defined(TARGET_DISCO_F051R8)
2014-05-29 13:49:47 +00:00
PwmOut pwm_1(PA_7);
PwmOut pwm_2(PC_7);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read());
#elif defined(TARGET_DISCO_F303VC)
2014-05-29 13:49:47 +00:00
PwmOut pwm_1(PA_8);
PwmOut pwm_2(PA_9);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on pin PA_7 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on pin PC_7 with duty cycle: %.2f\n", pwm_2.read());
2014-10-09 16:54:03 +00:00
#elif defined(TARGET_MAXWSNENV)
PwmOut pwm_1(TP2);
PwmOut pwm_2(TP4);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on pin TP2 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on pin TP4 with duty cycle: %.2f\n", pwm_2.read());
#elif defined(TARGET_DISCO_F407VG)
PwmOut pwm_1(PD_12);
PwmOut pwm_2(PD_13);
pwm_1.write(value);
pwm_2.write(0.50);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
printf("Initialize PWM on pin PD_13 with duty cycle: %.2f\n", pwm_2.read());
notify_completion(result == value ? true : false);
#elif defined(TARGET_DISCO_F429ZI) || defined(TARGET_NUCLEO_F429ZI)
PwmOut pwm_1(PA_0);
pwm_1.write(value);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
#elif defined(TARGET_MTS_MDOT_F405RG)
PwmOut pwm_1(PA_0);
pwm_1.write(value);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
#elif defined(TARGET_MTS_DRAGONFLY_F411RE)
PwmOut pwm_1(PA_0);
pwm_1.write(value);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
#elif defined(TARGET_MTS_MDOT_F411RE)
PwmOut pwm_1(PA_0);
pwm_1.write(value);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
#elif defined(TARGET_UBLOX_EVK_ODIN_W2)
PwmOut pwm_1(PA_0);
pwm_1.write(value);
2016-02-26 17:51:35 +00:00
float result = floor(pwm_1.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PD_12 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
#elif defined(TARGET_MAX32600MBED)
PwmOut pwm_1(P1_2);
PwmOut pwm_2(P1_3);
pwm_1.write(0.75);
pwm_2.write(0.50);
printf("Initialize PWM on pin P1.2 with duty cycle: %.2f\n", pwm_1.read());
printf("Initialize PWM on pin P1.3 with duty cycle: %.2f\n", pwm_2.read());
2015-09-23 08:18:08 +00:00
#elif defined(TARGET_SAMR21G18A) || defined(TARGET_SAMD21J18A) || defined(TARGET_SAMD21G18A) || defined(TARGET_SAML21J18A)
PwmOut pwm(LED1);
pwm.period_ms(1000);
pwm.write(value);
float result = floor(pwm.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin LED1 with duty cycle: %.2f\n", result);
Added support for SAMG55 * * Base Commit for SAMG55J19. No errors and no implementations. * * Added gpio files. * * Added pinmap files. * * Base commit for usticker implementation. * * Added gcc_arm export functionality * * added files for usticker. * added template file for samd55j19 * * GPIO IRQ base commit. * * updated with changes in gpio irq driver. * * Reverted back unexpected commit in SAM0 gpio driver. * * updated gpio_irq driver. * * correction in gpio and gpio_irq drivers. * added support for some test for gpio. * * base commit for peripheralpins for usart. * update in serial apis. * * updated serial apis. * * updated serial apis and test. * * update serial apis for asynch apis. * * updated peripheral pins for i2c and spi. * added test support for serial flow control * * Base commit for low power ticker implementation. * * base commit for port apis. * update in lp ticker apis. * * Added test support for port. * * base commit for sleep apis. * * Base commit for spi. * * updated with corrections in gpio irq. * usticker file updated with latest source. * * updated with corrections for unexpected board reset. * updated gpio irq apis and added test for the same. * * updated sleep api for deepsleep. * * updated serial apis. * Added uc_ticker and SPI api implementations * Removed unused SPI pin map * Updated review feedback * * implemented lpticker with TC module. * updated files for KnR Coding Statndard. * updated serial and usticker apis. * * Base commit for AnalogueIn apis. * * RTC apis base commit without implementation. * * Updated with corrections in lpticker implementations. * * Added implementation for rtc apis. * * updated with implementations for pwm. * changed usticker from TC0 to TC1. * Added I2C support * * removed setvector usage from usticker and lpticker implementations * added tests for SAMG55J19 * * Removed unwanted .o and .d files. * Updated I2C files for KnR Coding Standards. * Update for reducing compiler warnings in peripheralpins,c * Updated with PWM free implementation. * * Removed unwanted headers file inclusion. * Compiler warning corrections in serial_api.c * * Updated ADC with 16 bit mode initialization and code refinements. * Updated PWM with code refinements. * Updated I2C review feedback and fixed style * Updated target name for SAMG55 * * Added Test Support for I2C with AT30TSE75X and Added Support for SAMG55J19 in atmelstudio project exporter * * Added Test Support for I2C with AT30TSE75X and Added Support for SAMG55J19 in atmelstudio project exporter * Used NVIC_SetVector for interrupt callback * Removed Target macro define in test * Updated test cases to have SAMG55 support * * Updated with corrections in Serial and SPI asynchronous implementations. * Updated deepsleep api implementation * Merged LP_Ticker with latest code from mbed 3.0 repository. * * updated with corrections in I2C Asynch implementation.
2016-04-05 17:05:59 +00:00
notify_completion(result == value ? true : false);
#elif defined(TARGET_SAMG55J19)
PwmOut pwm(PA00); /*LED Doesnt support PWM for G55 XPro*/
pwm.period_ms(1000);
pwm.write(value);
float result = floor(pwm.read() * 100 + 0.5) / 100; // round it to 0.xx
printf("Initialize PWM on pin PA01 with duty cycle: %.2f\n", result);
notify_completion(result == value ? true : false);
2014-04-03 19:30:01 +00:00
#else
2016-02-26 17:51:35 +00:00
#error [NOT_SUPPORTED] This test is not supported on this target.
2013-02-26 14:57:42 +00:00
#endif
notify_completion(true);
}