|
@@ -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....");
|
|
|
}
|