Forum: Mikrocontroller und Digitale Elektronik USB-C pin togglen unter windows möglich?


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Mat. K. (matthias_kornfield)



Lesenswert?

Hi
ist es eigentlich unter Windows möglich einen einzelnen USB-C pin zu 
toggeln?
Ich habe ein USB-C Adapter(siehe Bild) und wurde gerne PIN A7 (D-) 
dauerhaft  auf high/low ziehen.
Ist das möglich? Ein anderer Pin?
Danke

: Bearbeitet durch User
von Émile (Gast)


Lesenswert?

Nein, das ist komplett unmöglich.

Informiere Dich darüber, was USB ist.

Dein Bild hat zwar einen schön langen Dateinamen, das *.jpg aber, das 
nötig ist, damit man was damit anfangen kann, das fehlt.

von Max M. (jens2001)


Lesenswert?

Émile schrieb:
> das *.jpg aber, das
> nötig ist, damit man was damit anfangen kann, das fehlt.

Schön wärs.
Ist aber natürlich wieder *png!

von Daniel A. (daniel-a)


Lesenswert?

Émile schrieb:
> Dein Bild hat zwar einen schön langen Dateinamen, das *.jpg aber, das
> nötig ist, damit man was damit anfangen kann, das fehlt.

Typisch Windows Nutzer... Unter Linux braucht man die Endung nicht.

von Εrnst B. (ernst)


Lesenswert?

Mat. K. schrieb:
> Ist das möglich? Ein anderer Pin?

Wenn du einen HUB mit "per Port Power Switching hast"
(erstes Bit in den wHubCharacteristics gesetzt)
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/usbspec/ns-usbspec-_usb_30_hub_descriptor
dann kannst du per Software den "VCC"-Pin an deinem Adapter 
an/abschalten.

Vorsicht, bei USB3-Hubs musst du das evtl. auch für den "USB2"-Part 
machen.

von Mat. K. (matthias_kornfield)


Lesenswert?

genaugenommen wollte ich unter windows aus meinem laptop raus einen 3v 
Pulse generieren Dauer < 1ms. Der soll möglich sauber sein.
https://www.amazon.de/HALJIA-Module-Control-Switch-Intelligent/dp/B075F6J6WL
Bisher hatte ich ein USB Relay, der generiert aber kein sauberes Signal.
Eine bessere Idee?
Ein Arduibo Board was ich als USB CDC koniguriere um ein Pin zu togglen?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Das hast du doch schon mal gefragt:

Beitrag "wie erzeuge ich von einem windows laptop aus einen 1 mikrosekunden puls mit 3.3 Volt"

Haben dir die Lösungen da nicht gefallen?!

: Bearbeitet durch User
von ??? (Gast)


Lesenswert?

wäre das nicht eine Aufgabe für einen Arduino?

...OK! heute ist erst Donnerstag.

von Mat. K. (matthias_kornfield)


Lesenswert?

>> Das hast du doch schon mal gefragt:
danke der Errinerung , ganz vergessen ;-)

von Flegeldienst (Gast)


Lesenswert?

??? schrieb:
> wäre das nicht eine Aufgabe für einen Arduino?
>
> ...OK! heute ist erst Donnerstag.

???  Funktioniert das nur an einem Dienstag, oder was?

Ich erinnere mich an die Seite "Obdev.at", wo man eine Software WIMRE 
für Atmega8 fand, die einzelne Portpins einlesen und/ oder schalten 
konnte.

von EAF (Gast)


Lesenswert?

??? schrieb:
> wäre das nicht eine Aufgabe für einen Arduino?

Durchaus!
Quasi das natürliche Habitat für Leonardo/Micro und vergleichbare.

von 23 (Gast)


Lesenswert?

Daniel A. schrieb:

> Typisch Windows Nutzer... Unter Linux braucht man die Endung nicht.

Aber Mozilla ist es  ist es egal wem firefox den Tag versaut ;)

von Steve van de Grens (roehrmond)


Angehängte Dateien:

Lesenswert?

Ich würde dafür einen Digispark verwenden. Mit dem Arduino Framework und 
vielleicht 10 Zeilen Code ist das schnell erledigt.

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

23 schrieb:
> Daniel A. schrieb:
>
>> Typisch Windows Nutzer... Unter Linux braucht man die Endung nicht.
>
> Aber Mozilla ist es  ist es egal wem firefox den Tag versaut ;)

Mozilla nimmt halt das, was der Server sagt, und der meint, das sei ein 
"application/octet-stream".

von Hans (Gast)


Lesenswert?

Émile schrieb:
> Nein, das ist komplett unmöglich.
>
> Informiere Dich darüber, was USB ist.
>

Windows checkt als erstes, wenn der USB-Stecker eingesteckt wird, ob die 
Datenleitung auf + oder - gezogen ist, anhand von dem entscheidet 
Windows, ob es sich um  usb1 oder usb2 handelt, also vielleicht doch 
nicht ganz unmöglich?

von EAF (Gast)


Lesenswert?

Hans schrieb:
> also vielleicht doch
> nicht ganz unmöglich?

Eingangsfrage gelesen?
Es soll ein Output gesetzt werden.
Und nicht irgendwas gelesen werden.

von Ildefonso (Gast)


Lesenswert?

Hans schrieb:
> Windows checkt als erstes

Das macht nicht Windows, das macht die Hardware des 
USB-Host-Controllers.

Und damit auch, wenn auf dem PC Linux läuft. Oder irgendwas anderes.

von Guido Körber (Gast)


Lesenswert?

Hans schrieb:
> Windows checkt als erstes, wenn der USB-Stecker eingesteckt wird, ob die
> Datenleitung auf + oder - gezogen ist, anhand von dem entscheidet
> Windows, ob es sich um  usb1 oder usb2 handelt, also vielleicht doch
> nicht ganz unmöglich?

Also das ist nun wirklich an mehreren Stellen falsch…
Die Unterscheidung ist für Low Speed oder Full Speed und da gibt es nur 
einen Pull-Up an D+ oder D- für diese Kennung.

Und ja, es ist komplett unmöglich eine der Leitungen gezielt 
anzusteuern, das sind keine I/O-Pins, das ist eine differenzielle 
digitale Leitung mit einem Protokoll, von dem die untere Ebene in 
Hardware ausgeführt ist.

Die Frage ist etwa so, als wenn jemand den Ethernet-Port verwenden 
wollte,um damit direkt ein Steuersignal zu erzeugen.

Um über USB etwas zu steuern, benötigt man ein Device, das das Protokoll 
spricht und dann entsprechende Funktionen zur Verfügung stellt. Das kann 
man entweder selber bauen (wenn man weiss was man da tut) oder als 
fertigen Chip/Modul kaufen, z.B. die hier:
https://www.codemercs.com/de/io

von Wolfgang (Gast)


Lesenswert?

Daniel A. schrieb:
> Typisch Windows Nutzer... Unter Linux braucht man die Endung nicht.

Es geht um das Dateiformat, nicht um irgendeine Ende.
Guck dir die ersten 4 Zeichen der Datei an.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mat. K. schrieb:
> und wurde gerne PIN A7 (D-) dauerhaft  auf high/low ziehen.
> Ist das möglich?
Ja, völlig problemlos: löte den Pin mit einer Drahtbrücke dauerhaft auf 
high oder low.
[/sarkasmus]

Mat. K. schrieb:
> 3v Pulse generieren Dauer < 1ms. Der soll möglich sauber sein.
> Bisher hatte ich ein USB Relay, der generiert aber kein sauberes Signal.
Definiere "sauber". Für mich heißt "sauber" so viel wie "möglichst 
rechteckig und ohne Überschwinger".

> Pulse generieren Dauer < 1ms.
In definierten Zeitabständen? Unter Windows? Als offensichtlich blutiger 
Laie? Vergiss es!

