• Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу