Skip to content

Commit 51dd0c7

Browse files
committed
PWM test : Make PWM pin configurable
PWM_0 is no more hardcoded connected to D2. The new function is deducting the PinIn depending on the PinOut value.
1 parent 7f21491 commit 51dd0c7

File tree

1 file changed

+73
-34
lines changed

1 file changed

+73
-34
lines changed

TESTS/API/Pwm/Pwm.cpp

+73-34
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,42 @@ void duty_cbfn_fall(void)
5151
}
5252
}
5353

54+
PinName PWM_IN(PinName pwm_out_pin)
55+
{
56+
switch ( pwm_out_pin ) {
57+
case MBED_CONF_APP_DIO_0:
58+
return MBED_CONF_APP_DIO_1;
59+
break;
60+
case MBED_CONF_APP_DIO_1:
61+
return MBED_CONF_APP_DIO_0;
62+
break;
63+
case MBED_CONF_APP_DIO_2:
64+
return MBED_CONF_APP_DIO_3;
65+
break;
66+
case MBED_CONF_APP_DIO_3:
67+
return MBED_CONF_APP_DIO_2;
68+
break;
69+
case MBED_CONF_APP_DIO_4:
70+
return MBED_CONF_APP_DIO_5;
71+
break;
72+
case MBED_CONF_APP_DIO_5:
73+
return MBED_CONF_APP_DIO_4;
74+
break;
75+
case MBED_CONF_APP_DIO_6:
76+
return MBED_CONF_APP_DIO_7;
77+
break;
78+
case MBED_CONF_APP_DIO_7:
79+
return MBED_CONF_APP_DIO_6;
80+
break;
81+
case MBED_CONF_APP_DIO_8:
82+
return MBED_CONF_APP_DIO_9;
83+
break;
84+
case MBED_CONF_APP_DIO_9:
85+
return MBED_CONF_APP_DIO_8;
86+
break;
87+
}
88+
}
89+
5490
// Template to test the Duty cycle API on PWM Pins. This test will collect a sample size of tests and average out the length of the duty cycle
5591
// the averaged duty cycle is then compared against the expected duty cycle.
5692
void PWM_Duty_slave(PinName pwm_out_pin, PinName int_in_pin, int period_in_ms, float duty_cycle_percent)
@@ -91,13 +127,14 @@ void PWM_Duty_slave(PinName pwm_out_pin, PinName int_in_pin, int period_in_ms, f
91127
}
92128

93129
// Template to iterate through a PWM pin, takes in period and tries 10%-100% duty cycle in intervals of 10%
94-
template <PinName pwm_out_pin, PinName int_in_pin, int period_in_miliseconds>
130+
template <PinName pwm_out_pin, int period_in_miliseconds>
95131
void PWM_DutyCycle_Test()
96132
{
97133
#define DUTY_CYCLE_STEP 0.2f
98134
#define MIN_DUTY_CYCLE 0.1f
99135
#define MAX_DUTY_CYCLE 0.9f
100136

137+
PinName int_in_pin = PWM_IN(pwm_out_pin);
101138
float x = 0;
102139
for(x = MIN_DUTY_CYCLE; x < MAX_DUTY_CYCLE; x = x+DUTY_CYCLE_STEP){ // iterate duty cycle test
103140
PWM_Duty_slave(pwm_out_pin, int_in_pin, period_in_miliseconds, x);
@@ -121,9 +158,11 @@ void cbfn_fall(void)
121158

122159
// Template to test that a PWM signal has the correct length by measuring the number of rise and fall
123160
// interrupts during a specified number of tests.
124-
template <PinName pwm_out_pin, PinName int_in_pin, int period_in_miliseconds, int num_tests>
161+
template <PinName pwm_out_pin, int period_in_miliseconds, int num_tests>
125162
void PWM_Period_Test()
126163
{
164+
PinName int_in_pin = PWM_IN(pwm_out_pin);
165+
127166
// Initialize PWM, InterruptIn, Timer, and Rising / Falling edge counts
128167
fall_count = 0;
129168
rise_count = 0;
@@ -217,40 +256,40 @@ Case cases[] = {
217256
Case("Pwm object definable", pwm_define_test,greentea_failure_handler), // test pwm object constructor works
218257

219258
// Test Frequency length by counting rise / fall ticks
220-
Case("PWM_0 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
221-
Case("PWM_0 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
222-
Case("PWM_0 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
223-
//Case("PWM_0 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
224-
Case("PWM_1 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
225-
Case("PWM_1 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
226-
Case("PWM_1 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
227-
//Case("PWM_1 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
228-
Case("PWM_2 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
229-
Case("PWM_2 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
230-
Case("PWM_2 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
231-
//Case("PWM_2 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
232-
Case("PWM_3 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
233-
Case("PWM_3 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
234-
Case("PWM_3 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
235-
//Case("PWM_3 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
259+
Case("PWM_0 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
260+
Case("PWM_0 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
261+
Case("PWM_0 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
262+
//Case("PWM_0 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_0, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
263+
Case("PWM_1 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
264+
Case("PWM_1 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
265+
Case("PWM_1 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
266+
//Case("PWM_1 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_1, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
267+
Case("PWM_2 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
268+
Case("PWM_2 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
269+
Case("PWM_2 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
270+
//Case("PWM_2 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_2, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
271+
Case("PWM_3 Frequency 10ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, 10, 1000 >, greentea_failure_handler), // Test at 10ms 100 times, default 50%duty cycle
272+
Case("PWM_3 Frequency 30ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, 30, 100 >, greentea_failure_handler), // Test at 30ms 100 times, default 50%duty cycle
273+
Case("PWM_3 Frequency 100ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, 100, 100 >, greentea_failure_handler), // Test at 100ms 100 times, default 50%duty cycle
274+
//Case("PWM_3 Frequency 500ms", PWM_Period_Test< MBED_CONF_APP_PWM_3, 500, 20 >, greentea_failure_handler), // Test at 500ms 20 times, default 50%duty cycle
236275

237276
// Test Duty Cycle width (10%->90%)
238-
Case("PWM_0 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
239-
Case("PWM_0 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
240-
Case("PWM_0 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
241-
//Case("PWM_0 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, MBED_CONF_APP_DIO_2, 500 >, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
242-
Case("PWM_1 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
243-
Case("PWM_1 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
244-
Case("PWM_1 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
245-
//Case("PWM_1 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, MBED_CONF_APP_DIO_4, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
246-
Case("PWM_2 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
247-
Case("PWM_2 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
248-
Case("PWM_2 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
249-
//Case("PWM_2 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, MBED_CONF_APP_DIO_7, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
250-
Case("PWM_3 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
251-
Case("PWM_3 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
252-
Case("PWM_3 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
253-
//Case("PWM_3 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, MBED_CONF_APP_DIO_8, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
277+
Case("PWM_0 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
278+
Case("PWM_0 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
279+
Case("PWM_0 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
280+
//Case("PWM_0 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_0, 500 >, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
281+
Case("PWM_1 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
282+
Case("PWM_1 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
283+
Case("PWM_1 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
284+
//Case("PWM_1 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_1, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
285+
Case("PWM_2 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
286+
Case("PWM_2 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
287+
Case("PWM_2 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
288+
//Case("PWM_2 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_2, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
289+
Case("PWM_3 Duty Cycle 10ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, 10 >, greentea_failure_handler), // Test 10ms Frequency with 10% to 90% duty cycle
290+
Case("PWM_3 Duty Cycle 30ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, 30 >, greentea_failure_handler), // Test 30ms Frequency with 10% to 90% duty cycle
291+
Case("PWM_3 Duty Cycle 100ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, 100>, greentea_failure_handler), // Test 100ms Frequency with 10% to 90% duty cycle
292+
//Case("PWM_3 Duty Cycle 500ms", PWM_DutyCycle_Test< MBED_CONF_APP_PWM_3, 500>, greentea_failure_handler), // Test 500ms Frequency with 10% to 90% duty cycle
254293
};
255294

256295
Specification specification(test_setup, cases);

0 commit comments

Comments
 (0)