Не удается получить значения max232 с помощью loopback

Я еще не нашел ответов, которые решали бы мою проблему с max232. Я подключил его таким образом к своему Arduino uno, так что мой Arduino обеспечивает +5V VCC и землю: максимальное соединение 232 Connection on board

Единственное отличие заключается в том, что я делаю петлю на стороне RS232 и использую 1 мкФ для каждого конденсатора, даже для байпасного. Я сделал обратную петлю, чтобы посмотреть, работает ли max232. Я ничего не получаю от него, когда посылаю ему какие-то данные. Я измеряю +8,7 В на выводе 2 и -8,15 В на выводе 6.

Мой код Arduino:

/*
  Software serial multiple serial test

 Receives from the hardware serial, sends to software serial.
 Receives from software serial, sends to hardware serial.

 The circuit: 
 * RX is digital pin 10 (connect to TX of other device)
 * TX is digital pin 11 (connect to RX of other device)

 created back in the mists of time
 modified 25 May 2012
 by Tom Igoe
 based on Mikal Hart's example

 This example code is in the public domain.

 */
#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup()  
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);

  // set the data rate for the SoftwareSerial port
  mySerial.begin(9600);
}

void loop() // run over and over
{
  if (mySerial.available())
    Serial.print(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

Что я сделал не так или мой max232 сломан?

ПРАВКА

Я думаю, что последовательный монитор (тот же baudrate) не записывает в порты, поэтому я переписываю какой-то код.

код цикла:

int i = 0;
void loop() // run over and over
{
  if(i == 10)
    i = 0;

  mySerial.write(i);
  Serial.print(mySerial.read());
  i++;
  delay(3000);
}

В последовательном мониторе я получаю странные значения для каскадного счетчика.

Ценности: -1 45 49 52 53 52 57 53 ...

Я думаю, что эти цифры не являются ascii-кодом для электронных чисел.

ПРАВКА 2

Теперь цикл работает благодаря приведенному ниже ответу. Теперь я заменил петлю обратной связи модулем FUM DCF-U. Код цикла изменился на следующий:

void loop() // run over and over
{
  if(Serial.available())
    Serial.println(Serial.read());
}

Проблема в том, что результат получается "000000000000000000000000000000000..." в быстром темпе, а не каждую секунду.

Модуль получает напряжение 3,3 В и подключается к тому же GND, что и MAX232.

Контактные соединения:

Arduino - MAX232

11 - 11

0 - 12

MAX232 - FUM DCF-U

14 - 3

13 - 4

Заранее спасибо

, 👍0

Обсуждение

Работает ли loop back без MAX232?, @Spehro Pefhany


1 ответ


1

SoftwareSerial не может одновременно отправлять и получать одновременно, как это происходит при получении внутри ISR, и отключается при отправке. Таким образом, это никогда не будет работать должным образом.

Я предлагаю вам переключиться на HardwareSerial. Или, если вы хотите увидеть результаты, отправьте с помощью SoftwareSerial и получите с помощью HardwareSerial. Например:

#include <SoftwareSerial.h>
SoftwareSerial mySerial (10, 11); // RX, TX

void setup ()
  {
  Serial.begin (115200);
  mySerial.begin (115200);
  }  // end of setup

unsigned long lastSend;
char c = ' ';
void loop ()
  {
  // время для очередной отправки теста?
  if (millis () - lastSend >= 500)
    {
    mySerial.print (c++);
    if (c > 'z')
      {
      c = ' ';
      Serial.println ();
      }    
    lastSend = millis ();
    }

  // проверка наличия ответа
  if (Serial.available ())
    Serial.print (char (Serial.read ()));
  }  // end of loop

Я протестировал это как простой обратный цикл, и он отлично работал. Подключите вывод 11 (Tx) к выводу 0 (Rx). Отсоедините провод от вывода 0 во время загрузки.

,

Мой цикл работает нормально, но теперь я добавил свой модуль атомных часов в FUM DCF-U и изменил код так, чтобы осталось только последнее предложение if. Это приводит только к " 0 " (без приведения символов) с высокой скоростью вместо некоторых данных каждую секунду. Почему это происходит?, @Daan Mouha

Возможно, исправьте свой вопрос и опубликуйте этот измененный код. Ни мои коллеги здесь, ни я не умеем отлаживать код, в котором "я кое-что изменил, но ..."., @Nick Gammon

Отредактировал вопрос., @Daan Mouha

Смотрите также: