Defekta ESP8266, zombie efter deep sleep

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JanErik
Inlägg: 3184
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Defekta ESP8266, zombie efter deep sleep

Inlägg av JanErik »

Dessa cirkulerar på de vanliga marknadsplatserna och finns många diskussioner på andra forum.
Är det nån som råkat ut för dem?

Jag har två här, köpta i höstas, ESP-07S. Samma remsa så föga förvånande att de båda är defekta.

Problemet är alltså, mikrokontrollern ska normalt efter deepsleep dra GPIO16 låg, som då ska vara kopplad till Reset för att väcka den.

Så långt funkar det på dessa. Men den kräver en dubbeldipp för att vakna, vilket de fungerade inte kräver.

Ett annat kännetecken är att GPIO0 pulsar 26MHz efter att den skulle vaknat.

Beställt tre nya nu, men ponera att dessa också är defekta. Vad ska man göra för workaround?
Kunde man få ihop en högimpedant transistorkrets som ger en andra puls, nån sorts vippa?
Alternativt dra in pulståget från GPIO0 genom en transistor till reset?
Finns ju ett utbud av "resetkretsar", finns det nån som skulle ge dubbla pulser?
En AtTiny eller motsvarande i deepsleep som vaknar när input går låg och ger två pulser ut?
Akai
Inlägg: 1633
Blev medlem: 21 oktober 2016, 21:14:49
Ort: Västmanland, Norra

Re: Defekta ESP8266, zombie efter deep sleep

Inlägg av Akai »

Använder ESP32 modul i en produkt på jobbet, där har vi problem med att vissa individer inte vaknar upp efter flash. De kan sen vakna slumpmässigt om ström bryts och återkopplas. Reset hjälper inte. Omprogrammering hjälper inte.

Jag har inte lagt jättemycket krut på dem utan bara bytt modul på de enheter som inte vill vara med.

Det är säkert inte samma fel.. men ändå.
JanErik
Inlägg: 3184
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: Defekta ESP8266, zombie efter deep sleep

Inlägg av JanErik »

ESP32 har ju detta internt, behöver ingen jumper mellan GPIO och reset.
JanErik
Inlägg: 3184
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: Defekta ESP8266, zombie efter deep sleep

Inlägg av JanErik »

Har testat lite nu med en annan ESP8266 mellan GPIO16 och Reset.
När dess input-pin från zombiens GPIO16 går låg ger dess output-pin två dippar till zombiens Reset.
1ms dip verkar räcka MEN det måste vara 50ms mellan första och andra dip. Det försvårar lite alla analoga kopplingar.
JanErik
Inlägg: 3184
Blev medlem: 11 februari 2008, 17:15:58
Ort: Vasa, Finland

Re: Defekta ESP8266, zombie efter deep sleep

Inlägg av JanErik »

Denna något bisarra och okommenterade kod från https://github.com/esp8266/Arduino/issues/6318 verkar fungera,

Kod: Markera allt

static uint32 *rtc = (uint32 *)0x60000700;

void nk_deepsleep(uint32 time_us) {
  rtc[0] = 0x30;
  rtc[1] = rtc[7] + 5;
  rtc[3] = 0x10010;
  rtc[4] = 0;
  rtc[6] = 8;
  rtc[17] = 4;
  rtc[2] = 1 << 20;
  ets_delay_us(10);
  rtc[0] &= 0xFCF;
  rtc[0] = 0;
  rtc[1] = rtc[7] + (45 * (time_us >> 8));
  rtc[3] = 0x640C8;
  rtc[6] = 0x18;
  rtc[16] = 0x7F;
  rtc[17] = 0x20;
  rtc[39] = 0x11;
  rtc[40] = 0x03;
  rtc[2] = 1 << 20;
  __asm volatile("waiti 0");
}

// nk_deepsleep(300*1000000); //300 sec
Även om strömmen är runt 30 uA mot 22 uA på ESP.DeepSleep().

Har dock fått en fungerande nu.

Har också ett par ATTiny13 påväg som jag ska pröva, gjort en fungerande resetter med en DigiSpark, ATTiny85.
Skriv svar