• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Soft WDT reset и "иероглифы" в миниторе порта

SpecX

New member
Wemos D1, VK2828U7G5LF NEO7-M, Arduino 1.8.12

Скетч:

Код:
// The serial connection to the GPS device
#include <SoftwareSerial.h>
static const int RXPin = D7, TXPin = D8;
static const uint32_t GPSBaud = 115200;
SoftwareSerial gps(RXPin, TXPin);

void setup() {
  delay(500);
  Serial.begin(115200);
  gps.begin(115200);
}
void loop() {
  while (gps.available() > 0) {
    Serial.write(gps.read());
  }
  while (Serial.available() > 0) {
    gps.write(Serial.read());
  }
}
Вот что выдает монитор:
Скриншот 2020-06-03 11.45.00.png

Два вопроса, как решить reset и как "иероглифы" превратить в читаемый текст.
Спасибо.
 

vidok

Member
Это константа скорости обмена с стороны - the GPS device ?
static const uint32_t GPSBaud = 115200;
и где она передаётся to the GPS device (как он узнает о скорости обмена) ?
115200 не многовато ли для софтсериал ?

Возможно эти вопросы от такого же новичка укажут на причину, хотя возможно они бесполезны...
 

SpecX

New member
Это константа скорости обмена с стороны - the GPS device ?
static const uint32_t GPSBaud = 115200;
и где она передаётся to the GPS device (как он узнает о скорости обмена) ?
115200 не многовато ли для софтсериал ?

Возможно эти вопросы от такого же новичка укажут на причину, хотя возможно они бесполезны...
скорость обмена GPS модуля настраивается в утилите U-center и она соответствует настойке, на скорости 9600 те же пироги, функция yield(); в цикле loop также не решает вопрос
 

vidok

Member
Вот тут пишут ,что многие платы NEO7-M, не сохраняют настройки и обмениваются только на определенной скорости.
Попробуйте вставить delay(5); или yield в циклы while. А soft wdt reset обычно из-за того, что программа надолго выходит из основного цикла (loop) , или от переполнения оперативной памяти, указатель может сбиться и не может вернуться в основной цикл, чтобы сбросить сторожевой таймер.
Попробуйте поменять библиотеку сериалсофт например на espSoftwareSerial.
wemos рабочий (другой скетч типа моргалки работает) ?
Ну и дождитесь совета от более опытных форумчан ,если они не заняты... моего опыта маловато.
 

SpecX

New member
Вот тут пишут ,что многие платы NEO7-M, не сохраняют настройки и обмениваются только на определенной скорости.
Попробуйте вставить delay(5); или yield в циклы while. А soft wdt reset обычно из-за того, что программа надолго выходит из основного цикла (loop) , или от переполнения оперативной памяти, указатель может сбиться и не может вернуться в основной цикл, чтобы сбросить сторожевой таймер.
Попробуйте поменять библиотеку сериалсофт например на espSoftwareSerial.
wemos рабочий (другой скетч типа моргалки работает) ?
Ну и дождитесь совета от более опытных форумчан ,если они не заняты... моего опыта маловато.
УРА!!!Спасибо! осталась одна проблема))
soft wdt reset - решено путем добавление yield(); в первый цикл while
но осталась проблема с иероглифами в мониторе
 

CodeNameHawk

Moderator
Команда форума
soft wdt reset - решено путем добавление yield(); в первый цикл while
но осталась проблема с иероглифами в мониторе
Весь принцип ардуино в том, что бы в цикле loop не "засиживаться", а вы сразу начинаете с костылей.

Иероглифы от несовпадения частоты монитора и устройства.
Попробуйте вместо монитора терминал HTERM.
 
Сверху Снизу