Mat. K. schrieb:
> Ein Arduibo Board was ich als USB CDC koniguriere um ein Pin zu togglen?
Nein, völlig anders: der Arduino gibt den Puls aus. Der PC konfiguriert 
nur die Zeiten. Oder gibt evtl. sogar nur die Versorgungsspannung für 
den Arduino her.

Diese Anleitung war schon die allererste Antwort auf deine erste Frage 
vor einem halben Jahr:
Beitrag "Re: wie erzeuge ich von einem windows laptop aus einen 1 mikrosekunden puls mit 3.3 Volt"

Du siehst: die einzig sinnvolle Vorgehensweise "nimm einen externen µC 
für den zeitlichen Ablauf" hat sich seither nicht geändert. Was ist an 
diesem Vorschlag schlecht zu verstehen?

von Hans (Gast)


Lesenswert?

Guido Körber schrieb:
> Hans schrieb:
>> Windows checkt als erstes, wenn der USB-Stecker eingesteckt wird, ob die
>> Datenleitung auf + oder - gezogen ist, anhand von dem entscheidet
>> Windows, ob es sich um  usb1 oder usb2 handelt, also vielleicht doch
>> nicht ganz unmöglich?
>
> Also das ist nun wirklich an mehreren Stellen falsch…
> Die Unterscheidung ist für Low Speed oder Full Speed und da gibt es nur
> einen Pull-Up an D+ oder D- für diese Kennung.

Low speed und full speed ist ja nichts anderes als USB1 u. USB2...
- Aber natürlich zieht das device die Steuerleitungen herunter und nicht 
der USB-host, sorry.
Also ist das Toggeln der Datenleitung durch den host nicht möglich.

von Émile (Gast)


Lesenswert?

Hans schrieb:
> Low speed und full speed ist ja nichts anderes als USB1 u. USB2...

Nein, Low- und Fullspeed waren beide bereits Bestandteil von USB1.

USB2.0 erweiterte das um Highspeed.

Es ist aber nicht sinnvoll, die genutzte Geschwindigkeit mit einer 
Versionsnummer zu assoziieren, weils einfach nicht eindeutig ist.

Alle Geschwindigkeiten gehören nämlich jetzt auch zu USB3.2 (so wie sie 
früher zu 3.0 und 3.1 gehörten, gehörten Low- und Fullspeed mit der 
Einführung von USB2.0 zu diesem Standard.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Hans schrieb:
> Low speed und full speed ist ja nichts anderes als USB1 u. USB2...

Nein. USB 1.1 Geräte können Low Speed und Full Speed sein.

USB 2.0 Geräte können Low Speed, Full Speed und High Speed sein. 
Letztere werden aber initial erst als Full Speed erkannt und auf High 
Speed umgeschaltet, sofern der Host das überhaupt unterstützt. Es sind 
aber z.B. auch USB 2.0 Geräte möglich, die nur Full Speed können.

Der Unterschied zwischen USB 1.1 und USB 2.0 ist anfangs erstmal nur 
eine Software-Sache, nämlich eine andere bcdDevice-Angabe im Device 
Descriptor.

??? schrieb:
> wäre das nicht eine Aufgabe für einen Arduino?

Eine komplett fertige Firmware für einen STM32F103 die genau die 
Anforderungen mehr als erfüllt und Mikrosekunden-genaue Pulse ausgibt 
hatte ich ja schon eingestellt, aber scheint ja irgendwie nicht passend 
zu sein ( in Beitrag "Re: wie erzeuge ich von einem windows laptop aus einen 1 mikrosekunden puls mit 3.3 Volt" ).

Diese Firmware meldet sich übrigens als USB 2.1 Gerät an, obwohl sie nur 
FullSpeed unterstützt. Das ist für den Microsoft Extended Compat ID OS 
Feature Descriptor nötig, welcher das automatische Laden von WinUSB 
ermöglicht.

: Bearbeitet durch User
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.