Fixed changing runtime datarecord size during switching between IDF 4.2 and 5.1. Fixed wiping the /spiffs filesystem. The directory listing from the SD card doesn't overwrite parts of the screen anymore. Solved the slow speed issue with the SD card. Try to force the SD card to operate at 20 MHz. More project settings changed to improve performance and memory usage. idf 5.1

Fri, 28 Jun 2024 15:33:24 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 28 Jun 2024 15:33:24 +0200
branch
idf 5.1
changeset 137
e0f50087c909
parent 136
89fc3c57282e
child 138
eab1b7c07cdf

Fixed changing runtime datarecord size during switching between IDF 4.2 and 5.1. Fixed wiping the /spiffs filesystem. The directory listing from the SD card doesn't overwrite parts of the screen anymore. Solved the slow speed issue with the SD card. Try to force the SD card to operate at 20 MHz. More project settings changed to improve performance and memory usage.

main/config.h file | annotate | diff | comparison | revisions
main/files.c file | annotate | diff | comparison | revisions
main/task_http.c file | annotate | diff | comparison | revisions
main/task_sdcard.c file | annotate | diff | comparison | revisions
sdkconfig file | annotate | diff | comparison | revisions
--- a/main/config.h	Wed Jun 26 21:48:49 2024 +0200
+++ b/main/config.h	Fri Jun 28 15:33:24 2024 +0200
@@ -260,7 +260,7 @@
     char	SSID[32];			///< Station SSID
     char	Password[64];			///< Station password
     bool	hide;				///< Hide from AP scan.
