serielles signal durch arduino mega schleusen

hi,

ich möchte gern das signal vom atmolight der dreambox auslesen. hat schon ewig gedauert, die dream soweit zu kriegen, daß sie mit dem arduino redet, aber jetzt sehe ich, wenn ich das plugin auf der dream einschalte, daß die RX-LED auf dem ardu blinkt wie irre. ist ja schön soweit.

ich hab' einfach den beispiel-sketch für den mega genommen, und halt soweit gekürzt, daß er nur noch in eine richtung empfängt/schreibt. wenn ich zwei HTerm-fenster aufmache und über arduino-usb mit 500000 baud (8, 1, N) sende, geht es bei serial1 über einen FTDI zurück in den computer und der zweite HTerm zeigt mir das gesendete an.

der FTDI ist mit RX, TX und GND mit dem arduino (serial1) verbunden. auch ohne gnd schon probiert... obwohl, wenn der arduino-usb mit der dream verbunden ist, das RX-lämpchen blinkt, wird am HTerm NICHTS angezeigt. bei den 500000 baud bin ich recht sicher, aber selbst wenn nicht, sollten doch zumindest ein paar falsche signale ankommen.

ich blicke nicht mehr durch, sieht jemand meinen fehler oder hat wenigstens einen ansatz?

gruß stefan

Die UARTs sind nicht für diese Geschwindigkeit ausgelegt. Welchen Sketch benutzt Du? Grüße Uwe

hi, uwe,

diesen:

void setup() {
  // initialize both serial ports:
  Serial.begin(500000);
  Serial1.begin(500000);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte); 
  }
}

und da funtioniert auch alles. wenn ich von einem HTerm-fenster über COM4 (arduino-usb) ein "stefan ist super" wegschicke, kommt über COM10 (FTDI an serial1) vollkommen korrekt ein "glaubst auch nur Du" am zweiten HTerm an. :P

wenn ich am HTerm etwas ander als 500000 Baud angebe und den sketch unverändert lasse, kommen zumindest verstümmelte daten an. aber von der dream kommt nichts, obwohl die RX-led von serial wild blinkt.

gruß stefan

Ich glaube nicht daß der Programmteil 
void loop() {
  // read from port 1, send to port 0:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte); 
  }
}

weniger als 20µS braucht, denn wenn er mehr braucht, bringst Du die Zeichen nicht schnell genug aus dem Eingangsbuffer daß dieser überquillt. Das sind gerade mal 320 Taktzyklen. Grüße Uwe

hi,

aber ein vom computer mit 500000 baud gesendetes signal und vom arduino an den selben computer mit 500000 baud zurückgeschicktes signal kommt doch auch korrekt durch...

danke trotzdem. ich werd' mal dem entwickler des plugins schreiben.

gruß stefan

Ja, aber wie lange ist der Text mit dem Du es versucht hast? Versuch es mal mit 1000 Zeichen.

Grüße Uwe

Eisebaer: die RX-LED auf dem ardu blinkt wie irre. ... bei den 500000 baud bin ich recht sicher

Ach?

Wenn ich die RX-LED blinken sehe und an der seriellen Schnittstelle trotzdem nix auslsen kann, dann gehe ich ganz fest davon aus, dass ich im Sketch die falsche Baudrate eingestellt habe.

Weshalb bist Du Dir denn wegen der 500000 Baud so sicher? Das ist keine Standard-Baudrate und liegt von der Geschwindigkeit her weit über allen Standard-Baudraten. Hast Du diese Baudrate selbst an dem sendenden Gerät eingestellt und dort im Menü als eingestellte Baudrate gesehen?