MAX232+Arduino+HyperTermina HILFEEE

Gast #3808966
Lesenswert?

Guten Abend,
Ich habe ein MAX232 Shield und wollte mit einem Arduino Mega über dieses 
mit HyperTerminal kommunizieren. Ich kann Text an das HyperTerminal 
senden aber nichts empfangen :/
Hier mein Code:
1
void setup()  
2
{
3
  Serial.begin(9600);
4
  Serial1.begin(9600);
5

6
  Serial.println("Goodnight moon!");
7
  delay(500);
8
  
9
  Serial1.println("Hallo Terminal!");
10
  delay(200);
11
}
12

13
void loop() // run over and over
14
{
15
  if (Serial1.available())
16
    Serial.write(Serial1.read());
17
}
Ich habe den RX-Pin vom MAX mit Pin 18 vom Arduino verbunden und den TX 
mit Pin 19 auf dem Arduino (habs aber auch schon anders herum 
versucht)...
Was mache ich falsch??

Vielen Dank,
Simon
#3809029
Lesenswert?

Mal kurz ein paar Fragen zur Verkabelung:

Serial0 bzw. einfach nur "Serial" ist die USB Verbindung zum Rechner wie 
üblich virtueller Com-Port und da hängt dein Terminal dran?

Serial1 ist am Shield.
Dumme Frage: werden Shields nicht einfach nur aufgesteckt? Wie kannst du 
dann die Pins selber wählen?

Übrigens:
Pin 18 ist der TXD1-Pin
Pin 19 ist der RXD1-Pin

Ich vermute, dass die Pins vom Shield entsprechend verbunden werden 
müssten...

Von dem Shield gehen die Kabel dann wie an den PC? Per Adapter auf die 
"Serielle Schnittstelle" sprich eine 9 polige RS-232?
TX an Pin3
RX an PIN2
GND an Pin5
oder wie?

Und das 2. Terminal ist dann wieder auf den "echten" Com-Port 
konfiguriert?


Wenn ich falsch liege, hast du dann mal einen Schaltplan?
Oder einen Link zu dem Shield? Dann kann ich mir das selber 
zusammenkratzen...
Gast #3809046
Lesenswert?

Serial0 geht zur Arduino IDE und Serial1 zum "Shield" (war vlt. nicht 
ganz die richtige Bezeichnung: 
http://emartee.com/Images/websites/emartee.com/MAX232_1(1).jpg)

Die Sache mit den vertauschten Pins hab ich irgendwo gelesen, ich habs 
aber auch anders herum versucht und es geht trotzdem nicht...

Zwischen dem "Shield" und dem PC ist ein normales 9poliges Kabel.

Das HyperTerminal ist mit dem echten COM-Port von meinem alten PC 
konfiguriert ;)

Vielen Dank!
#3809066
Lesenswert?

GND und VCC wirst du dann ja wohl wahrscheinlich auch richtig mit dem 
Arduino verbunden haben. Dann klingt das alles soweit O.K.

Aber um dann alle Fehler bei der Verkabelung auszuschließen:

Ist das 9 polige Kabel ein "Nullmodemkabel" also gekreuzt oder ist es 
ein ungekreuztes?

Weißt du das bzw. kannst du das mal fix durchklingeln?


PS: Hast du auf dem Terminal deines alten Rechners schonmal das "Hallo 
Terminal" der Initialisierung gelesen?
#3809089
Lesenswert?

Simon schrieb:
> Es handelt sich leider nicht um ein Nullmodemkabel :/
Und das ist gut so.

> Ist es möglich dass der MAX232 defekt ist oder geht dann senden auch
> nicht mehr?

Klar ist es möglich, aber davon würde ich jetzt noch nicht ausgehen.

Erstmal zurück zur Software...

1) funktioniert das senden per Hyper Terminal über die USB-Verbindung?
also:
1
void loop() // run over and over
2
{
3
  if (Serial.available())
4
    Serial.println("USB empfangen");
5
  delay(1000); 
6
}

Das sollte nachdem du was gesendet hast anfangen dein Terminal zu 
fluten...
Wenn das klappt dann weiter mit :
1
void loop() // run over and over
2
{
3
  if (Serial.available())
4
    Serial.write(Serial.read());
5
}

Wie Marc Vesley vor meinem Verdrahtungs-Exkurs bereits vorgeschlagen 
hat.

Und wenn das mit der USB-Verbindung auch noch funktioniert dann weiter 
mit:
1
void loop() // run over and over
2
{
3
  if (Serial1.available())
4
    Serial.println("232 empfangen");
5
  delay(1000); 
6
}

Und einen hab ich noch: Wie ist dein Terminal eingestellt?
Per Default ist die Schnittstelle auf 8 Datenbits Parity None und ein 
Stopbit. Sendet der PC auch so?
#3809567
Lesenswert?

Simon schrieb:
> Ich habe ein MAX232 Shield und wollte mit einem Arduino Mega über dieses
> mit HyperTerminal kommunizieren.

Falls Du unter "kommunizieren" verstehst, dass Du in beide Richtungen 
senden und empfangen können möchtest, müßtest Du natürlich in der 
loop-Funktion auch beide Richtungen programmieren.
1
void setup()  
2
{
3
  Serial.begin(9600);
4
  Serial1.begin(9600);
5

6
  Serial.println("Goodnight moon!");
7
  delay(500);
8
  
9
  Serial1.println("Hallo Terminal!");
10
  delay(200);
11
}
12

13
void loop() // run over and over
14
{
15
  if (Serial1.available())
16
    Serial.write(Serial1.read());
17
  if (Serial.available())
18
    Serial1.write(Serial.read());
19
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren