These are chat archives for esp8266/Arduino

31st
Jul 2016
Loial Otter
@LoialOtter_twitter
Jul 31 2016 06:25
Size of simple c program that copies things around flash and boots to one of them (eboot): 1384... size of a c program that compiles with wifi (hello world example): 244338... right... hmm...
Ivan Grokhotkov
@igrr
Jul 31 2016 06:31
@holgerlembke re flash size: if you want to write outside the bounds which are given at compilation time, you need to tweak flash size field of global flashchip structure, see tools/sdk/include/spi_flash.h.
But keep in mind that whenever you call any routine which changes WiFi persistent configuration, it will use the range [flashChip.chip_size - 3 * SPI_FLASH_SEC_SIZE; flashChip.chip_size) for storage.
so your runtime changes to flashChip.chip_size will affect where wifi config is saved
Loial Otter
@LoialOtter_twitter
Jul 31 2016 06:40
hmm... and a minimal ota with full core is 274072... that's pretty impressive if the sdk libraries take ~240k of that
and my solution - save a minimal ota firmware elsewhere on the flash (masked out with an adjustment to the ld script) which eboot can copy in place if the firmware goes into a boot loop more than 'x' number of times in a row
xbary
@xbary
Jul 31 2016 13:36
Hey
Is it possible to do so showed that the IDE after compiling unless the changed usage of RAM and flash? eg.
Program size: 456 461 bytes (used 48% of a 958 448 byte maximum) (8,75 secs) [+1422]
Minimum Memory Usage: 52368 bytes (64% of a 81920 byte maximum) [+234]
I use Visual Micro
ZenHoop
@ZenHoop
Jul 31 2016 14:27
Can anyone tell me why I can easily connect to my modules some times and other times I get can't connect to this network? I have changed channels twice from 1 to 11 then to 6. I have also been updating my router to use what ever channel I have chosen for my chips. I have made sure to clear saved networks, disabled and re-enabled my adapter before trying to reconnect.
Me No Dev
@me-no-dev
Jul 31 2016 16:13
@holgerlembke @mozgy esp8266/Arduino#2351 is my attempt at 8 and 16MB support
Mehrdad K
@mkeyno
Jul 31 2016 18:51
hi All,I have to use while(1) instruction to read the serial input in certain of time , the serial reading speed set to 9600, and I think it'll gotta take while , I've got no error but while my loop may took more than 4 ms ,is it wisdom to put yield() inside the while(1) to prevent any probably wifi stack choking ?
Martin Ayotte
@martinayotte
Jul 31 2016 18:57
Yes ! but if you wish to have cleaner code, there are many ways where you can avoid having a while() and leaving the loop() has often as possible.
Mehrdad K
@mkeyno
Jul 31 2016 18:59
@martinayotte I have to send AT command and read serial SIM module in certain of time in loop() function , can you elaborate what approach would be best ?
following is the code currently I use
int sendCmdAndWaitForResp(const char* cmd, const char *resp, unsigned timeout)
{
 SIM.write(cmd);
// Serial.println(cmd);
int len = strlen(resp);
    byte sum=0,Location=0;
    unsigned long timerStart,timerEnd;
    timerStart = millis();    
    while(1) {
        if(SIM.available()) {
                        char c = SIM.read();
                        // Serial.write(c);
                        if(c<32) SIM_BUFF+='_';
                        else     SIM_BUFF+=c;
                        Location++;
                        sum = (c==resp[sum]) ? sum+1 : 0;
                        if(sum == len) break;
                      }
        timerEnd = millis();
        if(timerEnd - timerStart > 1000 * timeout) return 0; 
      }
    while(SIM.available())    SIM.read(); 
    return Location-len+1;  
}
Martin Ayotte
@martinayotte
Jul 31 2016 19:05
I would separate the handling of Send and the Response in 2 tasks. I presume that responses have some delimitter such CR or CRLF, accumulate the characters with while(Serial.available()) and process response only when the CRLF arrives. So, when responses is not yet completed, you simple leaving the loop()
Mehrdad K
@mkeyno
Jul 31 2016 19:09
is it possible in your approach , may loose some responds while I'm doing other stuff in loop()?
Martin Ayotte
@martinayotte
Jul 31 2016 19:42
Serial at 9600baud, meaning 960 chars/sec, leaving you plenty of time to do something else, especially if those other tasks are not blocking too.
Also, I think in the SDK layer, UART is using FIFO, although I don't know a big it is.
Mehrdad K
@mkeyno
Jul 31 2016 19:46
that's why I choose low speed such as 9600, and as serial is interrupt driven I was hopping no mess with wifi stack
Martin Ayotte
@martinayotte
Jul 31 2016 19:48
I was wrong : the FIFO seems to be handle in esp8266/2.3.0/cores/esp8266/uart.* with 128 bytes.
Mehrdad K
@mkeyno
Jul 31 2016 19:50
actually I'm using software serial for reading module and set its buffer to 256
Martin Ayotte
@martinayotte
Jul 31 2016 19:52
With SoftwareSerial, you have more chance to get troubles with the WiFi stack. But maybe it can still work.
Mehrdad K
@mkeyno
Jul 31 2016 19:53
actually I have , sometimes my module reset or my websocket connection severed
Martin Ayotte
@martinayotte
Jul 31 2016 20:07
For the module resets, I'm not sure it is related.