-
-
Erfahrener Benutzer
Roboter Experte
Highspeed Komunikation zwischen PC und externem IO-Adapter
Hallo,
für ein neues Projekt brauch ich jetzt eine Möglichkeit 32 I/O Pins möglichst schnell zu schalten.
Die Schaltfrequenz sollte 1 Mhz betragen. Für jeden I/O Pin. Nach Möglichkeit sollten die I/O Pins das Signal parallel und nicht ein pseudo parallel sein. Also wirklich gleichzeitig schalten. Und nicht irgendwie nacheinander, wie bei schieberegistern.
Da ich hierfür warscheinlich USB nehmen muss, da der seriall Port das auf keine Fall und der LPT warscheinlich nur sehr beding packen würde, würde sich dort ein µC anbeiten. Nur ist die Frage welcher? Ein AtMegaxxx geht warscheinlich auch nicht, da er nie und nimmer die Frequenzen mitmacht. Er muss ja das USB-Protokoll mitmachen, und gleichzeitig die 32 I/O Pins schalten.
Das ganze soll in einem VB-Programm ausgewertet werden können.
Das Programm schickt z.B. 4 1Byte Packete an den Controller, der dann das Signal ausgibt.
Am genialsten wäre es, wenn man den Controller auch noch mit ein paar kleinen Rotinen versehen könnte. Nach dem Motto: Wenn Eingang 1 1ms an war, dann Schalte sofort Ausgang 3 aus. Oder wenn vom PC ein 5tes 1Byte Packet kommt, dann Schalte Ausgang 5, 6, 10 und 32 an/aus. Aber das wäre nur wunderbar, und ist kein muss.
Insgesammt werden 32 I/Os benötigt, wie die genau verteilt sind weiß ich noch nicht, kommt halt auf den Speed an
Ich hoffe ihr könnt mir bei der Suche / Realisierung helfen.
Ach ja, Programmieren kann ich eigentlich nur in Bascom, anderes, wie C, hatte ich mal versucht zu lernen, blieb aber daran stecken, das es neu ist
gruß
Michael
-
Erfahrener Benutzer
Robotik Einstein
analysiere nochmal deine eigenen ansprüche, erwartest du, dass du echte und perfekte 1Mhz allein mit dem PC versenden kannst ? der arbeitet selbst nichtmal in echtzeit die programme ab, also wird allein das schon schwer die kommunikation über USB ist da auch nur ein trugschluss, ein FTDI ist nichts weiter als nen virtueller COM port und der geht am PC genausoschnell wie ein echter ^^
erklär nochmal genau was du willst und welche bedingunen du vorliegen hast, dann kann man dir vielleicht mit einem anderen lösungsweg helfen
-
Erfahrener Benutzer
Roboter Genie
Naja, theoretisch könntest du über Schieberegister und ein gemeinsam angesteuertes Latch-Signal tatsächlich 32 simultan schaltende Ausgänge bekommen - direkt mit dem AVR schalten ist nicht drinne, das gibt bestenfalls 8 Pins (ein Port) je Taktzyklus (+Wert Laden etc.) her.
mfG
Markus
-
Erfahrener Benutzer
Roboter Experte
ftdi kann 1mbit.
Schau dir deine anforderungen nochmal genau an. Vielleicht sagst du auch, wofür du das brauchst?
-
Erfahrener Benutzer
Fleißiges Mitglied
Windows kann aber kein 1mbit
-
Erfahrener Benutzer
Robotik Einstein
und er brauch 4mbit bei 32 I/Os 4byte pro schaltvorgang
-
Erfahrener Benutzer
Roboter Genie
Ceos, nochmal zurück ins Bett und mit dem richtigen Bein aufstehen
4 Byte / Schaltvorgang machen 32 Bit / Schaltvorgang und bei einer Frequenz von 1 Mhz sind dass 4 MByte/s bzw. 32 MBit/s
Wohlgemerkt, in SI-Einheiten, nicht in MiBytes
mfG
Markus
-
Erfahrener Benutzer
Robotik Einstein
40 Mbit sogar wenn man von UART/COM protokoll ausgeht hast ja recht ^^
-
Erfahrener Benutzer
Roboter Experte
Hallo,
danke schon mal für die Antworten.
Es geht dabei um eine Modellbahnsteuerung.
An die 32 I/O Leitungen werden Schieberegister angschlossen. Ein paar für input ein paar für Output.
Da es auf der Modellbahn um bewegte abläufe geht, ist eine schnelle Reaktion auf best. Ereignisse erfoderlich. Wenn man sich vorstellt, das ein Zug mit 0,5m/s fährt. Naja, das ist Vorbildgeschwindigkeit, wenn jetzt die Kinder meiner Schwester kommen, dann erhöt sich das ganze schon mal auf 1-2m/s.
Gehen wir mal auf 2m/s aus. Die kürzeste Meldestelle ist 10cm lang. Das bedeutet, das der Zug/Lok dort gerade mal 1/20s darauf ist. Sprich ich müsste alle 50ms messen. Um auf Nummer sicher zu gehen alle 25ms. So da es aber nicht nur eine Melde stelle gibt, sondern auf meiner Anlage bereits 80, müssen alle 0,3ms die Kontakte abgefragt werden. Das wären immerhin 3000Hz. Da aber das ganze bei mir nur eine Probestrecke ist, und später mal auf die Anlage von meinem Vater übertragen werden soll, und er allein schon im Schattenbahnhof mal eben diese 80 Kontakte verbrät, die ganze Anlage wird dann so ca. 4000 Kontakte haben. Das wäre das 50 fache. Also auch die 50fache Frequenz. Das macht dann 150000Hz. Hee? Ich hatte dort doch was von 750kHz ausgerechnet und nicht 150kHz.
Es gibt aber dann auch noch die Ausgabe, dort werden, kann man fast sagen alle 4 Besetzmelder ein neuer Block. Pro Block werden 8bit für die Fahrspannug und 1bit für die Fahrrichtung benötigt. Für meine Anlage also 20 an der Zahl.
Das würde dann 20x(8bit+1bit)=180bit machen. Diese wieder alle 25ms. Macht dann 7200bit/s. Also 7,2kHz. Für meinen Dad wieder das 50fache. Macht dann 360kHz.
Da waren es 1,08Mhz.
Ich muss mich da wohl verrechnet haben.
Das ganze ist auch noch 1Leitung. Ich hatte es für 5 Leitungen berechnet. Muss mir wohl ein Fehler unterlaufen sein. Sorry. Brauch dann keine 1Mhz sondern ein bisschen weniger.
Trotzdem bräuchte ich eure Hilfe, da mein PC keine LPT Port und keine COM Port mehr hat.
mfg
Michael
-
Erfahrener Benutzer
Roboter Genie
com1 kanst du dir über adapter machen. ich würd aber nicht die ganze bahn anlage über ein µC laufen lassen sondern bissel verteilen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen