Например TDA7294

Форум РадиоКот • Просмотр темы - ESP8266 временами вечный ребут
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс июн 15, 2025 03:23:33

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср фев 19, 2020 22:41:26 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 545
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Всем привет!
Имеется на руках NodeMCU. Программирую в среде Ардуино. Вот весь код:
Спойлер
Код:
//
// Libraries needed:
//  Time.h & TimeLib.h:  https://github.com/PaulStoffregen/Time
//  Timezone.h: https://github.com/JChristensen/Timezone
//  SSD1306.h & SSD1306Wire.h:  https://github.com/squix78/esp8266-oled-ssd1306
//  NTPClient.h: https://github.com/arduino-libraries/NTPClient
//  ESP8266WiFi.h & WifiUDP.h: https://github.com/ekstrand/ESP8266wifi
//

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <String.h>
#include <epd.h>
#include "DHT.h"
#include <Ticker.h>
#include  <stdio.h>
#include "string.h"

// Define NTP properties
#define NTP_OFFSET   60 * 60      // In seconds
#define NTP_INTERVAL 60 * 1000    // In miliseconds
#define NTP_ADDRESS  "ua.pool.ntp.org"  // change this to whatever pool is closest (see ntp.org)

#define DHTPIN 13
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

DHT dht(DHTPIN, DHTTYPE);

Ticker ClockTimer;


#define ssid "DIR-615"              // insert your own ssid
#define pass "HomeMade"         // and password

#define mqtt_server  "hairdresser.cloudmqtt.com"   // Имя сервера MQTT
#define mqtt_port    18608                         // Порт для подключения к серверу MQTT
#define mqtt_user    "user"                    // Логин от сервер
#define mqtt_pass    "pass"                // Пароль от сервера

byte ss = 0;
byte mm = 0;
byte hh = 0;
byte tu = 0;
float Hum = 0.0;
float Temp = 0.0;
char str_temp[6];
float hic = 0.0;
byte d1 = 1;
byte d2 = 1;
byte d3 = 1;
byte d4 = 20;
//const char * days[] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"} ;
//const char * months[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"} ;
//const byte monthsCodes[] = {1, 4, 4, 0, 2, 5, 0, 3, 6, 1, 4, 6};
float Voltage = 0.0;
boolean DisplayUpdate = true;
boolean WIFITimeUpdate = true;
boolean WiFiConected = false;
boolean MQTTConected = false;
boolean epdStopmode = false;
byte epdStopmodeCount = 0;

byte m1;
byte h1;
byte d21 = 1;
byte d31 = 1;

float WStationVoltage = 0.0;
char DateString[] = "00.00.0000";
char TimeString[] = "00.00.00";
 

#define wake_up 14

char Buffer[] = "";

void timerIsr()
{
    if (epdStopmode){
        epdStopmodeCount++;
        if (epdStopmodeCount > 1){
            epdStopmodeCount = 0;
            epdStopmode = false;
            epd_enter_stopmode();
        }
    }
    ss++;                           // Seconds
    if (ss > 59){
        ss = 0;
        mm++;                       // Minutes
        DisplayUpdate = true;
        if (mm > 59){
            mm = 0;
            hh++;                   // Hours
            if (hh > 23){
                hh = 0;
                d1++;               // Day of week
                d2++;               // Day of month
                //d3++;               // Month
                if (d1 > 6) d1 = 0;
                if (d2 > 31) d2 = 0;
                if (d3 > 11) d3 = 0;
            }
            tu++;
            if (tu > 20){            // Pause update via WiFi (*hours)
                tu = 0;
                WIFITimeUpdate = true;
            }
        }
    }
}

void callback(const MQTT::Publish& pub)     // Функция получения данных от сервера
{
    Serial.print(pub.topic());                // выводим в сериал порт название топика
    Serial.print(" => ");
    Serial.println(pub.payload_string());     // выводим в сериал порт значение полученных данных
    String payload = pub.payload_string();
   
    if(String(pub.topic()) == "WStation/Battery")    //  получаем данные из топика о напряжении аккумулятора
    {
        WStationVoltage = payload.toFloat();               //  преобразуем полученные данные в тип integer
    }
   
    if(String(pub.topic()) == "WStation/Date")      //  получаем данные из топика Даты
    {
        payload.toCharArray(DateString, 11);
    }
   
    if(String(pub.topic()) == "WStation/Time")      // получаем данные из топика Времени
    {
        //TimeString = payload;
        payload.toCharArray(TimeString, 9);
    }
}

WiFiClient wclient;     
PubSubClient client(wclient, mqtt_server, mqtt_port);

void setup ()
{
    //Serial.begin(115200); // most ESP-01&#39;s use 115200 but this could vary
                            // Инициализация Serial есть в библиотеке дисплея - epd.h

    pinMode(2, OUTPUT);
   
   
    epd_init();
    pinMode(wake_up, OUTPUT);
    wakeup();
    epd_set_memory(MEM_TF);
    delay(1000);
   
    epd_clear();
    epd_set_color(BLACK, WHITE);
    epd_set_en_font(ASCII64);

    sprintf(Buffer,"Connecting to:  %s . . .", ssid);
    epd_disp_string(Buffer, 0, 0);
    epd_udpate();
   
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
        d31++;
        if (d31 > 100){
            break;
        }
       
    }
    d31=1;
   
    epd_disp_string("Connected.", 0, 80);
    epd_disp_string("Connecting to: MQTT...", 0, 160);
    epd_udpate();
    Serial.println("");
    Serial.print("Connected to WiFi at ");
    Serial.print(WiFi.localIP());
    Serial.println("");
   
    ClockTimer.attach(1, timerIsr);
    dht.begin();
    delay(2000);
    epd_clear();

    digitalWrite(2, HIGH);
}

void loop()
{
    WiFiupd();
   
    if (DisplayUpdate){
        DisplayUpdate = false;
        wakeup();
       
        epd_disp_bitmap("FON1.BMP", 0, 0);
       
        if (WiFiConected){
            epd_disp_bitmap("WON.BMP", 582, 0);     // выводим картинку подключенного WiFi
            if (MQTTConected){
                epd_disp_bitmap("MQON.BMP", 0, 136);     // выводим картинку подключенного WiFi
            }else{
                epd_disp_bitmap("MQOF.BMP", 0, 136);     // выводим картинку подключенного WiFi
            }
        }else{
            epd_disp_bitmap("WOFF.BMP", 582, 0);        // Выводим кортинку отключенного WiFi с переподключением
            epd_disp_bitmap("MQOF.BMP", 0, 136);     // выводим картинку подключенного WiFi
        }
       
        drawWStationData();
        yield();
        drawTime();
        yield();
        sonsorDHT();
        yield();
        drawBattery();

        yield();
        epd_set_color(DARK_GRAY, WHITE);
        epd_set_en_font(ASCII32);
        sprintf(Buffer,"%02d.%02d  %02d:%02d", d21, d31+1, h1, m1);
        epd_disp_string(Buffer, 25, 320);
        //sprintf(Buffer,"%02d.%02d", d21, d31);
        //epd_disp_string(Buffer, 30, 320);
        epd_set_color(BLACK, WHITE);
        epd_set_en_font(ASCII64);

        epd_udpate();
        epdStopmode = true;
       
    }
}

void drawWStationData(){
    yield();
    Serial.println("-1-");
    dtostrf(WStationVoltage, 4, 2, str_temp);
    sprintf(Buffer,"%s V", str_temp);       // напряжение на аккумуляторе погодной станции
    epd_disp_string(Buffer, 62, 35);
}

void wakeup()
{
    yield();
    digitalWrite(wake_up, LOW);
    delayMicroseconds(10);
    digitalWrite(wake_up, HIGH);
    delayMicroseconds(500);
    digitalWrite(wake_up, LOW);
    delay(10);
}

void sonsorDHT(){
    yield();
    Hum = dht.readHumidity();
    Temp = dht.readTemperature();
    //hic = dht.computeHeatIndex(Temp, Hum, false);

    if (isnan(Hum) || isnan(Temp)) {
        epd_disp_string("ERR", 265, 495);
        epd_disp_string("ERR", 565, 495);
    }else{
        dtostrf(Temp, 4, 1, str_temp);
        sprintf(Buffer,"%s", str_temp);
        epd_disp_string(Buffer, 265, 495);
       
        dtostrf(Hum, 4, 1, str_temp);
        sprintf(Buffer,"%s", str_temp);
        epd_disp_string(Buffer, 565, 495);
    }
}

void drawTime(){
    Date_Time();
   
    yield();
    m1 = mm;
    h1 = hh;
    d21 = d2;
    d31 = d3;

    /*epd_disp_string(days[d1-1], 317, 300);
    sprintf(Buffer,"%d", d2);
    epd_disp_string(Buffer, 649, 273);
    epd_set_en_font(ASCII32);
    epd_disp_string(months[d3-1], 622, 342);
    epd_set_en_font(ASCII64);
    */
    epd_disp_string(DateString, 360, 300);
   
    byte NunbH = hh / 10;
    byte NunbL = hh % 10;
    sprintf(Buffer,"%d.BMP", NunbH);
    epd_disp_bitmap(Buffer, 212, 84);
    sprintf(Buffer,"%d.BMP", NunbL);
    epd_disp_bitmap(Buffer, 345, 84);
   
    NunbH = mm / 10;
    NunbL = mm % 10;
    sprintf(Buffer,"%d.BMP", NunbH);
    epd_disp_bitmap(Buffer, 545, 84);
    sprintf(Buffer,"%d.BMP", NunbL);
    epd_disp_bitmap(Buffer, 679, 84);
}

void drawBattery(){
    yield();
    float sample = 0.0;
   
    // 3.3 = 1024

    for(int i=0;i< 50;i++)
    {
        sample = sample + analogRead(A0); //read the voltage from the divider circuit
        delay (2);
    }
    sample = sample / 50;
    Voltage = 1.5 * (sample * 3.3 / 1024.0);

   
    if (Voltage > 4.6){
        epd_disp_bitmap("BAT1.BMP", 681, 0);
    }else if (Voltage > 4.1){
        epd_disp_bitmap("BAT8.BMP", 681, 0);
    }else if (Voltage > 3.98){
        epd_disp_bitmap("BAT7.BMP", 681, 0);
    }else if (Voltage > 3.87){
        epd_disp_bitmap("BAT6.BMP", 681, 0);
    }else if (Voltage > 3.75){
        epd_disp_bitmap("BAT5.BMP", 681, 0);
    }else if (Voltage > 3.64){
        epd_disp_bitmap("BAT4.BMP", 681, 0);
    }else if (Voltage > 3.52){
        epd_disp_bitmap("BAT3.BMP", 681, 0);
    }else if (Voltage > 3.41){
        epd_disp_bitmap("BAT2.BMP", 681, 0);
    }else{
       
        epd_clear();                            // Выключение
        epd_udpate();
        delay(2000);
        epd_disp_bitmap("BATLOW.BMP", 0, 0);
        epd_set_color(GRAY, WHITE);
        epd_set_en_font(ASCII32);
        sprintf(Buffer,"Shutdown time: %02d.%02d  %02d:%02d", d2, d3+1, hh, mm);
        epd_disp_string(Buffer, 0, 0);
        sprintf(Buffer,"%02d.%02d  %02d:%02d", d21, d31+1, h1, m1);
        epd_disp_string(Buffer, 0, 40);
        epd_udpate();
        delay(2000);
        epd_enter_stopmode();
        delay(1000);
        ESP.deepSleep(0);
    }
}

