Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By Squonk
#2688 You still have another choice: having a GPIO high or low during bootstrap for choosing the correct operating mode doesn't mean that you have to TIE the GPIO directly to either VCC or GND: you can connect it through a pull-up or pull-down resistor that is tied to VCC/GND,

If it has a high enough (~47 kohms is a good choice), then you can later on use the GPIO as input and drive it high or low depending upon your needs: when not driven, the resistor will drive the input to the default bootstrap level, but if you force it to the other level, it will allow you to do so, absorbing the voltage difference by conducting with a current I = V / R. As R is high, the resulting current is low, despite the large voltage difference, but it is not a short between a high and low voltage level, which would blow some fuses somewhere because of the high uncontrolled inrush current when R is very low...

However, this only works if the attached device that you want to connect to your input has the correct default level to allow bootstrapping the ESP8266 in the right mode.
User avatar
By sztomi86
#3995 I agree with Squonk, the pullups and pulldowns is enough at boot time. After it you can use them as you want.:)

Just be careful. Let say I use an external IC connected to the GPIO2 pin. the external IC luckily has a HIGH output at reset. but if it was low, I would have to think about an other solution :))


I don't know your application, so the reason why you need to read the inputs at reset, but I am planning to implement the following solution for my ESP01 module:

I want to wake up the module (RESET) when there is a button pressed at GPIO0 and GPIO2.
*The problem:
The GPIO0 and GPIO2 has to be high at reset to boot normally, but the buttons are pulling them down to GND.
*Solution:
Use a serial capacitor (about 220uF) to the RESET pin to generate an impulse at falling edge of the button.
Use monostable multivibrator IC (74HC123) to delay the impulse of the button. (There is a nice circuit to delay impulses in the datasheet!!!) :geek:
(This is still at idea level but working on a real implementation currently)
*So how this will will solve the problem:
While device is booting up, the system will read High (1) at GPIO0 and GPIO2 until the monostable multivibrator keeps the output High. Later the signal will return to 0 if button was pressed so in my application I can read which button was pressed.

BR,
sztomi
User avatar
By ucy74
#4014 I was testing an option with 220uF capacitors.
For me goal was to set GPIO as output for drive LED's.
Without caps there was neverending reset with bush in console.
Code: Select all%�����������%�����������%�����������%�����������

Now it works like a charm.

GPIO.jpg
You do not have the required permissions to view the files attached to this post.
User avatar
By sztomi86
#4033 Thanks for sharing the circuit.
I like this capacitors solution :) ...Charging the caps at boot-up is enough to read them high.. Good! What do you think about a serial resistor to the GPIO wires to limit the current? Or is ESP8266 strong enough to not to kill it?

ucy74 wrote:Without caps there was neverending reset with bush in console.
Code: Select all%�����������%�����������%�����������%�����������


This was I guess because GPIO2 was read by the CPU as low at bootup.