From d36d36789be864b06790e3e6d58af94774ffca57 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Thu, 30 Apr 2015 15:02:05 +0200 Subject: [PATCH 01/17] use User-defined literals for kHz, MHz, GHz, kBit, MBit, GBit, kB, MB and GB see #145 --- .../esp8266/cores/esp8266/Arduino.h | 44 +++++++++++++++++++ .../esp8266com/esp8266/cores/esp8266/Esp.cpp | 30 ++++--------- 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h index 19c25e899..6b9aedcfb 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h @@ -186,4 +186,48 @@ long map(long, long, long, long, long); #include "pins_arduino.h" +/** + * User-defined Literals + * usage: + * + * uint32_t = test = 10_MHz; // --> 10000000 + */ +#ifdef __cplusplus +unsigned long long operator"" _kHz(unsigned long long x) { + return x * 1000; +} + +unsigned long long operator"" _MHz(unsigned long long x) { + return x * 1000 * 1000; +} + +unsigned long long operator"" _GHz(unsigned long long x) { + return x * 1000 * 1000 * 1000; +} + +unsigned long long operator"" _kBit(unsigned long long x) { + return x * 1024; +} + +unsigned long long operator"" _MBit(unsigned long long x) { + return x * 1024 * 1024; +} + +unsigned long long operator"" _GBit(unsigned long long x) { + return x * 1024 * 1024 * 1024; +} + +unsigned long long operator"" _kB(unsigned long long x) { + return x * 1024; +} + +unsigned long long operator"" _MB(unsigned long long x) { + return x * 1024 * 1024; +} + +unsigned long long operator"" _GB(unsigned long long x) { + return x * 1024 * 1024 * 1024; +} +#endif + #endif diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp index 190ff3009..5dafde53e 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp @@ -24,18 +24,6 @@ extern "C" { #include "user_interface.h" } -#define kHz (1000L) -#define MHz (1000L*kHz) -#define GHz (1000L*MHz) - -#define kBit (1024L) -#define MBit (1024L*kBit) -#define GBit (1024L*MBit) - -#define kB (1024L) -#define MB (1024L*kB) -#define GB (1024L*MB) - //extern "C" void ets_wdt_init(uint32_t val); extern "C" void ets_wdt_enable(void); extern "C" void ets_wdt_disable(void); @@ -134,15 +122,15 @@ uint32_t EspClass::getFlashChipSize(void) if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) { switch((bytes[3] & 0xf0) >> 4) { case 0x0: // 4 Mbit (512KB) - return (512 * kB); + return (512_kB); case 0x1: // 2 MBit (256KB) - return (256 * kB); + return (256_kB); case 0x2: // 8 MBit (1MB) - return (1 * MB); + return (1_MB); case 0x3: // 16 MBit (2MB) - return (2 * MB); + return (2_MB); case 0x4: // 32 MBit (4MB) - return (4 * MB); + return (4_MB); default: // fail? return 0; } @@ -158,13 +146,13 @@ uint32_t EspClass::getFlashChipSpeed(void) if(spi_flash_read(0x0000, &data, 4) == SPI_FLASH_RESULT_OK) { switch(bytes[3] & 0x0F) { case 0x0: // 40 MHz - return (40 * MHz); + return (40_MHz); case 0x1: // 26 MHz - return (26 * MHz); + return (26_MHz); case 0x2: // 20 MHz - return (20 * MHz); + return (20_MHz); case 0xf: // 80 MHz - return (80 * MHz); + return (80_MHz); default: // fail? return 0; } From a177dc65bf2f847a0953c51d7f51bc8fbccd5385 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Thu, 30 Apr 2015 15:19:36 +0200 Subject: [PATCH 02/17] in Arduino.h make some errors by compiling in some cases moved to Esp.cpp --- .../esp8266/cores/esp8266/Arduino.h | 44 ------------------- .../esp8266com/esp8266/cores/esp8266/Esp.cpp | 44 +++++++++++++++++++ 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h index 6b9aedcfb..19c25e899 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/Arduino.h @@ -186,48 +186,4 @@ long map(long, long, long, long, long); #include "pins_arduino.h" -/** - * User-defined Literals - * usage: - * - * uint32_t = test = 10_MHz; // --> 10000000 - */ -#ifdef __cplusplus -unsigned long long operator"" _kHz(unsigned long long x) { - return x * 1000; -} - -unsigned long long operator"" _MHz(unsigned long long x) { - return x * 1000 * 1000; -} - -unsigned long long operator"" _GHz(unsigned long long x) { - return x * 1000 * 1000 * 1000; -} - -unsigned long long operator"" _kBit(unsigned long long x) { - return x * 1024; -} - -unsigned long long operator"" _MBit(unsigned long long x) { - return x * 1024 * 1024; -} - -unsigned long long operator"" _GBit(unsigned long long x) { - return x * 1024 * 1024 * 1024; -} - -unsigned long long operator"" _kB(unsigned long long x) { - return x * 1024; -} - -unsigned long long operator"" _MB(unsigned long long x) { - return x * 1024 * 1024; -} - -unsigned long long operator"" _GB(unsigned long long x) { - return x * 1024 * 1024 * 1024; -} -#endif - #endif diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp index 5dafde53e..26f31bb4c 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp @@ -29,6 +29,50 @@ extern "C" void ets_wdt_enable(void); extern "C" void ets_wdt_disable(void); extern "C" void wdt_feed(void); +/** + * User-defined Literals + * usage: + * + * uint32_t = test = 10_MHz; // --> 10000000 + */ + +unsigned long long operator"" _kHz(unsigned long long x) { + return x * 1000; +} + +unsigned long long operator"" _MHz(unsigned long long x) { + return x * 1000 * 1000; +} + +unsigned long long operator"" _GHz(unsigned long long x) { + return x * 1000 * 1000 * 1000; +} + +unsigned long long operator"" _kBit(unsigned long long x) { + return x * 1024; +} + +unsigned long long operator"" _MBit(unsigned long long x) { + return x * 1024 * 1024; +} + +unsigned long long operator"" _GBit(unsigned long long x) { + return x * 1024 * 1024 * 1024; +} + +unsigned long long operator"" _kB(unsigned long long x) { + return x * 1024; +} + +unsigned long long operator"" _MB(unsigned long long x) { + return x * 1024 * 1024; +} + +unsigned long long operator"" _GB(unsigned long long x) { + return x * 1024 * 1024 * 1024; +} + + EspClass ESP; EspClass::EspClass() From 23ad2da5604fd1f6ecc63a229e2a855945576bfe Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Thu, 30 Apr 2015 16:06:01 +0200 Subject: [PATCH 03/17] add function to get flash size based of flash Chip id --- .../esp8266com/esp8266/cores/esp8266/Esp.cpp | 29 +++++++++++++++++++ .../esp8266com/esp8266/cores/esp8266/Esp.h | 1 + 2 files changed, 30 insertions(+) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp index 26f31bb4c..b2126b627 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/Esp.cpp @@ -218,3 +218,32 @@ FlashMode_t EspClass::getFlashChipMode(void) } return mode; } + +/** + * Infos from + * http://www.wlxmall.com/images/stock_item/att/A1010004.pdf + * http://www.gigadevice.com/product-series/5.html?locale=en_US + */ +uint32_t EspClass::getFlashChipSizeByChipId(void) { + uint32_t chipId = getFlashChipId(); + switch(chipId) { + case 0x1740C8: // GD25Q64B + return (8_MB); + case 0x1640C8: // GD25Q32B + return (4_MB); + case 0x1540C8: // GD25Q16B + return (2_MB); + case 0x1440C8: // GD25Q80 + return (1_MB); + case 0x1340C8: // GD25Q40 + return (512_kB); + case 0x1240C8: // GD25Q20 + return (256_kB); + case 0x1140C8: // GD25Q10 + return (128_kB); + case 0x1040C8: // GD25Q12 + return (64_kB); + default: + return 0; + } +} diff --git a/hardware/esp8266com/esp8266/cores/esp8266/Esp.h b/hardware/esp8266com/esp8266/cores/esp8266/Esp.h index 34fa3e13b..78b468163 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/Esp.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/Esp.h @@ -90,6 +90,7 @@ class EspClass { uint32_t getFlashChipSize(void); uint32_t getFlashChipSpeed(void); FlashMode_t getFlashChipMode(void); + uint32_t getFlashChipSizeByChipId(void); }; From 6014297bf2e6e9eff1c4a695cf37b8723b8487cc Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 11:51:06 +0300 Subject: [PATCH 04/17] fixed typos, brought back LED to blink --- .../examples/HelloServer/HelloServer.ino | 9 ++++++++- .../libraries/ESP8266WebServer/src/ESP8266WebServer.h | 7 ++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index 5ed9e90dc..14f85215c 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -6,14 +6,18 @@ const char* ssid = "........"; const char* password = "........"; MDNSResponder mdns; - ESP8266WebServer server(80); +const int led = 13; + void handle_root() { + digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp8266!"); + digitalWrite(led, 0); } bool handle_not_found(){ + digitalWrite(led, 1); String message = "URI: "; message += server.uri(); message += "\nMethod: "; @@ -26,11 +30,14 @@ bool handle_not_found(){ } message += "\nNotFound!"; server.send(404, "text/plain", message); + digitalWrite(led, 0); return true; } void setup(void){ Serial.begin(115200); + pinMode(led, OUTPUT); + digitalWrite(led, 0); WiFi.begin(ssid, password); Serial.println(""); diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h index 2c3000447..dee32f4bd 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -42,15 +42,16 @@ public: typedef std::function TNotFoundHandlerFunction; void on(const char* uri, THandlerFunction handler); void on(const char* uri, HTTPMethod method, THandlerFunction fn); - void onNotFound(TNotFoundHandlerFunction fn);//called when handler is not assigned + //called when handler is not assigned, return true if you handle it else return false to let the class return 404 + void onNotFound(TNotFoundHandlerFunction fn); String uri() { return _currentUri; } HTTPMethod method() { return _currentMethod; } WiFiClient client() { return _currentClient; } String arg(const char* name);// get request argument value - String arg(int i);// get request argument value buy number - String argName(int i);// get request argument name buy number + String arg(int i);// get request argument value by number + String argName(int i);// get request argument name by number int args();//get arguments count bool hasArg(const char* name);//check if argument exists From 43be35c4de9618c21d04fe1d5056143b9b55ffd3 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 12:14:07 +0300 Subject: [PATCH 05/17] fix typo preventing interrupts and leading to exception --- .../esp8266/cores/esp8266/core_esp8266_wiring_digital.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c index 51f049eb7..1863b6ed0 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c @@ -154,7 +154,7 @@ extern void __detachInterrupt(uint8_t pin) { } void initPins() { - ETS_GPIO_INTR_ATTACH(interrupt_handlers, &interrupt_reg); + ETS_GPIO_INTR_ATTACH(interrupt_handler, &interrupt_reg); ETS_GPIO_INTR_ENABLE(); } From 54bff7cc633b28ac2d31458cfecc7c8365893a02 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 12:27:30 +0300 Subject: [PATCH 06/17] Revert "fix typo preventing interrupts and leading to exception" This reverts commit 43be35c4de9618c21d04fe1d5056143b9b55ffd3. --- .../esp8266/cores/esp8266/core_esp8266_wiring_digital.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c index 1863b6ed0..51f049eb7 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c @@ -154,7 +154,7 @@ extern void __detachInterrupt(uint8_t pin) { } void initPins() { - ETS_GPIO_INTR_ATTACH(interrupt_handler, &interrupt_reg); + ETS_GPIO_INTR_ATTACH(interrupt_handlers, &interrupt_reg); ETS_GPIO_INTR_ENABLE(); } From 1da4b20a6159663926ed295a1623c904b380dd17 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 12:28:20 +0300 Subject: [PATCH 07/17] Revert "fixed typos, brought back LED to blink" This reverts commit 6014297bf2e6e9eff1c4a695cf37b8723b8487cc. --- .../examples/HelloServer/HelloServer.ino | 9 +-------- .../libraries/ESP8266WebServer/src/ESP8266WebServer.h | 7 +++---- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index 14f85215c..5ed9e90dc 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -6,18 +6,14 @@ const char* ssid = "........"; const char* password = "........"; MDNSResponder mdns; + ESP8266WebServer server(80); -const int led = 13; - void handle_root() { - digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp8266!"); - digitalWrite(led, 0); } bool handle_not_found(){ - digitalWrite(led, 1); String message = "URI: "; message += server.uri(); message += "\nMethod: "; @@ -30,14 +26,11 @@ bool handle_not_found(){ } message += "\nNotFound!"; server.send(404, "text/plain", message); - digitalWrite(led, 0); return true; } void setup(void){ Serial.begin(115200); - pinMode(led, OUTPUT); - digitalWrite(led, 0); WiFi.begin(ssid, password); Serial.println(""); diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h index dee32f4bd..2c3000447 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h @@ -42,16 +42,15 @@ public: typedef std::function TNotFoundHandlerFunction; void on(const char* uri, THandlerFunction handler); void on(const char* uri, HTTPMethod method, THandlerFunction fn); - //called when handler is not assigned, return true if you handle it else return false to let the class return 404 - void onNotFound(TNotFoundHandlerFunction fn); + void onNotFound(TNotFoundHandlerFunction fn);//called when handler is not assigned String uri() { return _currentUri; } HTTPMethod method() { return _currentMethod; } WiFiClient client() { return _currentClient; } String arg(const char* name);// get request argument value - String arg(int i);// get request argument value by number - String argName(int i);// get request argument name by number + String arg(int i);// get request argument value buy number + String argName(int i);// get request argument name buy number int args();//get arguments count bool hasArg(const char* name);//check if argument exists From 17131e133cfd60a2e8ced259afbd585cd5e40de6 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 12:32:37 +0300 Subject: [PATCH 08/17] Add led to WebServer example This reverts commit 43be35c4de9618c21d04fe1d5056143b9b55ffd3. --- .../ESP8266WebServer/examples/HelloServer/HelloServer.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index 10da0e9b3..f17e2e11e 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -9,11 +9,15 @@ MDNSResponder mdns; ESP8266WebServer server(80); +const int led = 13; + void handleRoot() { + digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp8266!"); } void handleNotFound(){ + digitalWrite(led, 1); String message = "URI: "; message += server.uri(); message += "\nMethod: "; @@ -26,9 +30,12 @@ void handleNotFound(){ message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); + digitalWrite(led, 0); } void setup(void){ + pinMode(led, OUTPUT); + digitalWrite(led, 0); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); From b4c937788d8c2fa082f52ec9c95ab6cf6e353e5d Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 13:00:17 +0300 Subject: [PATCH 09/17] missed led and fixed output to make more sense --- .../ESP8266WebServer/examples/HelloServer/HelloServer.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index f17e2e11e..09b5038f9 100644 --- a/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/hardware/esp8266com/esp8266/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -14,15 +14,16 @@ const int led = 13; void handleRoot() { digitalWrite(led, 1); server.send(200, "text/plain", "hello from esp8266!"); + digitalWrite(led, 0); } void handleNotFound(){ digitalWrite(led, 1); - String message = "URI: "; + String message += "File Not Found\n\n"; + message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET)?"GET":"POST"; - message += "\nNot Found!\n\n"; message += "\nArguments: "; message += server.args(); message += "\n"; From 37c47e25bf7f576d10e9fdae5a7b0a5692f6689d Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 1 May 2015 14:04:06 +0200 Subject: [PATCH 10/17] move digitalWrite and digitalRead to ram if in flash it can produce uncalculated lag. fix warning --- .../esp8266/cores/esp8266/core_esp8266_wiring_digital.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c index 5ac670e63..33fbe8c49 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c @@ -81,7 +81,7 @@ extern void __pinMode(uint8_t pin, uint8_t mode) { } } -extern void __digitalWrite(uint8_t pin, uint8_t val) { +extern void ICACHE_RAM_ATTR __digitalWrite(uint8_t pin, uint8_t val) { val &= 0x01; if(pin < 16){ if(val) GPOS = (1 << pin); @@ -92,12 +92,13 @@ extern void __digitalWrite(uint8_t pin, uint8_t val) { } } -extern int __digitalRead(uint8_t pin) { +extern int ICACHE_RAM_ATTR __digitalRead(uint8_t pin) { if(pin < 16){ return GPIP(pin); } else if(pin == 16){ return GP16I & 0x01; } + return 0; } /* From b72e0837664334bef4ecffadb466aea8519ce928 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 1 May 2015 14:08:01 +0200 Subject: [PATCH 11/17] remove libg libg is debugging version of libc, no sense to link both at the same time! --- hardware/esp8266com/esp8266/platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/esp8266com/esp8266/platform.txt b/hardware/esp8266com/esp8266/platform.txt index b3aa18f36..72915c027 100644 --- a/hardware/esp8266com/esp8266/platform.txt +++ b/hardware/esp8266com/esp8266/platform.txt @@ -23,7 +23,7 @@ compiler.S.flags=-c -g -x assembler-with-cpp -MMD compiler.c.elf.ldscript=eagle.app.v6.ld compiler.c.elf.flags=-nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-T{compiler.c.elf.ldscript}" compiler.c.elf.cmd=xtensa-lx106-elf-gcc -compiler.c.elf.libs=-lc -lm -lg -lgcc -lhal -lphy -lnet80211 -llwip -lwpa -lmain -lpp -lsmartconfig +compiler.c.elf.libs=-lm -lc -lgcc -lhal -lphy -lnet80211 -llwip -lwpa -lmain -lpp -lsmartconfig compiler.cpp.cmd=xtensa-lx106-elf-g++ compiler.cpp.flags=-c -Os -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -std=c++11 -MMD From 209b74256f3be43b995b6a1d36a9a649ee70020b Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 1 May 2015 14:11:09 +0200 Subject: [PATCH 12/17] fix 160Mhz mode add missing 0 16000000L != 160000000L --- hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp index 326d3264b..d45165443 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_main.cpp @@ -48,7 +48,7 @@ extern void setup(); void preloop_update_frequency() __attribute__((weak)); void preloop_update_frequency() { -#if defined(F_CPU) && (F_CPU == 16000000L) +#if defined(F_CPU) && (F_CPU == 160000000L) REG_SET_BIT(0x3ff00014, BIT(0)); ets_update_cpu_frequency(160); #endif From 0b14e44cfdb526b6a853cb747d2390bc49a66c0a Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 1 May 2015 14:46:08 +0200 Subject: [PATCH 13/17] add back pull-down support --- .../cores/esp8266/core_esp8266_wiring_digital.c | 12 ++++++++---- .../esp8266com/esp8266/cores/esp8266/esp8266_peri.h | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c index 33fbe8c49..b61901bbb 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c @@ -59,13 +59,17 @@ extern void __pinMode(uint8_t pin, uint8_t mode) { GPF(pin) = GPFFS(GPFFS_GPIO(pin));//Set mode to GPIO GPC(pin) = (GPC(pin) & (0xF << GPCI)); //SOURCE(GPIO) | DRIVER(NORMAL) | INT_TYPE(UNCHANGED) | WAKEUP_ENABLE(DISABLED) GPES = (1 << pin); //Enable - } else if(mode == INPUT || mode == INPUT_PULLUP){ + } else if(mode == INPUT || mode == INPUT_PULLUP || mode == INPUT_PULLDOWN){ GPF(pin) = GPFFS(GPFFS_GPIO(pin));//Set mode to GPIO GPC(pin) = (GPC(pin) & (0xF << GPCI)) | (1 << GPCD); //SOURCE(GPIO) | DRIVER(OPEN_DRAIN) | INT_TYPE(UNCHANGED) | WAKEUP_ENABLE(DISABLED) GPEC = (1 << pin); //Disable - if(mode == INPUT_PULLUP){ - GPF(pin) |= (1 << GPFPU);//Enable Pullup - } + if(mode == INPUT_PULLUP) { + GPF(pin) &= ~(1 << GPFPD); // Disable Pulldown + GPF(pin) |= (1 << GPFPU); // Enable Pullup + } else if(mode == INPUT_PULLDOWN) { + GPF(pin) &= ~(1 << GPFPU); // Disable Pullup + GPF(pin) |= (1 << GPFPD); // Enable Pulldown + } } } else if(pin == 16){ GPF16 = GP16FFS(GPFFS_GPIO(pin));//Set mode to GPIO diff --git a/hardware/esp8266com/esp8266/cores/esp8266/esp8266_peri.h b/hardware/esp8266com/esp8266/cores/esp8266/esp8266_peri.h index f905d34b3..8b92a07f5 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/esp8266_peri.h +++ b/hardware/esp8266com/esp8266/cores/esp8266/esp8266_peri.h @@ -93,9 +93,11 @@ static uint8_t esp8266_gpioToFn[16] = {0x34, 0x18, 0x38, 0x14, 0x3C, 0x40, 0x1C, //GPIO (0-15) PIN Function Bits #define GPFSOE 0 //Sleep OE #define GPFSS 1 //Sleep Sel +#define GPFSPD 2 //Sleep Pulldown #define GPFSPU 3 //Sleep Pullup #define GPFFS0 4 //Function Select bit 0 #define GPFFS1 5 //Function Select bit 1 +#define GPFPD 6 //Pulldown #define GPFPU 7 //Pullup #define GPFFS2 8 //Function Select bit 2 #define GPFFS(f) (((((f) & 4) != 0) << GPFFS2) | ((((f) & 2) != 0) << GPFFS1) | ((((f) & 1) != 0) << GPFFS0)) From 9ec5d20b67894c6c6f7c2666ac55b5da1c4f98f1 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 15:52:30 +0300 Subject: [PATCH 14/17] disable UART before making all pins INPUTs --- .../esp8266/cores/esp8266/core_esp8266_wiring_digital.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c index 5ac670e63..380936b61 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c +++ b/hardware/esp8266com/esp8266/cores/esp8266/core_esp8266_wiring_digital.c @@ -154,6 +154,11 @@ extern void __detachInterrupt(uint8_t pin) { } void initPins() { + //Disable UART interrupts + system_set_os_print(0); + U0IE = 0; + U1IE = 0; + for (int i = 0; i <= 5; ++i) { pinMode(i, INPUT); } From 28a868d6dd5e6e92fac5998f53dcd2256e9292f7 Mon Sep 17 00:00:00 2001 From: Markus Sattler Date: Fri, 1 May 2015 14:58:48 +0200 Subject: [PATCH 15/17] disable debug on Serial.end() if debug on this interface. --- hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp index ad8766444..9bd3e35a8 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp @@ -510,6 +510,9 @@ void ICACHE_FLASH_ATTR HardwareSerial::begin(unsigned long baud, byte config) { } void ICACHE_FLASH_ATTR HardwareSerial::end() { + if(uart_get_debug() == _uart_nr) { + uart_set_debug(UART_NO); + } uart_uninit(_uart); delete _rx_buffer; delete _tx_buffer; From b2d41697340ca11273c9a66b13a6c1f0d1d9bcc2 Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 16:09:46 +0300 Subject: [PATCH 16/17] Revert "disable debug on Serial.end() if debug on this interface." This reverts commit 28a868d6dd5e6e92fac5998f53dcd2256e9292f7. --- hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp index 9bd3e35a8..ad8766444 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp @@ -510,9 +510,6 @@ void ICACHE_FLASH_ATTR HardwareSerial::begin(unsigned long baud, byte config) { } void ICACHE_FLASH_ATTR HardwareSerial::end() { - if(uart_get_debug() == _uart_nr) { - uart_set_debug(UART_NO); - } uart_uninit(_uart); delete _rx_buffer; delete _tx_buffer; From 24879ec182347535af9d8a0614ed143fc816d2bc Mon Sep 17 00:00:00 2001 From: ficeto Date: Fri, 1 May 2015 16:15:58 +0300 Subject: [PATCH 17/17] Revert "Revert "disable debug on Serial.end() if debug on this interface."" This reverts commit b2d41697340ca11273c9a66b13a6c1f0d1d9bcc2. --- hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp index ad8766444..9bd3e35a8 100644 --- a/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp +++ b/hardware/esp8266com/esp8266/cores/esp8266/HardwareSerial.cpp @@ -510,6 +510,9 @@ void ICACHE_FLASH_ATTR HardwareSerial::begin(unsigned long baud, byte config) { } void ICACHE_FLASH_ATTR HardwareSerial::end() { + if(uart_get_debug() == _uart_nr) { + uart_set_debug(UART_NO); + } uart_uninit(_uart); delete _rx_buffer; delete _tx_buffer;