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
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
//////////////////////////////////////////////////////////////////////////////////////////////
Tags:
Boa tarde MP, (se não gosta que te chame pelas iniciais, avise),
Não cole sketch no corpo do sketch.
RV mineirin
Ok, sem problema sobre as iniciais, e obrigado pela sugestão de sketch!
Vou editar upar o arquivo
Bom dia,
Sugiro que estude isso:
https://randomnerdtutorials.com/interrupts-timers-esp8266-arduino-i...
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);
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por