void Date_Time(){
    yield();
    String myString;
    //char myChar;    // = DateString.charAt(0);
    //int myNum;      // = String(myChar).toInt();

    /*if (myNum > 0){
        myString = DateString.substring(0,2);
        d2 = myString.toInt();
    }else{
        myChar = DateString.charAt(1);
        d2 = String(myChar).toInt();
    }

    myChar = DateString.charAt(3);
    myNum = String(myChar).toInt();
    if (myNum > 0){
        myString = DateString.substring(3,5);
        d3 = myString.toInt();
    }else{
        myChar = DateString.charAt(4);
        d3 = String(myChar).toInt();
    }

    myString = DateString.substring(8);
    d4 = myString.toInt();

    d1 = ((d2 + monthsCodes[d3-1] + ((6 + d4 + (d4/4))%7)) % 7)-1;   // https://lifehacker.ru/kakoj-den-nedeli/
    */
   
    char _el[3] ="";
    int myNum = String(TimeString[0]).toInt();
    if (myNum > 0){
        strncpy(_el,&TimeString[0],2);
        printf("%s",_el);
        hh = String(_el).toInt();
    }else{
        hh = String(TimeString[0]).toInt();
    }
    yield();

    myNum = String(TimeString[3]).toInt();
    if (myNum > 0){
        //_el[3] ="";
        strncpy(_el,&TimeString[3],2);
        printf("%s",_el);
        mm = String(_el).toInt();
    }else{
        mm = String(TimeString[4]).toInt();
    }
}

void WiFiupd(){
    if (WiFi.status() != WL_CONNECTED) // attempt to connect to wifi again if disconnected
    {
        Serial.print("Connecting to ");
        Serial.print(ssid);
        Serial.println("...");
        WiFi.begin(ssid, pass);
        WiFiConected = false;
    }
    if (WiFi.status() == WL_CONNECTED) //Check WiFi connection status
    {
        WiFiConected = true;
        if (!client.connected()) {
            yield();
            Serial.println("Connecting to MQTT server");
            if (client.connect(MQTT::Connect("WStationDisplay")
                                 .set_auth(mqtt_user, mqtt_pass))) {
                Serial.println("Connected to MQTT server");
                client.set_callback(callback);
                client.subscribe("WStation/Time");                  // подписывааемся по топик времени
                client.subscribe("WStation/Battery");               // подписывааемся по топик с данными аккумулятора
                client.subscribe("WStation/Date");                  // подписывааемся по топик даты
               
                MQTTConected = true;
            } else {
                Serial.println("Could not connect to MQTT server");   
                MQTTConected = false;
            }
        }
        if (client.connected()){
            MQTTConected = true;
            yield();
            client.loop();
        }
    }
}


В целом, код работает, но бывают странные глюки. К ЕСП подключен E-Paper дисплей и датчик температуры и влажности DHT22. Больше никакой электроники нет. Устройство подключается по WiFi к MQTT серверу и получает оттуда данные. В коде серьезных изменений не делал, удалил ненужный вывод в сериал... И появились очень странные глюки:
1) При запуске программы идет подключение а WiFi, только после этого программа идет дальше:
Код:
    WiFi.begin(ssid, pass);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(500);
        Serial.print(".");
        d31++;
        if (d31 > 100){
            break;
        }
       
    }

то есть, подключение установлено. Дальше, в основном цикле программы первым вызывается функция на проверку подключения: WiFiupd(); Иногда это впадает в бесконечный цикл повторного подключения. Попробую пояснить. Подключение установлено (это видно на роутере), но все равно происходит бесконечная попытка подключения, которое, естественно, будет неудачным. Почему срабатывает условие
if (WiFi.status() != WL_CONNECTED)
для меня не понятно, ведь подключение уже есть....

второе:
При старте программа ловит ошибку и уходит в "вечный" ребут. После 5-20 перезагрузок программа все таки стартует, и работает как обычно. Пробовал на другой ESP - результат тот же. Проблема точно не в питании, так как я пробовал на "голой" ESP. с хорошим питанием. Да и осциллографом смотрел - стабильное и без пульсаций
Вот лог:
СпойлерException (9):
epc1=0x372e3835 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000005 depc=0x00000000

>>>stack>>>

ctx: sys
sp: 3fffed70 end: 3fffffb0 offset: 01a0
3fffef10: 40231c1c 3ffee5d4 3ffedf50 40207d4e
3fffef20: 60000600 3ffee5d4 3ffedf50 40231c29
3fffef30: 40231c6e 3fffdab0 00000000 3fffdcb0
3fffef40: 3ffedf68 3fffdad0 3ffee964 40205e13
3fffef50: 40000f49 40000f49 3fffdab0 40000f49
3fffef60: 40000e19 40001878 00000004 00000000
3fffef70: 3fffff10 aa55aa55 000000ab 401049d5
3fffef80: 401049db 00000004 00000000 5f3b002b
3fffef90: 4010000d de4cd58a eaf2637a e02954ea
3fffefa0: 402299b4 3fffef3c 4022996d 3fffff48
3fffefb0: 3fffffc0 00000000 00000000 feefeffe
3fffefc0: feefeffe feefeffe feefeffe feefeffe
3fffefd0: feefeffe feefeffe feefeffe feefeffe
3fffefe0: feefeffe feefeffe feefeffe feefeffe
3fffeff0: feefeffe feefeffe feefeffe feefeffe
3ffff000: feefeffe feefeffe feefeffe feefeffe
3ffff010: feefeffe feefeffe feefeffe feefeffe
3ffff020: feefeffe feefeffe feefeffe feefeffe
3ffff030: feefeffe feefeffe feefeffe feefeffe
3ffff040: feefeffe feefeffe feefeffe feefeffe
3ffff050: feefeffe feefeffe feefeffe feefeffe
3ffff060: feefeffe feefeffe feefeffe feefeffe
3ffff070: feefeffe feefeffe feefeffe feefeffe
3ffff080: feefeffe feefeffe feefeffe feefeffe
3ffff090: feefeffe feefeffe feefeffe feefeffe
3ffff0a0: feefeffe feefeffe feefeffe feefeffe
3ffff0b0: feefeffe feefeffe feefeffe feefeffe
3ffff0c0: feefeffe feefeffe feefeffe feefeffe
3ffff0d0: feefeffe feefeffe feefeffe feefeffe
3ffff0e0: feefeffe feefeffe feefeffe feefeffe
3ffff0f0: feefeffe feefeffe feefeffe feefeffe
3ffff100: feefeffe feefeffe feefeffe feefeffe
3ffff110: feefeffe feefeffe feefeffe feefeffe
3ffff120: feefeffe feefeffe feefeffe feefeffe
3ffff130: feefeffe feefeffe feefeffe feefeffe
3ffff140: feefeffe feefeffe feefeffe feefeffe
3ffff150: feefeffe feefeffe feefeffe feefeffe
3ffff160: feefeffe feefeffe feefeffe feefeffe
3ffff170: feefeffe feefeffe feefeffe feefeffe
3ffff180: feefeffe feefeffe feefeffe feefeffe
3ffff190: feefeffe feefeffe feefeffe feefeffe
3ffff1a0: feefeffe feefeffe feefeffe feefeffe
3ffff1b0: feefeffe feefeffe feefeffe feefeffe
3ffff1c0: feefeffe feefeffe feefeffe feefeffe
3ffff1d0: feefeffe feefeffe feefeffe feefeffe
3ffff1e0: feefeffe feefeffe feefeffe feefeffe
3ffff1f0: feefeffe feefeffe feefeffe feefeffe
3ffff200: feefeffe feefeffe feefeffe feefeffe
3ffff210: feefeffe feefeffe feefeffe feefeffe
3ffff220: feefeffe feefeffe feefeffe feefeffe
3ffff230: feefeffe feefeffe feefeffe feefeffe
3ffff240: feefeffe feefeffe feefeffe feefeffe
3ffff250: feefeffe feefeffe feefeffe feefeffe
3ffff260: feefeffe feefeffe feefeffe feefeffe
3ffff270: feefeffe feefeffe feefeffe feefeffe
3ffff280: feefeffe feefeffe feefeffe feefeffe
3ffff290: feefeffe feefeffe feefeffe feefeffe
3ffff2a0: feefeffe feefeffe feefeffe feefeffe
3ffff2b0: feefeffe feefeffe feefeffe feefeffe
3ffff2c0: feefeffe feefeffe feefeffe feefeffe
3ffff2d0: feefeffe feefeffe feefeffe feefeffe
3ffff2e0: feefeffe feefeffe feefeffe feefeffe
3ffff2f0: feefeffe feefeffe feefeffe feefeffe
3ffff300: feefeffe feefeffe feefeffe feefeffe
3ffff310: feefeffe feefeffe feefeffe feefeffe
3ffff320: feefeffe feefeffe feefeffe feefeffe
3ffff330: feefeffe feefeffe feefeffe feefeffe
3ffff340: feefeffe feefeffe feefeffe feefeffe
3ffff350: feefeffe feefeffe feefeffe feefeffe
3ffff360: feefeffe feefeffe feefeffe feefeffe
3ffff370: feefeffe feefeffe feefeffe feefeffe
3ffff380: feefeffe feefeffe feefeffe feefeffe
3ffff390: feefeffe feefeffe feefeffe feefeffe
3ffff3a0: feefeffe feefeffe feefeffe feefeffe
3ffff3b0: feefeffe feefeffe feefeffe feefeffe
3ffff3c0: feefeffe feefeffe feefeffe feefeffe
3ffff3d0: feefeffe feefeffe feefeffe feefeffe
3ffff3e0: feefeffe feefeffe feefeffe feefeffe
3ffff3f0: feefeffe feefeffe feefeffe feefeffe
3ffff400: feefeffe feefeffe feefeffe feefeffe
3ffff410: feefeffe feefeffe feefeffe feefeffe
3ffff420: feefeffe feefeffe feefeffe feefeffe
3ffff430: feefeffe feefeffe feefeffe feefeffe
3ffff440: feefeffe feefeffe feefeffe feefeffe
3ffff450: feefeffe feefeffe feefeffe feefeffe
3ffff460: feefeffe feefeffe feefeffe feefeffe
3ffff470: feefeffe feefeffe feefeffe feefeffe
3ffff480: feefeffe feefeffe feefeffe feefeffe
3ffff490: feefeffe feefeffe feefeffe feefeffe
3ffff4a0: feefeffe feefeffe feefeffe feefeffe
3ffff4b0: feefeffe feefeffe feefeffe feefeffe
3ffff4c0: feefeffe feefeffe feefeffe feefeffe
3ffff4d0: feefeffe feefeffe feefeffe feefeffe
3ffff4e0: feefeffe feefeffe feefeffe feefeffe
3ffff4f0: feefeffe feefeffe feefeffe feefeffe
3ffff500: feefeffe feefeffe feefeffe feefeffe
3ffff510: feefeffe feefeffe feefeffe feefeffe
3ffff520: feefeffe feefeffe feefeffe feefeffe
3ffff530: feefeffe feefeffe feefeffe feefeffe
3ffff540: feefeffe feefeffe feefeffe feefeffe
3ffff550: feefeffe feefeffe feefeffe feefeffe
3ffff560: feefeffe feefeffe feefeffe feefeffe
3ffff570: feefeffe feefeffe feefeffe feefeffe
3ffff580: feefeffe feefeffe feefeffe feefeffe
3ffff590: feefeffe feefeffe feefeffe feefeffe
3ffff5a0: feefeffe feefeffe feefeffe feefeffe
3ffff5b0: feefeffe feefeffe feefeffe feefeffe
3ffff5c0: feefeffe feefeffe feefeffe feefeffe
3ffff5d0: feefeffe feefeffe feefeffe feefeffe
3ffff5e0: feefeffe feefeffe feefeffe feefeffe
3ffff5f0: feefeffe feefeffe feefeffe feefeffe
3ffff600: feefeffe feefeffe feefeffe feefeffe
3ffff610: feefeffe feefeffe feefeffe feefeffe
3ffff620: feefeffe feefeffe feefeffe feefeffe
3ffff630: feefeffe feefeffe feefeffe feefeffe
3ffff640: feefeffe feefeffe feefeffe feefeffe
3ffff650: feefeffe feefeffe feefeffe feefeffe
3ffff660: feefeffe feefeffe feefeffe feefeffe
3ffff670: feefeffe feefeffe feefeffe feefeffe
3ffff680: feefeffe feefeffe feefeffe feefeffe
3ffff690: feefeffe feefeffe feefeffe feefeffe
3ffff6a0: feefeffe feefeffe feefeffe feefeffe
3ffff6b0: feefeffe feefeffe feefeffe feefeffe
3ffff6c0: feefeffe feefeffe feefeffe feefeffe
3ffff6d0: feefeffe feefeffe feefeffe feefeffe
3ffff6e0: feefeffe feefeffe feefeffe feefeffe
3ffff6f0: feefeffe feefeffe feefeffe feefeffe
3ffff700: feefeffe feefeffe feefeffe feefeffe
3ffff710: feefeffe feefeffe feefeffe feefeffe
3ffff720: feefeffe feefeffe feefeffe feefeffe
3ffff730: feefeffe feefeffe feefeffe feefeffe
3ffff740: feefeffe feefeffe feefeffe feefeffe
3ffff750: feefeffe feefeffe feefeffe feefeffe
3ffff760: feefeffe feefeffe feefeffe feefeffe
3ffff770: feefeffe feefeffe feefeffe feefeffe
3ffff780: feefeffe feefeffe feefeffe feefeffe
3ffff790: feefeffe feefeffe feefeffe feefeffe
3ffff7a0: feefeffe feefeffe feefeffe feefeffe
3ffff7b0: feefeffe feefeffe feefeffe feefeffe
3ffff7c0: feefeffe feefeffe feefeffe feefeffe
3ffff7d0: feefeffe feefeffe feefeffe feefeffe
3ffff7e0: feefeffe feefeffe feefeffe feefeffe
3ffff7f0: feefeffe feefeffe feefeffe feefeffe
3ffff800: feefeffe feefeffe feefeffe feefeffe
3ffff810: feefeffe feefeffe feefeffe feefeffe
3ffff820: feefeffe feefeffe feefeffe feefeffe
3ffff830: feefeffe feefeffe feefeffe feefeffe
3ffff840: feefeffe feefeffe feefeffe feefeffe
3ffff850: feefeffe feefeffe feefeffe feefeffe
3ffff860: feefeffe feefeffe feefeffe feefeffe
3ffff870: feefeffe feefeffe feefeffe feefeffe
3ffff880: feefeffe feefeffe feefeffe feefeffe
3ffff890: feefeffe feefeffe feefeffe feefeffe
3ffff8a0: feefeffe feefeffe feefeffe feefeffe
3ffff8b0: feefeffe feefeffe feefeffe feefeffe
3ffff8c0: feefeffe feefeffe feefeffe feefeffe
3ffff8d0: feefeffe feefeffe feefeffe feefeffe
3ffff8e0: feefeffe feefeffe feefeffe feefeffe
3ffff8f0: feefeffe feefeffe feefeffe feefeffe
3ffff900: feefeffe feefeffe feefeffe feefeffe
3ffff910: feefeffe feefeffe feefeffe feefeffe
3ffff920: feefeffe feefeffe feefeffe feefeffe
3ffff930: feefeffe feefeffe feefeffe feefeffe
3ffff940: feefeffe feefeffe feefeffe feefeffe
3ffff950: feefeffe feefeffe feefeffe feefeffe
3ffff960: feefeffe feefeffe feefeffe feefeffe
3ffff970: feefeffe feefeffe feefeffe feefeffe
3ffff980: feefeffe feefeffe feefeffe feefeffe
3ffff990: feefeffe feefeffe feefeffe feefeffe
3ffff9a0: feefeffe feefeffe feefeffe feefeffe
3ffff9b0: feefeffe feefeffe feefeffe feefeffe
3ffff9c0: feefeffe feefeffe feefeffe feefeffe
3ffff9d0: feefeffe feefeffe feefeffe feefeffe
3ffff9e0: feefeffe feefeffe feefeffe feefeffe
3ffff9f0: feefeffe feefeffe feefeffe feefeffe
3ffffa00: feefeffe feefeffe feefeffe feefeffe
3ffffa10: feefeffe feefeffe feefeffe feefeffe
3ffffa20: feefeffe feefeffe feefeffe feefeffe
3ffffa30: feefeffe feefeffe feefeffe feefeffe
3ffffa40: feefeffe feefeffe feefeffe feefeffe
3ffffa50: feefeffe feefeffe feefeffe feefeffe
3ffffa60: feefeffe feefeffe feefeffe feefeffe
3ffffa70: feefeffe feefeffe feefeffe feefeffe
3ffffa80: feefeffe feefeffe feefeffe feefeffe
3ffffa90: feefeffe feefeffe feefeffe feefeffe
3ffffaa0: feefeffe feefeffe feefeffe feefeffe
3ffffab0: feefeffe feefeffe feefeffe feefeffe
3ffffac0: feefeffe feefeffe feefeffe feefeffe
3ffffad0: feefeffe feefeffe feefeffe feefeffe
3ffffae0: feefeffe feefeffe feefeffe feefeffe
3ffffaf0: feefeffe feefeffe feefeffe feefeffe
3ffffb00: feefeffe feefeffe feefeffe feefeffe
3ffffb10: feefeffe feefeffe feefeffe feefeffe
3ffffb20: feefeffe feefeffe feefeffe feefeffe
3ffffb30: feefeffe feefeffe feefeffe feefeffe
3ffffb40: feefeffe feefeffe feefeffe feefeffe
3ffffb50: feefeffe feefeffe 4022bc2f 00000001
3ffffb60: ffffffff 00000000 3ffe8d91 00000008
3ffffb70: 4022bc7e 3ffec3d8 3ffef06c 00000001
3ffffb80: 00000002 00000000 00000020 4010017c
3ffffb90: 00000005 00000005 00000002 40101624
3ffffba0: 3ffe8c42 4022ad3b 3ffec3d8 00000020
3ffffbb0: 00000000 4021e2e3 3ffed868 3ffef06c
3ffffbc0: 00000000 00000002 00000000 3ffec3d8
3ffffbd0: 3fff0222 40104f1f 3fff01ac 3ffeea2c
3ffffbe0: 00000005 00000000 00000020 4010017c
3ffffbf0: 3ffe8c42 4020f901 00000005 40101624
3ffffc00: 3ffe8c45 401048cf 3ffec6d0 4010017c
3ffffc10: 401021bb 3ffec6d0 00000000 00000000
3ffffc20: 00000024 004a252b 3ffed0e8 40102398
3ffffc30: 00000000 00000000 00000020 4010017c
3ffffc40: 00000024 004a252b 00000000 40101624
3ffffc50: 3ffe8c40 401048b7 3ffefec4 00000001
3ffffc60: 00000001 40103a92 3ffecdc0 40101624
3ffffc70: 00000000 00000000 0000001f 4010017c
3ffffc80: 3ffe94cc 00000000 3fffc228 40105175
3ffffc90: 4000050c 00000000 0000001f 4010017c
3ffffca0: 4000dcfe 00000030 00000010 ffffffff
3ffffcb0: 4000066d 004cb8bd 4bc6a7f0 0000004c
3ffffcc0: 00000000 00000000 00000000 fffffffe
3ffffcd0: ffffffff 3fffc6fc 00000001 004cb8bd
3ffffce0: 4bc6a7f0 004cb8bd 00000000 00000030
3ffffcf0: ffffffff 3fffc6fc 00000001 004c7b17
3ffffd00: 00000000 00000000 0000001f 4010017c
3ffffd10: 00000000 00000000 3fffc228 40105175
3ffffd20: 4000050c 00000000 0000000a 00000000
3ffffd30: 40204c44 00000030 00000013 ffffffff
3ffffd40: 40204c3a 0000002f 00000000 00000001
3ffffd50: 60000808 00000004 00000020 00000009
3ffffd60: 00000009 3fffc6fc 00000001 3ffee5e8
3ffffd70: 3fffff70 3fffff70 3ffee964 00000030
3ffffd80: 0000a000 3ffffe73 3ffffee0 4020e066
3ffffd90: 00000c30 3ffffe83 40209f79 00000001
3ffffda0: 00000000 4bc6a7f0 a76c8b43 00000000
3ffffdb0: 00000000 00000000 4bc6a7f0 00000000
3ffffdc0: 40105035 0017fecc 40100274 000013c8
3ffffdd0: 00000000 181fef1c 0017fe00 00000000
3ffffde0: 0016e001 0017fecc 3ffee9c4 00000000
3ffffdf0: 3ffedf50 3ffee9c4 00000001 3ffee5e8
3ffffe00: 00000000 00000000 3ffee5e8 40204b7d
3ffffe10: 401002cc 3ffee5e8 00000000 401002f5
3ffffe20: 3fffff70 3fffff68 3ffee5e8 40204c3a
3ffffe30: 0000004f 00000028 0000004e 00000029
3ffffe40: 00000054 00000029 00000054 00000029
3ffffe50: 00000054 00000029 00000054 00000029
3ffffe60: 00000054 00000075 00000054 00000027
3ffffe70: 0000006a 00000028 00000055 00000074
3ffffe80: 00000055 00000074 00000055 00000074
3ffffe90: 00000055 00000028 00000055 00000074
3ffffea0: 00000055 00000074 00000055 00000027
3ffffeb0: 0000006a 00000028 00000055 00000028
3ffffec0: 00000055 00000028 00000055 00000028
3ffffed0: 00000055 00000028 00000055 00000028
3ffffee0: 00000055 00000028 00000055 00000026
3ffffef0: 0000006a 00000075 00000054 00000075
3fffff00: 4023da25 00000004 00000000 00000075
3fffff10: 4023dccb 00000004 00000000 0000002b
3fffff20: 4023df00 00000004 00000000 4023718a
3fffff30: 401052b9 00181b32 3ffee9c4 00000000
3fffff40: 3ffedf50 3ffee9c4 00000002 3ffee9c4
3fffff50: 0000002a 3ffee964 40205e64 3fffefa0
3fffff60: 3ffee9c4 0000002a 3ffee964 40206676
3fffff70: 3ffee5e8 00000000 45e4b800 402014ff
3fffff80: 3fffdad0 00000000 00000001 3ffee964
3fffff90: 3fffdad0 00000000 00000001 40201cf8
3fffffa0: 3fffdad0 00000000 3ffee924 40205f7c
<<<stack<<<

ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1392, room 16
tail 0
chksum 0xd0
csum 0xd0
v3d128e5c
~ld


Добавлено after 3 hours 52 minutes 10 seconds:
Нашел одну странность. У меня есть еще одна ESP, которая шлет данные на MQTT сервер. Если код приемника (приведенный выше) запустить раньше чем передатчика (вторая ESP, которая шлет данные), то приемник уходит в вечный ребут, и выходит из него как только начинают приходить данные с MQTT сервера...
Такое чувство, что в коде идет попытка чтения несуществующих данных от MQTT...
Может вы увидите где ошибка?

Добавлено after 1 hour 8 minutes 12 seconds:
Код делает что хочет... И ведет себя совершенно странно.
я сделал условие на вызов функции только 1 раз:
Код:
    if (GetNewDateTimeData){
        GetNewDateTimeData = false;
        Date_Time();
    }

Но каждый раз, как только код доходит до этого участка, переменная GetNewDateTimeData оказывается "True", и опять вызывается функция Date_Time();....
Жаль нет смайлика бьющегося головой об стену....
Разрешение происходит телько при получении данных от MQTT:
Код:
void callback(const MQTT::Publish& pub)     // Функция получения данных от сервера
{
    Serial.print(pub.topic());                // выводим в сериал порт название топика
    Serial.print(" => ");
    Serial.println(pub.payload_string());     // выводим в сериал порт значение полученных данных
    String payload = pub.payload_string();
   
    if(String(pub.topic()) == "WStation/Battery")    //  получаем данные из топика о напряжении аккумулятора
    {
        WStationVoltage = payload.toFloat();               //  преобразуем полученные данные в тип integer
    }
   
    if(String(pub.topic()) == "WStation/Date")      //  получаем данные из топика Даты
    {
        payload.toCharArray(DateString, 11);
        GetNewDateTimeData = true;
        Serial.println("-3-");
    }
   
    if(String(pub.topic()) == "WStation/Time")      // получаем данные из топика Времени
    {
        //TimeString = payload;
        payload.toCharArray(TimeString, 9);
        GetNewDateTimeData = true;
        Serial.println("-2-");
    }
}

Но в сериал ничего не выводится, а значит переменная значения "True" не принимает... ТО КАКИМ ЖЕ ОБРАЗОМ ОНА СТАНОВИТСЯ "True" ПОСЛЕ ОБНУЛЕНИЯ????? Пол дня эти глюки вылавливаю...
То вообще программа вылетала просто при обращении к конкретной переменной.... Не смог это победить, пришлось переменную напрочь убрать :(

И памяти вроде хватает :( Компилятор выдает следующее:
СпойлерExecutable segment sizes:

IROM : 260592 - code in flash (default or ICACHE_FLASH_ATTR)
IRAM : 27720 / 32768 - code in IRAM (ICACHE_RAM_ATTR, ISRs...)
DATA : 1296 ) - initialized variables (global, static) in RAM/HEAP
RODATA : 1272 ) / 81920 - constants (global, static) in RAM/HEAP
BSS : 25880 ) - zeroed variables (global, static) in RAM/HEAP

Скетч использует 290880 байт (27%) памяти устройства. Всего доступно 1044464 байт.
Глобальные переменные используют 28448 байт (34%) динамической памяти, оставляя 53472 байт для локальных переменных. Максимум: 81920 байт.
esptool.py v2.8
Serial port COM35
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: b4:e6:2d:23:37:0a
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 295040 bytes to 213055...

Writing at 0x00000000... (7 %)
...
Writing at 0x00034000... (100 %)
Wrote 295040 bytes (213055 compressed) at 0x00000000 in 19.0 seconds (effective 124.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт фев 20, 2020 11:19:50 
Вымогатель припоя

Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06
Сообщений: 545
Откуда: Николаев / Украина
Рейтинг сообщения: 0
Вот один из примеров (Картинка кликабельна):

Изображение

Это лог старта программы. "Кракозюбры" - это команды для дисплея, он работает через Сериал, не обращайте на них внимания.
Красным обведена переменная GetNewDateTimeData, которая объявляется в начале программы:
Код:
volatile boolean GetNewDateTimeData = 0;

Но в сериал видно что переменная равна сначала 54, а при повторном цикле - 50, хотя оба раза переменная обнулялась в цикле...

Второе: Синим обведена переменная WStationVoltage, которая тоже объявлена в начале программы:
Код:
float WStationVoltage = 0.0;

Но, как видно, вначале эта переменная равна ХЗ чему... а точнее: 18465454836807817073918158.71. Потом, по ходу программы "исправляется"....
Вот что это за глюки???

_________________
Сделать своими руками всегда интересней чем просто купить и пользоваться


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 10:22:17 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
У меня какая-то фигня с ESP8266-01.
ESP обменивается данными с МК по UART. Если нагрузить линию Tx ESP 5кОм (просто в цепи оно есть,), то при включении ESP не запускается, на линии TX устанавливается уровень около 0.2-0.3В.

Если убрать нагрузку, то ESP запускается и идет нормальный обмен.

Если подключить этот резистор на TX уже на запущенный ESP, то сигнал остается нормальной амплитуды и обмен идет.

Другого ESP у меня нет. Может кто-то что-то прокомментировать по этому поводу или проверить такое на своем. Спасибо.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 11:57:00 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 3
Z_h_e, почитайте процедуру запуска ESP, выбор источника загрузки и роль GPIO2 (TX) в этом. Хотя по картинке всё понятно (внимание в нижний правый угол, где комментарии):
Изображение

Добавлено after 11 minutes 17 seconds:
Для ТС ответы с запозданием:
Цитата:
для меня не понятно, ведь подключение уже есть....

Нет, значит его нет. То, что вы видите подключенное ус-во на роутере - мало о чем говорит. Роутер не может знать, если ус-во пропало из сети. Или если установка соединения не была завершена до конца. Раз ЕСП висит в этом цикле, значит она считает, что она не подключена.
А по остальному - среди этой кучи мусора никто не разберется. Как вам уже ответили на другом форуме - разбивайте программу на простые участки и проверяйте их.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 12:28:48 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ESP передает данные по MQTT, что то сляпал побыстрому. Так не хочется глубоко изучать и видимо придется :).
GPIO2 у меня в воздухе (на нем светодиод распаянный на плате), а TX используется на GPIO01.

Цитата:
By default, UART0 outputs some printed information when the device is powered on and booting up. The
baud rate of the printed information is relevant to the frequency of the external crystal oscillator. If the
frequency of the crystal oscillator is 40 MHz, then the baud rate for printing is 115200; if the frequency of
the crystal oscillator is 26 MHz, then the baud rate for printing is 74880. If the printed information exerts
any influence on the functionality of the device, it is suggested to block the printing during the power-on
period by changing (U0TXD, U0RXD) to (MTDO, MTCK)

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 12:45:36 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Z_h_e, хмм... почему-то подумал что GPIO2 для TX используете, прям симптомы как если его к нулю притянуть - не грузится ESPшка тогда с флэшки как надо.
А GPIO0 где у вас? Его тоже надо к Vcc притянуть или в воздухе оставить.
Изображение

RST, CHIP_EN попробуйте также подтянуть к 3.3В подтяжкой. Емнип на ESP-01 они не подтянуты на платке, а внутренняя подтяжка очень слабенькая.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 12:56:50 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
NStorm писал(а):
почему-то подумал что GPIO2 для TX используете,
Потому что мне следовало бы уточнить сразу.
NStorm писал(а):
А GPIO0 где у вас?
В воздухе, но и садил накоротко на Vcc.

В принципе не проблема эти 5кОм убрать, но мне хочется понять где собака порылась. Как-то сомнительно, что именно мой ESP так себя ведет.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 14:28:14 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1466
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15033
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Не влазя в дебри даташитов - схемка wemos D1 mini:
Вложение:
sch_d1_mini_v3.0.0.pdf [56.7 KiB]
Скачиваний: 147

Кормил только от 3,3 вольтового акумулятора...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 18:47:38 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Нашел человека, который попробует повторить подобное, может сегодня вечером. Мне кажется, что скорее всего повторится ситуация.

Добавлено after 4 hours 3 minutes 29 seconds:
На другом ESP8266-01 такая же фигня.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 19:34:23 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1466
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15033
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У меня нечто подобное с wemos D1 mini при питании исключительно от USB шнурка происходит.
Постоянный перезапуск - даже драйвер для СН340 определиться не успевает.
Лечение оказалось достаточно простым - подцепил акумулятор к питанию 3,3 вольта...
:hunger: :hunger:
Собственно при передаче там довольно большой пиковый ток - возможно стабилизатор или чего еще не справляются с задачей...
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 19:40:23 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
я думал про питание. Днем осцил не мог приволочь, может ща гляну. Но крайне маловероятно. Но скорее всего в какую-нибудь "мелочь" и найду.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 19:46:37 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1466
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15033
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Если по схеме на общей платке имеется стабилизатор и/или многоразовый предохранитель в СМД исполнении - вполне возможно...
Надо в инете схемку достать на Вашу зверюгу - тогда чего и прояснится.
На моей d1mini стоит железна коробушка в качестве ESP - остальное как на той схемке, что я выше положил.
И страшно не любит дерганья лапок кои для спецнужд выделяются. Уже нарвался при простейшем блинке на сработку собаки!
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 19:49:32 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Тут похоже больше что входит типа в какой-то другой режим. Ладно. Надо сделать серию научных опытов и ряд ненаучных и дальше видно будет.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 20:56:54 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
А если попробовать GPIO0 и 2 притянуть внешней подтяжкой 4.7-10К к Vcc и проверить аналогичное подключение на TX0 - также будет вести себя или нормально начнет работать?
Где-то у меня китайский флюс проводил сильнее внутренней подтяжки... ) Может дело и не в этом конечно, но так направление понятно будет - входит ли он в режим другой или нет, т.к. этими пинами это регулируется.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Ср мар 04, 2020 21:10:27 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я наверное так и не займусь сегодня. Флюс отмыл (явно в глаза бросался), подтяжку делал , но без резистора, напрямую. Даже пробовал прошить в этом странном режиме , проошиваться тоже не захотело.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт мар 05, 2020 00:03:00 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1466
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15033
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ГЫММ...
Вроде ничего особо и нету...
Вложение:
продукты-esp8266-wifi-module-esp-01_datasheet.pdf [854.23 KiB]
Скачиваний: 144

к чему бы прицарапаться...
:dont_know:
Кроме прочего есть ESP01 и ESP01S - немного в начинке платки отличаются - у Sки вроде светик откусили
и памяти больше...
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт мар 05, 2020 20:59:09 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Сегодня еще потыкался. Приложу картинки, авось когда-нибудь выяснится в чем дело, может кто в какой документ тыкнет.
Изображение

В общем то вот такая схема. ESP шлет данные через делитель R1R2, хотя для ESP он не нужен, делитель был для другого.

Как я говорил, если так запускать, ESP не стартует, уровень на его TX 0.2В где-то.

Если выкинуть R2, то вот осциллограмма старта (сделал на телефон, потому что осцилл с большой флешкой отказался работать).
Изображение
Восстанавливаю R2, добавляю R3 и опытным путем устанавливаю что запуск происходит когда R3<3к. Запускаю и глядю.
Изображение
Желтый луч - это питание.

Делаю вывод такой. В момент старта TX запускается подтянутым к верху, затем в режиме push pull отправляет свое стартовое приветсвие и уходит в плавающий вход. И видимо до привествия проверяет состояние пина. Может какая защита, чтобы приветствие свое не закоротить?

Я выше приводил цитату, повторю ее в укороченном виде.
Цитата:
If the printed information exerts
any influence on the functionality of the device, it is suggested to block the printing during the power-on
period by changing (U0TXD, U0RXD) to (MTDO, MTCK).
Надо почитать что это за MTDO такое :).

З.Ы. Питание не идеально, не думая что проблемы из-за него, все равно проверил на лабораторнике, эффект тот же.


Вложения:
IMG_20200305_222516.jpg [62.83 KiB]
Скачиваний: 1163
IMG_20200305_221014.jpg [66.34 KiB]
Скачиваний: 1147
shema.png [37.32 KiB]
Скачиваний: 1189

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт мар 05, 2020 21:45:40 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
Я выше приводил цитату, повторю ее в укороченном виде.
Надо почитать что это за MTDO такое :).

Другие пины, GPIO13, GPIO15. Но цитата о другом. Это они говорят, что если дерганье UART на пинах (U0TXD, U0RXD) при старте будет мешать другим ус-вам к ним подрубленных, то предлагают просто UART заремаппить на другие пины.

Но я уже нашел вам ответ: https://bbs.espressif.com/viewtopic.php ... 9d4f#p2834
Цитата:
Besides, U0TXD is also a strapping pin for chip_test_mode(1: normal mode; 0: chip_test_mode). Thus, U0TXD can't be pulled down just when the system is powered on.

Это ответ сотрудника Espressif. Т.е. не только GPIO0 и 2 влияют на режим загрузки, но и GPIO1. Странно, мало где об этом пишут, но если он притянут к 0 во время старта МК, то МК переходит в некий chip_test_mode и прошивка ес-но не работает.
Как вариант обойти - сгородить решение, чтобы на время strapping (17-19.5 мс где-то по-идее, вот попутно интересная картинка таймингов загрузки: https://raw.githubusercontent.com/pvvx/ ... ignals.gif) подержать высокий уровень на этом пине, а потом отпустить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт мар 05, 2020 21:51:14 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да, я уже пробую переключить функцию, пока не получилось.
Пробовал напрямую писать в регистр 0x60000818 и нашел функции system_uart_swap(); и system_uart_de_swap();
Ща почитаю что-нибудь в просторах инета еще.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: ESP8266 временами вечный ребут
СообщениеДобавлено: Чт мар 05, 2020 21:56:33 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Z_h_e, мне кажется регистры пина тут никак не помогут. Pin strapping срабатывает еще до загрузки. Тут только аппаратное решение кмк.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y