From a834c069f10d170dae4b92373c2275c9dcfd0bfc Mon Sep 17 00:00:00 2001 From: Greg Herlein Date: Mon, 1 Jan 2018 08:13:39 -0800 Subject: [PATCH 1/5] added notes on where to change XTAL freq Merges https://github.com/espressif/esp-idf/pull/1458 --- docs/get-started/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/get-started/index.rst b/docs/get-started/index.rst index 68c8f2ff0a..068bd872f8 100644 --- a/docs/get-started/index.rst +++ b/docs/get-started/index.rst @@ -285,7 +285,7 @@ To exit the monitor use shortcut ``Ctrl+]``. e���)(Xn@�y.!��(�PW+)��Hn9a؅/9�!�t5��P�~�k��e�ea�5�jA ~zY��Y(1�,1�� e���)(Xn@�y.!Dr�zY(�jpi�|�+z5Ymvp - or monitor fails shortly after upload, your board is likely using 26MHz crystal, while the ESP-IDF assumes default of 40MHz. Exit the monitor, go back to the :ref:`menuconfig `, change :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` to 26MHz, then :ref:`build and flash ` the application again. + or monitor fails shortly after upload, your board is likely using 26MHz crystal, while the ESP-IDF assumes default of 40MHz. Exit the monitor, go back to the :ref:`menuconfig `, change :ref:`CONFIG_ESP32_XTAL_FREQ_SEL` to 26MHz, then :ref:`build and flash ` the application again. This is found under ``make menuconfig`` under Component config --> ESP32-specific --> Main XTAL frequency. To execute ``make flash`` and ``make monitor`` in one go, type ``make flash monitor``. Check section :doc:`IDF Monitor ` for handy shortcuts and more details on using this application. From e7693b870063d87f70eff132c502dc40582cd4ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Pomezn=C3=BD?= Date: Sat, 30 Dec 2017 00:05:56 +0100 Subject: [PATCH 2/5] GPIO2 note updated Updated note on GPIO2 with informations about possible pull-down resistor. Merges https://github.com/espressif/esp-idf/pull/1451 --- examples/storage/sd_card/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/storage/sd_card/README.md b/examples/storage/sd_card/README.md index 341f3fe125..bfa2c5d80b 100644 --- a/examples/storage/sd_card/README.md +++ b/examples/storage/sd_card/README.md @@ -37,6 +37,8 @@ With the given pinout for SPI mode, same connections between the SD card and ESP GPIO2 pin is used as a bootstrapping pin, and should be low to enter UART download mode. One way to do this is to connect GPIO0 and GPIO2 using a jumper, and then the auto-reset circuit on most development boards will pull GPIO2 low along with GPIO0, when entering download mode. +- Some boards have pulldown and/or LED on GPIO2. LED is usually ok, but pulldown will interfere with D0 signals and must be removed. Check the schematic of your development board for anything connected to GPIO2. + ### Note about GPIO12 GPIO12 is used as a bootstrapping pin to select output voltage of an internal regulator which powers the flash chip (VDD_SDIO). This pin has an internal pulldown so if left unconnected it will read low at reset (selecting default 3.3V operation). When adding a pullup to this pin for SD card operation, consider the following: From f7f52414ec3be2666fb30337a24563ff015604d2 Mon Sep 17 00:00:00 2001 From: Per Malmberg Date: Fri, 29 Dec 2017 23:22:51 +0100 Subject: [PATCH 3/5] Removed logging in RMT driver which skews the timing. Issue #1345 Merges https://github.com/espressif/esp-idf/pull/1450 --- components/driver/rmt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/components/driver/rmt.c b/components/driver/rmt.c index 499f565bdc..09cf94c14a 100644 --- a/components/driver/rmt.c +++ b/components/driver/rmt.c @@ -540,7 +540,6 @@ static void IRAM_ATTR rmt_driver_isr_default(void* arg) switch(i % 3) { //TX END case 0: - ESP_EARLY_LOGD(RMT_TAG, "RMT INTR : TX END"); xSemaphoreGiveFromISR(p_rmt->tx_sem, &HPTaskAwoken); if(HPTaskAwoken == pdTRUE) { portYIELD_FROM_ISR(); @@ -552,7 +551,6 @@ static void IRAM_ATTR rmt_driver_isr_default(void* arg) break; //RX_END case 1: - ESP_EARLY_LOGD(RMT_TAG, "RMT INTR : RX END"); RMT.conf_ch[channel].conf1.rx_en = 0; int item_len = rmt_get_mem_len(channel); //change memory owner to protect data. @@ -590,7 +588,7 @@ static void IRAM_ATTR rmt_driver_isr_default(void* arg) channel = i - 24; rmt_obj_t* p_rmt = p_rmt_obj[channel]; RMT.int_clr.val = BIT(i); - ESP_EARLY_LOGD(RMT_TAG, "RMT CH[%d]: EVT INTR", channel); + if(p_rmt->tx_data == NULL) { //skip } else { From 6746d316207db9e88bfe579c73c61553ba5e2128 Mon Sep 17 00:00:00 2001 From: JoveToo Date: Sun, 24 Dec 2017 17:44:57 +0100 Subject: [PATCH 4/5] fix typo Merges https://github.com/espressif/esp-idf/pull/1430 --- components/freertos/include/freertos/event_groups.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/freertos/include/freertos/event_groups.h b/components/freertos/include/freertos/event_groups.h index 6b83e04e18..eda2456388 100644 --- a/components/freertos/include/freertos/event_groups.h +++ b/components/freertos/include/freertos/event_groups.h @@ -133,7 +133,7 @@ typedef TickType_t EventBits_t; * * Internally, within the FreeRTOS implementation, event groups use a [small] * block of memory, in which the event group's structure is stored. If an event - * groups is created using xEventGropuCreate() then the required memory is + * groups is created using xEventGroupCreate() then the required memory is * automatically dynamically allocated inside the xEventGroupCreate() function. * (see http://www.freertos.org/a00111.html). If an event group is created * using xEventGropuCreateStatic() then the application writer must instead From ecb75ba669c352360948864220758ca96a1063e5 Mon Sep 17 00:00:00 2001 From: JoveToo Date: Sun, 24 Dec 2017 16:42:00 +0100 Subject: [PATCH 5/5] fix typo Merges https://github.com/espressif/esp-idf/pull/1429 --- docs/api-reference/system/esp_timer.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-reference/system/esp_timer.rst b/docs/api-reference/system/esp_timer.rst index 3e0b8c8f81..53c07a1b8f 100644 --- a/docs/api-reference/system/esp_timer.rst +++ b/docs/api-reference/system/esp_timer.rst @@ -6,7 +6,7 @@ Overview Although FreeRTOS provides software timers, these timers have a few limitations: -- Mmaximum resolution is equal to RTOS tick period +- Maximum resolution is equal to RTOS tick period - Timer callbacks are dispatched from a low-priority task Hardware timers are free from both of the limitations, but often they are less convenient to use. For example, application components may need timer events to fire at certain times in the future, but the hardware timer only contains one "compare" value used for interrupt generation. This means that some facility needs to be built on top of the hardware timer to manage the list of pending events can dispatch the callbacks for these events as corresponding hardware interrupts happen.