1
0
Quellcode durchsuchen

Can something on the RMT outport

Thomas Chef vor 2 Jahren
Ursprung
Commit
d77ea19f25
2 geänderte Dateien mit 33 neuen und 20 gelöschten Zeilen
  1. 2 2
      main/config.h
  2. 31 18
      main/ir_transmit.c

+ 2 - 2
main/config.h

@@ -17,8 +17,8 @@
 
 #define ONE_WIRE_BUS_IO           GPIO_NUM_16   // Temp sensors
 
-#define GPIO_IR_RX_DATA              GPIO_NUM_26   // IR Receiver
-#define GPIO_IR_TX_DATA              GPIO_NUM_25   // IR Transmitter
+#define GPIO_IR_RX_DATA              GPIO_NUM_25   // IR Receiver
+#define GPIO_IR_TX_DATA              GPIO_NUM_26   // IR Transmitter
 
 
 #endif

+ 31 - 18
main/ir_transmit.c

@@ -14,12 +14,17 @@
 #define RMT_CLK_DIV    80
 
 // RAM item that holds the IR protocol
-rmt_item32_t toshiba_rmt[1 + 72 + 1];
+rmt_item32_t toshiba_rmt[1 + 72 + 1 + 1];
 
 
 void initIrTransmit() {
 
-   	rmt_config_t rmt_tx = RMT_DEFAULT_CONFIG_TX(GPIO_IR_TX_DATA, RMT_TX_CHANNEL);;
+    //gpio_pad_select_gpio(GPIO_IR_TX_DATA);
+    //gpio_set_direction(GPIO_IR_TX_DATA, GPIO_MODE_OUTPUT);
+    //gpio_set_level(GPIO_IR_TX_DATA,1);
+
+
+    rmt_config_t rmt_tx;
 	rmt_tx.rmt_mode = RMT_MODE_TX;
 	rmt_tx.channel  = RMT_TX_CHANNEL;
 	rmt_tx.gpio_num = GPIO_IR_TX_DATA;
@@ -29,33 +34,41 @@ void initIrTransmit() {
 	rmt_tx.tx_config.carrier_duty_percent = 30;
 	rmt_tx.tx_config.carrier_freq_hz = 38000;
 	rmt_tx.tx_config.carrier_level   = RMT_CARRIER_LEVEL_HIGH;
-	rmt_tx.tx_config.carrier_en      = true;
+	rmt_tx.tx_config.carrier_en      = false;
 	rmt_tx.tx_config.idle_level      = RMT_IDLE_LEVEL_LOW;
 	rmt_tx.tx_config.idle_output_en  = true;
+    rmt_tx.flags = 0;
 	
 	ESP_ERROR_CHECK( rmt_config(&rmt_tx) );
 	ESP_ERROR_CHECK( rmt_driver_install(rmt_tx.channel, 0, 0) );
 
     // Init the ir data field
-    toshiba_rmt[0].val = (kToshibaAcHdrMark << 17) | (1 << 16) | (kToshibaAcHdrSpace << 1) | 0;    // Header of IR Transmit
-    toshiba_rmt[73].val = (kToshibaAcBitMark << 17) | (1 << 16) | (kToshibaAcZeroSpace << 1) | 0;    // End IR Transmit
-
-    for(int i=1;i<72;i++) {
-        toshiba_rmt[i].val = (kToshibaAcBitMark << 17) | (1 << 16) | (kToshibaAcHdrSpace << 1) | 0;    // Header of IR Transmit
+    //toshiba_rmt[0].val = (kToshibaAcHdrMark << 17) | (1 << 16) | (kToshibaAcHdrSpace << 1) | 0;    // Header of IR Transmit
+    toshiba_rmt[0].duration0 = kToshibaAcHdrMark;
+    toshiba_rmt[0].level0 = 1;
+    toshiba_rmt[0].duration1 = kToshibaAcHdrSpace;
+    toshiba_rmt[0].level1 = 0;
+    toshiba_rmt[73].duration0 = kToshibaAcBitMark;
+    toshiba_rmt[73].level0 = 1;
+    toshiba_rmt[73].duration1 = kToshibaAcZeroSpace;
+    toshiba_rmt[73].level1 = 0;
+    toshiba_rmt[74].val = (1 << 16);    // End marker
+
+    for(int i=1;i<73;i++) {
+        //toshiba_rmt[i].val = (kToshibaAcBitMark << 17) | (1 << 16) | (kToshibaAcZeroSpace << 1) | 0;    // Header of IR Transmit
+        toshiba_rmt[i].duration0 = kToshibaAcBitMark;
+        toshiba_rmt[i].level0 = 1;
+        toshiba_rmt[i].duration1 = kToshibaAcZeroSpace;
+        toshiba_rmt[i].level1 = 0;
     }
 
-
-
-
-
-
-	printf("RMT initialized\n");
-
-
+	ESP_LOGI("IR_TX","Init done.");
 }
 
 void sendToshibaIRData() {
 
-    ESP_ERROR_CHECK(rmt_write_items(RMT_TX_CHANNEL, toshiba_rmt, sizeof(toshiba_rmt) / sizeof(toshiba_rmt[0]), true));
-
+    ESP_LOGI("IR_TX","Send test-code");
+    //ESP_ERROR_CHECK(rmt_write_items(RMT_TX_CHANNEL, toshiba_rmt, sizeof(toshiba_rmt) / sizeof(toshiba_rmt[0]), true));
+    ESP_ERROR_CHECK(rmt_write_items(RMT_TX_CHANNEL, &(toshiba_rmt[0]), 1+72+1, true));
+    ESP_LOGI("IR_TX","Send done....");
 }