This week I was reading through the SDK documentation, and realized a better way of handling serial events. I was setting a flag and using a software timer to handle those events once a second. I also found that there is a webserver example in the IOT example. I think this server is much simpler than ESP Ginx. I have decided to try to use this example to move forward in the design
I decided to set up an OS task that I can post to that will do things like display the serial menu. I am already using a task for serial handling. (I grabbed it from an example and modified it for my uses).
I started by changing the UART task to a more generic task. I changed uart_recvTask to taskHandler. Then I just call an os_event_post with the action I want taken. This allows the system to decide when to start the action. Displaying the menu and other tasks will generally happen faster this way.
As soon as I tried to do anything with GPIO16, I got lots of reboots. It seems that the problems I was having with the Voltage boost circuit may have actually been GPIO16 problems. I have moved the control pin from GPIO16 to GPIO13 for enabling the voltage boost circuit. With GPIO13 connected to the base of Q4 to enable/disable the boost circuit, the firmware booted and worked reliably. After that I changed the filter resistor back to 10 Ohms as I had originally specified. And… It didn’t boot.
I replaced the 10 Ohm resistor with a 100 Ohm Resistor. Still wouldn’t boot. I found that if I could get Q4 turned off, then the system would boot and run reliably. As soon as I turned Q4 back on, the system would reboot and hang. So I tried adding a 100 μF between +BATT and GND to try to filter any electrical noise. It didn’t work.
I connected a bench power supply set at 3.3V to the boost circuit input, and I got it to partially work. I got 8 volts out of it for a few seconds. I reinserted the GPIO16 initialization functions and no problems when no power is connected to the boost circuit.
I added some code that allows me to increment or decrement the prescaler using + and – keys respectively. When I hit the – key when the prescaler was at 0 to get to 255, it would reboot. When I hit the + key to go from 99 to 100 it would reboot. So for now the prescaler is limited to the range of 0 to 99.
I am encouraged by getting the voltage on VPP higher than any supply voltage on the board. It appears that I need to create a separate ground plane just for the boost circuit. If I couple it to the main ground with a low value inductor, I might be able to eliminate the problems it has caused. I have uploaded the new version of the code. It still has very little commenting, however, I think it is cleaner and easier to read.