Skip to content

Commit 0080541

Browse files
MaBeckergfwilliams
authored andcommitted
fully integration of analog pin A0 (fix #1495)
1 parent 2a0eee7 commit 0080541

File tree

4 files changed

+69
-19
lines changed

4 files changed

+69
-19
lines changed

ChangeLog

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
ES8266: add CFLAGs to shrink binaray files (fix #1499)
2-
ESP32: update sdk to esp-idf 3.0.1, set Espruino build tools back to master branch
31
Allow changeInterval with large (>32 bit) intervals (fix #1438)
42
changeInterval now changes the interval immediately when it's called inside the interval it is changing (fix #1440)
53
Fix parsing of try..catch when not executing (fix #1439)
@@ -76,6 +74,10 @@
7674
Fix issue where STM32F4 USB could lock up if TX during heavy RX
7775
Improve `E.mapInPlace` docs, and allow it to work with no map (eg pass straight through)
7876
Added non-standard Uint24Array, because it's very useful for RGB
77+
ES8266: add CFLAGs to shrink binaray files (fix #1499)
78+
ESP8266 fully integration of analog pin A0 (fix #1495)
79+
ESP32: update sdk to esp-idf 3.0.1, set Espruino build tools back to master branch
80+
7981

8082
1v99 : Increase jslMatch error buffer size to handle "UNFINISHED TEMPLATE LITERAL" string (#1426)
8183
nRF5x: Make FlashWrite cope with flash writes > 4k

boards/ESP8266_4MB.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,25 @@
111111
boards = [ board_esp12 ];
112112

113113
def get_pins():
114-
pins = pinutils.generate_pins(0,16)
115-
pinutils.findpin(pins, "PD0", True)["functions"]["LED_1"]=0;
116-
pinutils.findpin(pins, "PD1", True)["functions"]["USART0_TX"]=0;
117-
pinutils.findpin(pins, "PD2", True)["functions"]["USART1_TX"]=0;
118-
pinutils.findpin(pins, "PD3", True)["functions"]["USART0_RX"]=0;
119-
# just fake pins D0 .. D16
120-
return pins
114+
# add pins D0 .. D16,A0
115+
pins = [
116+
{ "name":"PD0", "sortingname":"D00", "port":"D", "num":"0", "functions":{"LED_1":0}, "csv":{} },
117+
{ "name":"PD1", "sortingname":"D01", "port":"D", "num":"1", "functions":{"USART1_TX":0}, "csv":{} },
118+
{ "name":"PD2", "sortingname":"D02", "port":"D", "num":"2", "functions":{"USART2_TX":0}, "csv":{} },
119+
{ "name":"PD3", "sortingname":"D03", "port":"D", "num":"3", "functions":{"USART1_RX":0}, "csv":{} },
120+
{ "name":"PD4", "sortingname":"D04", "port":"D", "num":"4", "functions":{}, "csv":{} },
121+
{ "name":"PD5", "sortingname":"D05", "port":"D", "num":"5", "functions":{}, "csv":{} },
122+
{ "name":"PD6", "sortingname":"D06", "port":"D", "num":"6", "functions":{}, "csv":{} },
123+
{ "name":"PD7", "sortingname":"D07", "port":"D", "num":"7", "functions":{}, "csv":{} },
124+
{ "name":"PD8", "sortingname":"D08", "port":"D", "num":"8", "functions":{}, "csv":{} },
125+
{ "name":"PD9", "sortingname":"D09", "port":"D", "num":"9", "functions":{}, "csv":{} },
126+
{ "name":"PD10", "sortingname":"D10", "port":"D", "num":"10", "functions":{}, "csv":{} },
127+
{ "name":"PD11", "sortingname":"D11", "port":"D", "num":"11", "functions":{}, "csv":{} },
128+
{ "name":"PD12", "sortingname":"D12", "port":"D", "num":"12", "functions":{}, "csv":{} },
129+
{ "name":"PD13", "sortingname":"D13", "port":"D", "num":"13", "functions":{}, "csv":{} },
130+
{ "name":"PD14", "sortingname":"D14", "port":"D", "num":"14", "functions":{}, "csv":{} },
131+
{ "name":"PD15", "sortingname":"D15", "port":"D", "num":"15", "functions":{}, "csv":{} },
132+
{ "name":"PD16", "sortingname":"D16", "port":"D", "num":"16", "functions":{}, "csv":{} },
133+
{ "name":"PA0", "sortingname":"A00", "port":"A", "num":"17", "functions":{ "ADC1_IN0":0 }, "csv":{} }
134+
]
135+
return pins;

boards/ESP8266_BOARD.py

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,25 @@
132132
boards = [ board_esp12, board_esp01 ];
133133

134134
def get_pins():
135-
pins = pinutils.generate_pins(0,16)
136-
pinutils.findpin(pins, "PD0", True)["functions"]["LED_1"]=0;
137-
pinutils.findpin(pins, "PD1", True)["functions"]["USART0_TX"]=0;
138-
pinutils.findpin(pins, "PD2", True)["functions"]["USART1_TX"]=0;
139-
pinutils.findpin(pins, "PD3", True)["functions"]["USART0_RX"]=0;
140-
# just fake pins D0 .. D16
141-
return pins
135+
# add pins D0 .. D16,A0
136+
pins = [
137+
{ "name":"PD0", "sortingname":"D00", "port":"D", "num":"0", "functions":{"LED_1":0}, "csv":{} },
138+
{ "name":"PD1", "sortingname":"D01", "port":"D", "num":"1", "functions":{"USART1_TX":0}, "csv":{} },
139+
{ "name":"PD2", "sortingname":"D02", "port":"D", "num":"2", "functions":{"USART2_TX":0}, "csv":{} },
140+
{ "name":"PD3", "sortingname":"D03", "port":"D", "num":"3", "functions":{"USART1_RX":0}, "csv":{} },
141+
{ "name":"PD4", "sortingname":"D04", "port":"D", "num":"4", "functions":{}, "csv":{} },
142+
{ "name":"PD5", "sortingname":"D05", "port":"D", "num":"5", "functions":{}, "csv":{} },
143+
{ "name":"PD6", "sortingname":"D06", "port":"D", "num":"6", "functions":{}, "csv":{} },
144+
{ "name":"PD7", "sortingname":"D07", "port":"D", "num":"7", "functions":{}, "csv":{} },
145+
{ "name":"PD8", "sortingname":"D08", "port":"D", "num":"8", "functions":{}, "csv":{} },
146+
{ "name":"PD9", "sortingname":"D09", "port":"D", "num":"9", "functions":{}, "csv":{} },
147+
{ "name":"PD10", "sortingname":"D10", "port":"D", "num":"10", "functions":{}, "csv":{} },
148+
{ "name":"PD11", "sortingname":"D11", "port":"D", "num":"11", "functions":{}, "csv":{} },
149+
{ "name":"PD12", "sortingname":"D12", "port":"D", "num":"12", "functions":{}, "csv":{} },
150+
{ "name":"PD13", "sortingname":"D13", "port":"D", "num":"13", "functions":{}, "csv":{} },
151+
{ "name":"PD14", "sortingname":"D14", "port":"D", "num":"14", "functions":{}, "csv":{} },
152+
{ "name":"PD15", "sortingname":"D15", "port":"D", "num":"15", "functions":{}, "csv":{} },
153+
{ "name":"PD16", "sortingname":"D16", "port":"D", "num":"16", "functions":{}, "csv":{} },
154+
{ "name":"PA0", "sortingname":"A00", "port":"A", "num":"17", "functions":{ "ADC1_IN0":0 }, "csv":{} }
155+
]
156+
return pins;

targets/esp8266/jshardware.c

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,10 @@ void jshPinSetState(
365365
) {
366366

367367
os_printf("> ESP8266: jshPinSetState state: %s\n",pinStateToString(state));
368-
368+
/* reject analog port */
369+
if ((pinInfo[pin].port & JSH_PORT_MASK) == JSH_PORTA) {
370+
return ;
371+
}
369372
/* handle D16 */
370373
if (pin == 16) {
371374
switch(state){
@@ -470,7 +473,11 @@ JshPinState jshPinGetState(Pin pin) {
470473
os_printf("> ESP8266: pin %d, pinState %d, reg_read %d, out_addr: %d input get %d\n",
471474
pin, g_pinState[pin], (GPIO_REG_READ(GPIO_OUT_W1TS_ADDRESS)>>pin)&1,
472475
(GPIO_REG_READ(GPIO_OUT_ADDRESS)>>pin)&1, GPIO_INPUT_GET(pin));
473-
*/
476+
*/
477+
/* reject non dialog ports */
478+
if ((pinInfo[pin].port & JSH_PORT_MASK) == JSH_PORTA) {
479+
return JSHPINSTATE_ADC_IN;
480+
}
474481
int rc = g_pinState[pin];
475482
if (pin == 16) {
476483
if ((uint8)(READ_PERI_REG(RTC_GPIO_IN_DATA) & 1) &1) {
@@ -494,6 +501,10 @@ void jshPinSetValue(
494501
bool value //!< The new value of the pin.
495502
) {
496503
//os_printf("> ESP8266: jshPinSetValue pin=%d, value=%d\n", pin, value);
504+
/* reject non dialog ports */
505+
if ((pinInfo[pin].port & JSH_PORT_MASK) != JSH_PORTD) {
506+
return;
507+
}
497508
/* handle GPIO16 */
498509
if (pin == 16) {
499510
WRITE_PERI_REG(RTC_GPIO_OUT,(READ_PERI_REG(RTC_GPIO_OUT) & (uint32)0xfffffffe) | (uint32)(value & 1));
@@ -516,6 +527,7 @@ void jshPinSetValue(
516527
bool CALLED_FROM_INTERRUPT jshPinGetValue( // can be called at interrupt time
517528
Pin pin //!< The pin to have its value read.
518529
) {
530+
519531
/* handle D16 */
520532
if (pin == 16) {
521533
return (READ_PERI_REG(RTC_GPIO_IN_DATA) & 1);
@@ -527,7 +539,13 @@ bool CALLED_FROM_INTERRUPT jshPinGetValue( // can be called at interrupt time
527539

528540
JsVarFloat jshPinAnalog(Pin pin) {
529541
//os_printf("> ESP8266: jshPinAnalog: pin=%d\n", pin);
530-
return (JsVarFloat)system_adc_read() / 1023.0;
542+
543+
if ( pin == 255 || ( pinInfo[pin].port & JSH_PORT_MASK) == JSH_PORTA ) {
544+
return (JsVarFloat)system_adc_read() / 1024.0;
545+
} else {
546+
return NAN;
547+
}
548+
531549
}
532550

533551
int jshPinAnalogFast(Pin pin) {

0 commit comments

Comments
 (0)