[R E S O L V I D O ] Placa Genérica D1 com ESP8266WiFi

Estou tentando enviar para um banco de dados a vazão de um sensor YF-S201, a comunicação com o servidor mas o Mysql esta rodando liso, sem problemas, porem quando tento jogar a leitura do sensor YF-S201 ate mesmo com um código simples me da erro

Joguei este código de exemplo 

YF-S201.ino

O resultado e este no monitor Serial

//////////////////////////////////////////////////////////////////////////////////////////////

>>>stack>>>

ctx: cont
sp: 3ffffef0 end: 3fffffc0 offset: 0000
3ffffef0: feefeffe 3ffefcec 0000010c 40100dec
3fffff00: 000000fe 00000000 00000000 00000000
3fffff10: 00000000 00000000 00000000 00ff0000
3fffff20: 5ffffe00 5ffffe00 00000000 00000000
3fffff30: 00000001 00000000 3ffe84cc 402021ce
3fffff40: 401004b2 00000001 3ffee3a4 402021e0
3fffff50: 00000000 00000001 3ffe84cc 402026f5
3fffff60: 00000000 feefeffe feefeffe feefeffe
3fffff70: feefeffe feefeffe feefeffe 3ffee40c
3fffff80: 3fffdad0 00000000 3ffe84cc 402027a4
3fffff90: 3fffdad0 00000000 3ffe84cc 40201089
3fffffa0: feefeffe feefeffe 3ffee3cc 40201ddc
3fffffb0: feefeffe feefeffe 3ffe84e4 401010a9
<stack/p>

--------------- CUT HERE FOR EXCEPTION DECODER ---------------
?⸮܆⸮⸮D⸮⸮ISR not in IRAM!

User exception (panic/abort/assert)
--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Abort called

//////////////////////////////////////////////////////////////////////////////////////////////

Exibições: 78

Responder esta

Respostas a este tópico

Boa tarde MP, (se não gosta que te chame pelas iniciais, avise),

Não cole sketch no corpo do sketch.

Por favor leia: 

Sugestão

RV mineirin

Ok, sem problema sobre as iniciais, e obrigado pela sugestão de sketch!

Vou editar upar o arquivo

Bom dia MP,

obrigado por fazer o que sugeri.

Os ESPs (8266, e 32)  tem um formato da função de interrupt um pouco diferente.

No arduino pode usar : void flow () // Interrupt function 

mas nos ESPs precisa de " ICACHE_RAM_ATTR " antes do nome da função, ficando assim:

void ICACHE_RAM_ATTR flow () // Interrupt function

testa com esta modificação e depois conta o resultado pra gente.

Obs: não entendi o motivo do uso desta linha neste seu sketch:   "  sei(); // Enable interrupts  " ,

pois ao definir o interrupt ele já fica enable.

RV mineirin

Opa, obrigado desculpe a demora, acabei de testar aqui com a sua ajuda (ICACHE_RAM_ATTR flow ()), deu certo o erro parou, so não esta lendo a saída do sensor so esta aparecendo 0 L/hour

Bom dia MP, 

os ESPs tem uma forma diferente de tratar os interrupts.

No arduino UNO/mini por exemplo só 2 pinos manuseio tem interrupt.

(não é bem assim mas considerar assim kk).

E eles são os pinos 2 e 3 definido como interrupt 0 e 1.

Mas nos ESPs todo pino tem manuseio de interrupt.

Mas vc tem que indicar na chamada o numero do pino.

Se estiver usando o pino 2 tem que escrever o numero 2:

    attachInterrupt(2, flow, RISING); // Setup Interrupt

Minha recomendação é que se vc puder não use o pino 2, pois ele faz parte da rotina de boot,

e se estiver em LOW não vai dar boot no ESP.

Por exemplo, se for possível use o 4.

unsigned char flowsensor = 4;            // Sensor Input

attachInterrupt(4, flow, RISING);        // Setup Interrupt

e comente esta linha.  Acho que ela neste caso é desnecessária.

//sei(); // Enable interrupts

Veja a tabela de BOOT:

GPIO15   GPIO0   GPIO2      Mode   Description

   L            L            H         UART   Download code from UART

   L            H            H         Flash   Boot from SPI Flash

   H           x             x         SDIO    Boot from SD-card

Depois conta o resultado

RV mineirin

Deu certo agora, coloquei dentro do void setup() 

attachInterrupt(digitalPinToInterrupt(4), flow, RISING);

RSS

© 2021   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço