Com1 geht USB Seriell Wandler spinnt

OP #4089764
Lesenswert?
• ▲
▼
Hallo.
Ich trete hier etwas auf der Stelle.
Ich möchte Daten von einem recht alten Trackball mit einem Arduino 
verwerten.

Der Trackball liefert serielle daten mit 1200baud (8N1).
5byte mouse protokoll.
Anschlüsse hat der nur V+, GND und TX.

Am com1 port von PC läuft das fein (siehe bild rechts).

Am arduino und an einem prolific usb seriell wandler erhalte ich aber 
nicht die selben daten (siehe bild links).

In dem Beispiel empfangen beide schnittstellen die selben Daten (Problem 
tritt aber auch mit dem Arduino alleine Auf).

Meine üblichen Probleme (Baudrate falsch, GND nicht verbunden, falscher 
quarz am uc) habe ich schon durch  ausgeschlossen.

Der code auf dem arduino liest den Empfangspuffer und schreibt die 
ersten 5 bytes in ein array, das dann über den virtuellen com Port an 
den PC geschickt wird.
Das Problem habe ich aber auch mit dem Prolific usb seriell wandler.

Kann es sein dass einzelne bits verpasst werden und sich dadurch andere 
bytes ergeben?
Angehängte Dateien:
Gast #4089796
Lesenswert?
• ▲
▼
Offensichtlich sin in deiner Kette zwei serielle Schnittstellen, von 
denen eine vermutlich nicht funktioniert.

Trenne diese Schaltung auf und kontrolliere jede Schnittstelle einzeln. 
Dann hast bist du dem Ziel schon 50% näher.
OP #4089805
Lesenswert?
• ▲
▼
hier kommt noch der verwendete code für
Arduino leonardo mit Atmega 32u4
1
byte inputBuffer[5];   // For incoming serial data
2

3

4
void setup()
5
{
6
  Serial.begin(115200); //virtual com port on pc
7
  while(!Serial);   // wait for initialization
8
  Serial1.begin(1200,SERIAL_8N1); //hardware uart 
9
  while(!Serial1);
10

11
}
12

13
void loop()
14
{
15

16

17
if (Serial1.available() >= 5) {
18

19
   Serial1.readBytes(inputBuffer, 5);  //write bytes to array
20
    Serial.print(inputBuffer[0], BIN);Serial.print("\t\t\t"); // serial output
21
    Serial.print(inputBuffer[1], BIN);Serial.print("\t\t\t");
22
    Serial.print(inputBuffer[2], BIN);Serial.print("\t\t\t");
23
   Serial.print(inputBuffer[3], BIN);Serial.print("\t\t\t");
24
   Serial.println(inputBuffer[4], BIN);  }
25

26

27
}
28
}
OP #4089816
Lesenswert?
• ▲
▼
@ Stefan Us
Es sind jeweils 2 serielle schnittstellen in verschiedenen 
Kombinationen.
1. Tackball > PC über com1 funktioniert
2. Trackball > Arduino > PC
3. Trackball > USB seriell wandler klappt auch nicht

Bei Nr2 bin ich sicher dass Arduino zu PC funktioniert.


Danke Εrnst B✶,
Das war mir nicht bekannt.
Das könnte ein zweites problem sein.
Aber zum glück leicht im code zu beheben.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.