Forum: Mikrocontroller und Digitale Elektronik Software Oszilloskop für serielle Schnittstelle


von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Ich brauche gerade für einen Test eine Oszilloskop-Funktion für die 
serielle Schnittstelle (Daten vom Mikrokontroller) und bin in der 
Vorüberlegung für die Erstellung einer passenden Software. Meine hier 
bereits vorgestellte Software SerialComGrapher passt nicht, da ich eine 
Triggerfunkion benötige und auch sonstige Scope-Funktionen fehlen.
Die Maximalrate für die äquidistant eintreffenden Daten sollte mind. 100 
KSamples/s betragen. Es sind 1 oder 2 Kanäle geplant.

Meine Fragen hierzu:
Gibt es sowas als Freeware, dann brauch ich mir die Mühe nicht machen. 
Gefunden habe ich nur relativ langsame Software.
Wenn nicht, habt ihr Interesse an sowas? Für mich alleine würde ich es 
nur quick and dirty erstellen, ansonsten etwas netter und umfangreicher 
:)

von michael (Gast)


Lesenswert?

Albert M. schrieb:
> Die Maximalrate für die äquidistant eintreffenden Daten sollte mind. 100
> KSamples/s betragen. Es sind 1 oder 2 Kanäle geplant.

Ich denke mal 100KSamples/s wirst du über eine serielle Schnittstelle 
(ich denke mal du meinst RS-232) nicht hinbekommen. Standard bei PCs ist 
max 115200Baud. Also höchstens ca. 15 bis 20 KSamples/s auf einem Kanal. 
Es sei denn du nimmst USB-RS232-Wandler, die höhere Baudraten können.
Oder können PCs auch noch höhere Baudraten?

Viele Grüße
Michael

von leluno (Gast)


Lesenswert?

Es gab hier diverse Threads zur software dso201 ohne verwertbare 
Ergebnisse. ich habe mir das dso201 gekauft ohne den Funktionsumfang 
mangels brauchbarer Anleitung vollständig nutzen zu können. Deswegen kam 
mir die Idee, den dso201 auf einem lpc1769 nachzubauen. Der lpc-adc 
schafft bei 12 Bit Auflösung rund 180.000 Messungen in der Sekunde (bei 
100mhz, möglich sind 120 MHz). Wenn man einen separaten adc-ic mit 
geringerer Auflösung nimmt, müsste man diesen Wert noch verbessern 
können. Ich habe an einen ca3304 gedacht.

Damit müsste ein brauchbarer Eigenbau mit relativ wenig Aufwand zu 
realisieren sein. Ich würde mich an einem solchen Projekt gerne 
beteiligen.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@michael

Die bekomme ich locker hin. Nicht Standard RS232 sondern UART/USB 
Converter am Mikrokontroller.
Und ja PC's können noch wesentlich höhere Baudraten.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@leluno
Ähm - es geht mir rein um die Software-Erstellung.
Wo die Daten dann herkommen ist ziemlich egal.

von oszi40 (Gast)


Lesenswert?

Albert M. schrieb:
> Meine Fragen hierzu:

> Gibt es sowas als Freeware,
Evtl. ein NULL-Modem? Dann weißt Du wenigstens was wieder ankommt und 
lernst dabei die "Geschwindigkeit" Deiner seriellen Schnittstelle 
kennen. http://de.wikipedia.org/wiki/Nullmodem-Kabel

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

oszi40 schrieb:
>> Gibt es sowas als Freeware,
> Evtl. ein NULL-Modem? Dann weißt Du wenigstens was wieder ankommt und
> lernst dabei die "Geschwindigkeit" Deiner seriellen Schnittstelle
> kennen. http://de.wikipedia.org/wiki/Nullmodem-Kabel

Was soll dieser sinnlose Beitrag?
Was möchtest Du damit sagen?

von chris (Gast)


Lesenswert?

Anstelle von 1 Byte je USB Datenpakte zu senden, sende 64 Datenpakete je
Endpoint. Also bei 1mS Servicezeit und 64Bytes sind es 512Kbits oder
64Kbytes Datentransfer je Endpoint und Sekunde. Je nach uC hast du eine
Limitierung der Endpunkte.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

chris schrieb:
> Anstelle von 1 Byte je USB Datenpakte zu senden, sende 64 Datenpakete je
> Endpoint. Also bei 1mS Servicezeit und 64Bytes sind es 512Kbits oder
> 64Kbytes Datentransfer je Endpoint und Sekunde. Je nach uC hast du eine
> Limitierung der Endpunkte.

Und was willst Du damit sagen?

Mit meiner eigenen Software SerialComGrapher, in der aktuellen Version 
0.6.6, schaffe ich ja bereits 100 KSamples/s. Und das mit Werten im 
ASCII Format. Mit reiner Binär-Übertragung geht das noch schneller.
Beitrag "Daten von der seriellen Schnittstelle einfach darstellen"

von michael (Gast)


Lesenswert?

ah, jetzt hab ich den Thread zu SerialGrapher gefunden. Sieht echt gut 
aus. Hast du Zugang zu LabView? Damit müsste man sowas auch recht leicht 
"malen" können. Studentenversionen gibts echt günstig:
http://edustore.mstore.de/software/div.hersteller/294/ni-labview-download-student-edition-win

Meine LabView Erfahrungen sind jetzt auch schon ein paar Jahre alt, aber 
wenn ich das richtig in Erinnerung habe, gibt es ein Oszilloskop-VI, 
dass du einfach noch mit Daten aus einer geeigneten Datenquelle füttern 
musst.

Viele Grüße
Michael

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

michael schrieb:
> ah, jetzt hab ich den Thread zu SerialGrapher gefunden. Sieht echt gut
> aus. Hast du Zugang zu LabView? Damit müsste man sowas auch recht leicht
> "malen" können.

Mein ehemaliges Unternehmen, Datalog Systeme zur Messwerterfassung ( 
firmiert jetzt unter measX ), dass ich 1992 verkauft habe, arbeitet 
heute viel mit LabView. Ich finde LabView nicht so prickelnd, aber es 
hat sich wohl als Quasi-Standard etabliert.
Ich programmiere als Hobby und Zeitvertreib lieber mein eigenes Ding.

von chris (Gast)


Lesenswert?

Albert M. schrieb:
> chris schrieb:
>> Anstelle von 1 Byte je USB Datenpakte zu senden, sende 64 Datenpakete je
>> Endpoint. Also bei 1mS Servicezeit und 64Bytes sind es 512Kbits oder
>> 64Kbytes Datentransfer je Endpoint und Sekunde. Je nach uC hast du eine
>> Limitierung der Endpunkte.
>
> Und was willst Du damit sagen?
>
> Mit meiner eigenen Software SerialComGrapher, in der aktuellen Version
> 0.6.6, schaffe ich ja bereits 100 KSamples/s. Und das mit Werten im
> ASCII Format. Mit reiner Binär-Übertragung geht das noch schneller.
> Beitrag "Daten von der seriellen Schnittstelle einfach darstellen"


Full Speed USB devices laufen üblicherweise mit USB Interrupt-Paketen.
Dies ist je ein Paket je ms und Endpoint bei Full Speed.

Also wenn man nur einen Endpoint hat um Daten zu schicken, dann kann man
maximal 1000 Pakete je Sekunde schicken. Diese Pakete kommen dann auch
garantiert an. Ob man da nur 1 Byte je Paket schickt, oder 64 Bytes ist
egal. Interrupt Transfer garantiert die Bandbreite und das Ankommen der
Pakete.
Es gibt auch andere Möglichkeiten Daten zu schicken die auch schneller 
sind, dabei ist die Bandbreite oder das Ankommen der Daten nicht 
garantiert. Deshalb wird meisten diese Betriebsart gewählt, welche
dann bei Full Speed 1000-64000 Bytes je Sekunde und Endpoint unter
normalen Bedingungen garantiert.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

@ chris

Chris, ich habe ehrlich gesagt von irgendwelchen Endpoints keine Ahnung. 
Wie bereits gesagt, erreiche ich mit meiner bestehenden Software (siehe 
oben) bereits mehr als 100.000 Messwerte/s über ein normales UART/USB 
Konverter-Modul, welches im PC als vitueller ComPort erscheint. 
Ungeachtet aller Endpoints funktioniert das ohne Datenverlust wunderbar.

Ich benutze da so ein oder ein ähnliches Teil von einem deutschen 
Hersteller:
http://www.ebay.de/itm/USB-2-0-zu-UART-TTL-6PIN-Anschluss-Modul-serieller-/400537649540?pt=DE_Computing_USB_Kabel_Hubs_Adapter&hash=item5d41e78184

von c-hater (Gast)


Lesenswert?

chris schrieb:

> Full Speed USB devices laufen üblicherweise mit USB Interrupt-Paketen.

Müssen sie aber nicht. Ab Full-Speed steht (lt. Standard) auch Bulk und 
Isochronuous zur Wahl.

Das übliche RS232-USB-Wandler-Gedöns jedenfalls läuft allerdings meist 
tatsächlich nur mit Interrupt-Transfers. Insofern hast du auf jeden Fall 
recht.

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Danke für eure Beiträge, aber die USB-Innereien sind hier gar nicht die 
Frage. Der Datentransfer funktioniert schliesslich in der von mir 
gewünschten Geschwindigkeit problemlos.

Vielleicht antwortet ja noch jemand auf meine ursprüngliche 
Fragestellung.

von Blackbird (Gast)


Lesenswert?

Außer LabView fällt mir jetzt auch nichts ein. Es gibt, gegen Aufpreis, 
bei LabView einen EXE-Builder, der eine SW erzeugt, die ohne Lizenz auf 
jedem PC läuft. Wenn Du jemanden hast, der Dir Dein LabView-Programm 
(wenn Du Dich zu diesem Schritt entschließt) finalisiern kann, hast Du 
Deine gewünschte SW.

Sonst bleibt nur der Weg, es mit C/C++/C# (oder Delphi) und dem MS-API 
selbst schreiben. Ist aber mühsam und genau das wolltest Du umgehen.


Blackbird

von Blackbird (Gast)


Lesenswert?

ScanLogic oder andere diverse Serial-"Datenlogger" fallen mir noch ein, 
mansche haben eine Oszilloskop-Funktion für die seriellen Daten. Auch 
Burkhard Kainke hat mal sowas mit einem 2. Autor für eine Serielle 
Oszilloskop-Funktion auf dem PC realisiert. Mit VB und Delphi. Sowohl 
für eine ältere Stand-alone-Haedware-Lösung als auch für den 
Renesas-R8C13-Mikrocontroller.
Diese SW steuerte auch noch die HW, aber vielleicht kann man das 
ignorieren oder anpassen.


Blackbird

von Stephan (Gast)


Lesenswert?

evtl. ist LogView was für Dich ? Oder kann angepasst werden ?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.