| 
									
										
										
										
											2018-09-17 23:19:27 +02:00
										 |  |  | #include "freertos/FreeRTOS.h"
 | 
					
						
							|  |  |  | #include "freertos/task.h"
 | 
					
						
							|  |  |  | #include "freertos/event_groups.h"
 | 
					
						
							|  |  |  | #include "Arduino.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "esp32-hal.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rmt_data_t my_data[256]; | 
					
						
							|  |  |  | rmt_data_t data[256]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rmt_obj_t* rmt_send = NULL; | 
					
						
							|  |  |  | rmt_obj_t* rmt_recv = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static EventGroupHandle_t events; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void setup()  | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     Serial.begin(115200); | 
					
						
							| 
									
										
										
										
											2020-09-30 13:52:22 +02:00
										 |  |  |     events = xEventGroupCreate(); | 
					
						
							| 
									
										
										
										
											2018-09-17 23:19:27 +02:00
										 |  |  |      | 
					
						
							|  |  |  |     if ((rmt_send = rmtInit(18, true, RMT_MEM_64)) == NULL) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Serial.println("init sender failed\n"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if ((rmt_recv = rmtInit(21, false, RMT_MEM_192)) == NULL) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         Serial.println("init receiver failed\n"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     float realTick = rmtSetTick(rmt_send, 100); | 
					
						
							|  |  |  |     printf("real tick set to: %fns\n", realTick); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void loop()  | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // Init data
 | 
					
						
							|  |  |  |     int i; | 
					
						
							|  |  |  |     for (i=0; i<255; i++) { | 
					
						
							|  |  |  |         data[i].val = 0x80010001 + ((i%13)<<16) + 13-(i%13); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     data[255].val = 0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Start receiving
 | 
					
						
							|  |  |  |     rmtReadAsync(rmt_recv, my_data, 100, events, false, 0); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Send in continous mode
 | 
					
						
							|  |  |  |     rmtWrite(rmt_send, data, 100); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Wait for data
 | 
					
						
							|  |  |  |     xEventGroupWaitBits(events, RMT_FLAG_RX_DONE, 1, 1, portMAX_DELAY); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // Printout the received data plus the original values
 | 
					
						
							|  |  |  |     for (i=0; i<60; i++) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-09-29 23:47:02 +03:00
										 |  |  |         Serial.printf("%08x=%08x ", my_data[i].val, data[i].val ); | 
					
						
							| 
									
										
										
										
											2018-09-17 23:19:27 +02:00
										 |  |  |         if (!((i+1)%4)) Serial.println("\n"); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     Serial.println("\n"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     delay(2000); | 
					
						
							|  |  |  | } |