| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  | #include "freertos/FreeRTOS.h"
 | 
					
						
							|  |  |  | #include "freertos/task.h"
 | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  | #include "unity.h"
 | 
					
						
							|  |  |  | #include "test_utils.h"
 | 
					
						
							|  |  |  | #include "soc/soc_caps.h"
 | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  | #include "driver/sigmadelta.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  | TEST_CASE("Sigma-Delta config test", "[sigma_delta]") | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  | { | 
					
						
							|  |  |  |     sigmadelta_config_t sigmadelta_cfg = { | 
					
						
							|  |  |  |         .sigmadelta_prescale = 80, | 
					
						
							|  |  |  |         .sigmadelta_duty = 45, | 
					
						
							|  |  |  |         .sigmadelta_gpio = 4, | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |     for (int i = 0; i < SOC_SIGMADELTA_CHANNEL_NUM; i++) { | 
					
						
							|  |  |  |         sigmadelta_cfg.channel = i; | 
					
						
							|  |  |  |         TEST_ESP_OK(sigmadelta_config(&sigmadelta_cfg)); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |     sigmadelta_cfg.channel = SOC_SIGMADELTA_CHANNEL_NUM; | 
					
						
							|  |  |  |     TEST_ASSERT_EQUAL_MESSAGE(ESP_ERR_INVALID_ARG, sigmadelta_config(&sigmadelta_cfg), "wrong channel number should be inspected"); | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // connect GPIO4 with LED positive pin, and the GND pin connect LED negative pin
 | 
					
						
							|  |  |  | // logic analyzer help also to see the wave form(more standard and accurate)
 | 
					
						
							|  |  |  | TEST_CASE("SigmaDelta pin, duty, prescale set", "[sigma_delta][ignore]") | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     sigmadelta_config_t sigmadelta_cfg = { | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |         .channel = 0, | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  |         .sigmadelta_prescale = 80, | 
					
						
							|  |  |  |         .sigmadelta_duty = 0, | 
					
						
							|  |  |  |         .sigmadelta_gpio = 4, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |     TEST_ESP_OK(sigmadelta_config(&sigmadelta_cfg)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     int8_t duty = 0; | 
					
						
							|  |  |  |     int inc = 1; | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |     for (int i = 0; i < 1000; i++) { | 
					
						
							|  |  |  |         sigmadelta_set_duty(0, duty); | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  |         vTaskDelay(10 / portTICK_PERIOD_MS); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         duty += inc; | 
					
						
							|  |  |  |         if (duty == 127 || duty == -127) { | 
					
						
							|  |  |  |             inc = (-1) * inc; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |     TEST_ESP_OK(sigmadelta_set_prescale(0, 200)); | 
					
						
							|  |  |  |     for (int i = 0; i < 1000; i++) { | 
					
						
							|  |  |  |         sigmadelta_set_duty(0, duty); | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  |         vTaskDelay(10 / portTICK_PERIOD_MS); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         duty += inc; | 
					
						
							|  |  |  |         if (duty == 127 || duty == -127) { | 
					
						
							|  |  |  |             inc = (-1) * inc; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-10-22 13:16:49 +08:00
										 |  |  |     TEST_ESP_OK(sigmadelta_set_pin(0, 5)); | 
					
						
							| 
									
										
										
										
											2017-12-27 18:04:42 +08:00
										 |  |  |     vTaskDelay(3000 / portTICK_PERIOD_MS); | 
					
						
							|  |  |  | } |