-} my_wifiStation_t;					///< Station record.
+} my_wifiStation_t;				///< Station record.
 
 /**
  * @brief Add a new station record.
@@ -303,8 +303,8 @@
     uint32_t		TimeBrewing;			///< Time we are brewing.
     uint8_t		MashStep;			///< Current mash step.
     bool		MaltAdded;			///< If malt was added.
-    TickType_t		MLT_usage;			///< MLT usage counter.
-    TickType_t		HLT_usage;			///< HLT usage counter.
+    uint16_t		MLT_usage;			///< MLT usage counter.
+    uint16_t		HLT_usage;			///< HLT usage counter.
 } my_runtime_t;						///< Runtime record.
 
 
--- a/main/files.c	Wed Jun 26 21:48:49 2024 +0200
+++ b/main/files.c	Fri Jun 28 15:33:24 2024 +0200
@@ -31,14 +31,17 @@
     if ((dir = opendir(path))) {
 	de = readdir(dir);
 	while (de) {
+	    sprintf(filename, "%s/%s", path, de->d_name);
+	    de->d_name[35] = '\0';
 	    TFT_print(de->d_name, 2, y);
-	    sprintf(filename, "%s/%s", path, de->d_name);
 	    if (stat(filename, &st) == 0) {
 		sprintf(tmp, "%ld", st.st_size);
 		TFT_print(tmp, RIGHT, y);
 	    }
 	    de = readdir(dir);
 	    y += 16;
+	    if (y > 230)
+		break;
 	}
 	closedir(dir);
     }
--- a/main/task_http.c	Wed Jun 26 21:48:49 2024 +0200
+++ b/main/task_http.c	Fri Jun 28 15:33:24 2024 +0200
@@ -318,11 +318,11 @@
 			break;
 
 	case WEBSOCKET_DISCONNECT_INTERNAL:
-			ESP_LOGI(TAG,"Websocket client %u was disconnected",(unsigned)num);
+			ESP_LOGI(TAG,"Websocket client %i was disconnected",num);
 			break;
 
 	case WEBSOCKET_DISCONNECT_ERROR:
-			ESP_LOGI(TAG,"Websocket client %u was disconnected due to an error",(unsigned)num);
+			ESP_LOGI(TAG,"Websocket client %i was disconnected due to an error",num);
 			break;
 
 	case WEBSOCKET_TEXT:
@@ -347,15 +347,15 @@
 			    }
 			}
 			// Log if the message in not processed.
-			ESP_LOGI(TAG,"Websocket client %u sent text message of size %u:\n%s",(unsigned)num,(unsigned)len,msg);
+			ESP_LOGI(TAG,"Websocket client %i sent text message of size %i:\n%s",num,(unsigned)len,msg);
 			break;
 
 	case WEBSOCKET_BIN:
-			ESP_LOGI(TAG,"Websocket client %u sent bin message of size %u:\n",(unsigned)num,(unsigned)len);
+			ESP_LOGI(TAG,"Websocket client %i sent bin message of size %i:\n",num,(unsigned)len);
 			break;
 
 	case WEBSOCKET_PING:
-			ESP_LOGI(TAG,"client %u pinged us with message of size %u:\n%s",(unsigned)num,(unsigned)len,msg);
+			ESP_LOGI(TAG,"client %i pinged us with message of size %i:\n%s",num,(unsigned)len,msg);
 			break;
 
 	case WEBSOCKET_PONG:
--- a/main/task_sdcard.c	Wed Jun 26 21:48:49 2024 +0200
+++ b/main/task_sdcard.c	Fri Jun 28 15:33:24 2024 +0200
@@ -467,6 +467,7 @@
     ESP_LOGI(TAG, "Start SD card");
     sdmmc_host_t host = SDSPI_HOST_DEFAULT();
     host.slot = SDCARD_HOST_SLOT;	// HSPI_HOST is in use by the TFT.
+    host.max_freq_khz = 20000;		// 20 MHz speed limit.
     spi_bus_config_t bus_cfg = {
         .mosi_io_num = SDCARD_PIN_NUM_MOSI,
         .miso_io_num = SDCARD_PIN_NUM_MISO,
@@ -489,6 +490,18 @@
     slot_config.host_id     = host.slot;
 
     /*
+     * Since IDF 5.0 the SD card is dead slow. Use pullup resistors
+     * on the board, see schematic.
+     * Or just use gpio pullup as workaround.
+     * Or both (not tested).
+     * See https://github.com/espressif/esp-idf/issues/10493
+     */
+    gpio_set_pull_mode(SDCARD_PIN_NUM_MOSI, GPIO_PULLUP_ONLY);
+    gpio_set_pull_mode(SDCARD_PIN_NUM_MISO, GPIO_PULLUP_ONLY);
+    gpio_set_pull_mode(SDCARD_PIN_NUM_CLK, GPIO_PULLUP_ONLY);
+    gpio_set_pull_mode(SDCARD_PIN_NUM_CS, GPIO_PULLUP_ONLY);
+
+    /*
      * No errors from the sdspi_transaction driver.
      */
     esp_log_level_set("sdspi_transaction", ESP_LOG_NONE);
@@ -506,10 +519,10 @@
 
     ret = my_vfs_fat_sdspi_init("/sdcard", &host, &slot_config);
     if (ret == ESP_OK) {
-	ESP_LOGI(TAG, "SPI card interface ready");
+	ESP_LOGI(TAG, "SD card interface ready");
 	sdcard_state->host_ok = true;
     } else {
-	ESP_LOGE(TAG, "SPI card interface failed, abort task");
+	ESP_LOGE(TAG, "SD card interface failed: %s, abort task", esp_err_to_name(ret));
 	vTaskDelete(NULL);
 	return;
     }
--- a/sdkconfig	Wed Jun 26 21:48:49 2024 +0200
+++ b/sdkconfig	Fri Jun 28 15:33:24 2024 +0200
@@ -427,11 +427,11 @@
 # TWAI Configuration
 #
 # CONFIG_TWAI_ISR_IN_IRAM is not set
-CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y
-CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y
-CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y
-CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y
-CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y
+# CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set
+# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
+# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
+# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
+# CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM is not set
 # end of TWAI Configuration
 
 #
@@ -570,8 +570,7 @@
 # Event Loop Library
 #
 # CONFIG_ESP_EVENT_LOOP_PROFILING is not set
-CONFIG_ESP_EVENT_POST_FROM_ISR=y
-CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
+# CONFIG_ESP_EVENT_POST_FROM_ISR is not set
 # end of Event Loop Library
 
 #
@@ -618,15 +617,15 @@
 #
 # Chip revision
 #
-CONFIG_ESP32_REV_MIN_0=y
-# CONFIG_ESP32_REV_MIN_1 is not set
+# CONFIG_ESP32_REV_MIN_0 is not set
+CONFIG_ESP32_REV_MIN_1=y
 # CONFIG_ESP32_REV_MIN_1_1 is not set
 # CONFIG_ESP32_REV_MIN_2 is not set
 # CONFIG_ESP32_REV_MIN_3 is not set
 # CONFIG_ESP32_REV_MIN_3_1 is not set
-CONFIG_ESP32_REV_MIN=0
-CONFIG_ESP32_REV_MIN_FULL=0
-CONFIG_ESP_REV_MIN_FULL=0
+CONFIG_ESP32_REV_MIN=1
+CONFIG_ESP32_REV_MIN_FULL=100
+CONFIG_ESP_REV_MIN_FULL=100
 
 #
 # Maximum Supported ESP32 Revision (Rev v3.99)
@@ -1084,9 +1083,7 @@
 #
 # DHCP server
 #
-CONFIG_LWIP_DHCPS=y
-CONFIG_LWIP_DHCPS_LEASE_UNIT=60
-CONFIG_LWIP_DHCPS_MAX_STATION_NUM=4
+# CONFIG_LWIP_DHCPS is not set
 # end of DHCP server
 
 # CONFIG_LWIP_AUTOIP is not set
@@ -1159,8 +1156,9 @@
 #
 # SNTP
 #
-CONFIG_LWIP_SNTP_MAX_SERVERS=1
-# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set
+CONFIG_LWIP_SNTP_MAX_SERVERS=3
+CONFIG_LWIP_DHCP_GET_NTP_SRV=y
+CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1
 CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
 # end of SNTP
 
@@ -1448,7 +1446,7 @@
 CONFIG_SPIFFS_OBJ_NAME_LEN=32
 # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
 CONFIG_SPIFFS_USE_MAGIC=y
-CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
+# CONFIG_SPIFFS_USE_MAGIC_LENGTH is not set
 CONFIG_SPIFFS_META_LENGTH=4
 CONFIG_SPIFFS_USE_MTIME=y
 
@@ -1505,7 +1503,8 @@
 #
 CONFIG_VFS_SUPPORT_IO=y
 CONFIG_VFS_SUPPORT_DIR=y
-# CONFIG_VFS_SUPPORT_SELECT is not set
+CONFIG_VFS_SUPPORT_SELECT=y
+CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
 # CONFIG_VFS_SUPPORT_TERMIOS is not set
 
 #
@@ -1585,8 +1584,7 @@
 CONFIG_ADC2_DISABLE_DAC=y
 # CONFIG_MCPWM_ISR_IN_IRAM is not set
 # CONFIG_EVENT_LOOP_PROFILING is not set
-CONFIG_POST_EVENTS_FROM_ISR=y
-CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
+# CONFIG_POST_EVENTS_FROM_ISR is not set
 # CONFIG_OTA_ALLOW_HTTP is not set
 CONFIG_TWO_UNIVERSAL_MAC_ADDRESS=y
 # CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS is not set
@@ -1749,6 +1747,7 @@
 # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
 # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
 # CONFIG_ESP32_ULP_COPROC_ENABLED is not set
+CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
 # CONFIG_SUPPORT_TERMIOS is not set
 CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
 # End of deprecated options

mercurial