Hallo! Der Titel sagt es ja schon. Ich habe 8 digitale Eingänge und möchte gerne drei davon (die einen SPI-Bus bilden) auf drei Ausgänge legen. Anders gesagt: Auf den 8 Eingängen sind irgendwie SDI SDO und SCK und ich möchte die gerne auf drei Ausgangspins legen, damit ich diese wiederum an einen AVR anschliessen kann, der SDI/SDO/CLK auf fest definierte Pins erwartet. Wahrscheinlich finde ich deshalb nichts, weil jeder ARM heutzutage Multiplexing schon integriert hat. Aber vielleicht kann mir ja doch noch jemand einen Tipp geben. Bisher habe ich das via 3 8:1 ICs erledigt, aber alleine das kostet mich 9 Steuerleitungen extra. Autsch.
Dany schrieb: > Der Titel sagt es ja schon. Sagt er nicht. EIN Multiplexer schalten EINES von mehreren Signalen auf EINEN Ausgang durch. Suchst du einen dreifach 8:1-Multiplexer, damit du aus 8 Eingangssignalen beliebig auswählen kannst, welche dieser Signal auf deinen drei Ausgangsleitungen als SPI-Bus erscheinen? Oder hast du am Eingang acht SPI Geräte, die du wahlweise auf einen Ausgang schalten möchtest (dann hast du das "BUS" bei SPI-Bus nicht verstanden)?
Wolfgang schrieb: > Dany schrieb: >> Der Titel sagt es ja schon. > > Sagt er nicht. Warum verstehst du den TO nicht? Was er will ist eindeutig.
Herbert schrieb: > Warum verstehst du den TO nicht? Was er will ist eindeutig. Ich kann dir sagen warum ich den TO nicht verstehe: Weil er Blödsinn labert. Er redet z.B. davon SDI, SDO und SCK auf Ausgangspins zu legen die dann an einen AVR gehen sollen. Blöd nur, dass er für SDO und SCK Eingangspins an seinem Multiplexer bräuchte. Die nächste Frage die sich stellt ist warum er überhaupt SDI, SDO und SCK umschalten will. Hätte er anständige SPI-Peripherie könnte er diese kaskadieren oder sternförmig anschließen und müsste sich nur um das nicht erwähnte /CS-Signal kümmern. Das klingt alles nach irgend welchem Arduino-Gemurkse für die Tonne.
Gesucht sind drei bidirektionelle (weil jeder der 8 Pins Input oder Output sein kann) 8:1 (Analog-)Mux mit I2C-Steuerung. Das Ziel ist dass man nur 2 Pins braucht um alle 3 Kanäle davon zu steuern (verschiedene I2C-Adressen vorausgesetzt). Grob in die gewünschte Richtung ginge der hier: https://www.analog.com/media/en/technical-documentation/data-sheets/ADG792A_792G.pdf Falls man den per I2C-Befehl auch auf komplett hochohmig schalten kann, könnten 2 solche Chips schon reichen um 8 Eingänge zu muxen. Hab das aber nicht weiter vertieft. Maxim hat wahrscheinlich auch solche Mux-Chips.
:
Bearbeitet durch User
Dany schrieb: > Aber vielleicht kann mir ja doch noch jemand einen Tipp geben. (analoge) Kreuzschienenverteiler, crosspoint switches, MT8806 https://www.microsemi.com/product-directory/switches/1453-analog-cross-point-switches
Das wäre eine klassische Aufgabe für ein kleines CPLD oder FPGA. Die 5V-Bausteine XC9536 werden ja leider nicht mehr hergestellt. Ansonsten gibts Lattice MachXO ab 2.50€, und die kleinste Version reicht für diese Aufgabe. fchk
Nikolaus S. schrieb: > Gesucht sind drei bidirektionelle ... Bist du der TO oder woher willst du das jetzt wissen? https://www.mikrocontroller.net/articles/Hilfe:Forum_Nutzungsbedingungen Beteiligung an einer Diskussion unter verschiedenen Namen
Herbert schrieb: > Warum verstehst du den TO nicht? Was er will ist eindeutig. Warum antwortest Du dem TO dann nicht einfach?
Dany schrieb: > Ich habe 8 digitale Eingänge und möchte > gerne drei davon (die einen SPI-Bus bilden) auf drei Ausgänge legen. > Anders gesagt: Auf den 8 Eingängen sind irgendwie SDI SDO und SCK und > ich möchte die gerne auf drei Ausgangspins legen, damit ich diese > wiederum an einen AVR anschliessen kann, der SDI/SDO/CLK auf fest > definierte Pins erwartet. Diese Fragestellung habe ich mir mal durch den Kopf gehen lassen und komme zu dem Schluss das es wohl um 8 Anschlüsse an (Slave-)Geräten geht die an einen AVR angeschlossen werden sollen. Auch ist nicht definiert wo die jeweiligen Signale bei den 8 Anschlüssen geschaltet sind, scheint also im weitesten Sinn ein reverse engenierung zu sein. Das benötigt hier letztlich 2 1:8 Dekoder/Demultiplexer für CLK/MOSI sowie 1 8:1 Enkoder/Multiplexer für MISO, jeweils also Unidirektionale Bauteile, ggf. noch einen Schutz wenn Ausgang an Ausgang geschaltet wird. Bevor ich jetzt weiter denke stelle ich dem TE die Frage ob dem so ist, dann hat man die Basis zum weiter planen.
Wolfgang schrieb: > Nikolaus S. schrieb: >> Gesucht sind drei bidirektionelle ... > > Bist du der TO oder woher willst du das jetzt wissen? 1. Nein. Und im Gegensatz zu Dir bin ich sogar angemeldet. 2. Ich habe den Beitrag des TO gelesen und verstanden was er erreichen will (ist m.E. eindeutig beschrieben - nein, ich bin auch nicht Herbert (Gast) sondern sehe das nur genauso) und in meinen Worten zusammengefasst was die Requirements sind. Dann habe ich einen Lösungsvorschlag angegeben. Abgesehen davon wäre es ja unsinnig, dass ich erst eine Frage stelle und dann selbst eine Antwort gebe. Und vor allem sehr seltsam ist dass mein Beitrag ein -1 bekommt, wobei da ja eine Lösung drinsteht, die funktionieren wird... Wenn man jetzt schon fürs Helfen angemotzt wird, bin ich auch für einen Anmeldezwang und Abschaffen der Bewertungsfunktion.
:
Bearbeitet durch User
Wolfgang schrieb: > Dany schrieb: >> Der Titel sagt es ja schon. > > Sagt er nicht. EIN Multiplexer schalten EINES von mehreren Signalen auf > EINEN Ausgang durch. > Suchst du einen dreifach 8:1-Multiplexer, damit du aus 8 > Eingangssignalen beliebig auswählen kannst, welche dieser Signal auf > deinen drei Ausgangsleitungen als SPI-Bus erscheinen? Ich denke: ja. Zitat1: "Auf den 8 Eingängen sind irgendwie SDI SDO und SCK und ich möchte die gerne auf drei Ausgangspins legen" Zitat2: "Bisher habe ich das via 3 8:1 ICs erledigt, aber alleine das kostet mich 9 Steuerleitungen extra. Autsch." Er hat also bisher drei MUXe (vielleicht sogar Analoge) mit 3 Steuerbits für die 1-aus-8-Auswahl, die zusammen 9 Steuerleitungen brauchen. Was ist daran schwer zu verstehen? Daher meine ich die Lösung einen Analog-MUX mit I2C-Steuerung zu verwenden vereinfacht ihm die Problematik von 9 Steuerleitungen. > Oder hast du am Eingang acht SPI Geräte, die du wahlweise auf einen > Ausgang schalten möchtest (dann hast du das "BUS" bei SPI-Bus nicht > verstanden)? Ich denke: nein. Er hat nirgends 8 SPI-Geräte erwähnt. Und auch nicht von mehreren BUSsen gesprochen sondern 3 Signalen aus 8 die einen SPI-Bus bilden. Da hätte er wahrscheinlicher gefragt: "ich habe 8 SPI devices aber nur einen SPI-Bus - wie kann ich die Multiplexen?". Was ist daran für Euch schwer zu verstehen? Ich denke immer noch dass er einen Kreuzkoppler oder Analog-MUX braucht der sich möglichst sparsam ansteuern läßt. Lassen wir doch den TO antworten welche Vorschläge ihm am besten gefallen...
Matthias L. schrieb: > Herbert schrieb: >> Warum verstehst du den TO nicht? Was er will ist eindeutig. > > Warum antwortest Du dem TO dann nicht einfach? Ich provoziere gerne Leute wie Dich und Wolfgang, weil ich eure Scheinheiligkeit nicht leiden kann.
Mal abgesehen davon, dass ich deine SPI-Sache auch nicht ganz verstanden habe... bleiben wir mal bei deiner Frage zum 3-fachen 8:1 Multiplexing. Wenn du die möglichen Kombinationen einschränken und ein Steuerbit sparen könntest, dann könntest du die drei Muxer mit den 8 Ausgängen eines 74hct595 steuern, der seriell über 3 Leitungen vom AVR geladen wird. Oder du nimmst stattdessen einen MCP23017 mit 16 Ausgängen, der über I2C angesteuert wird. Damit hast du die maximale Flexibilität. Ist die Frage, was für dich elegant genug ist. Wenn du nur einen einzigen Baustein verwenden willst, dann wäre die Sahnelösung sicher der FPGA, wie schon jemand erwähnt hat, aber der Designaufwand ist vergleichsweise eher heftig.
OK, ich hole etwas mehr aus, da es immernoch Raum für Missverständnisse gibt. Also ich habe hier gut 30 verschiedene Bastelgeräte. Alle möglichen Gadgets. Um Ordnung in das Chaos zu bringen habe ich eine eigene ISP-Schnittstelle entworfen, die 10 Pins hat. Die 10 Pins sind so definiert: VCC, GND, GIO0...GIO7 Es gibt aber keine Rules, welcher GIO welche Funktion haben muss. Ein Gerät hat einen AVR, der über GIO0 bis GIO2 programmiert wird, dann hat er aber noch auf GIO4 eine UART-Schnittstelle für Nutzdaten. Ein anderer hat auf GIO3-GIO6 noch einen SPI für Nutzdaten etc. Das ist das eine. Was ich jetzt mache ich einen generellen Debugger, der mit allen Geräten kommunizieren können soll. Eine Art "Handy" mit "Apps" halt, wenn man so will. Wenn ich jetzt ein Gadget an meinen Debugger anstecke, muss ich jetzt die GIO0...GIO7 so routen, dass sie an einen USART des Debuggers ankommen. Ich glaube man nennt sowas Cross Switch. An einen FPGA dachte ich auch schon, allerdings müsste ich da das SPI Protokoll implementieren, und ich habe davon keine Ahnung. Die anderen Lösungen schaue ich mir nachher nochmal im Detail an. Ich wollte jetzt erstmal schnell die Missverständnisse aufklären.
Der Thread läuft mal wieder so, wie viele andere vorher. Der TO schildert seine Lösung für ein Problem und fragt: geht das nicht auch einfacher, besser, ... Jetzt fängt jeder Leser erst mal an, die angebotene Lösung in das Problem zurückzuführen und von da aus eine Verbesserung/Vereinfachung zu suchen. Dabei kommt es oft zu Mehrdeutigkeiten und schon gehen die Diskussionen los. Dass die Schilderung des eigentlichen Problems schneller zu brauchbaren Ideen führen könnte, scheint weitgehend unbekannt zu sein. Just my 2 cents. Sorry, zu lange kein update gemacht.
:
Bearbeitet durch User
Ich habe manchmal den Eindruck, die Leute warten hier einfach nur darauf, dass sie andere "runtermachen" können. Echt traurig wie offenbar gelangweilt, borniert und/oder frustriert einige doch sein müssen. An den TO: Du hättest genau das besser am Anfang geschrieben, dann wäre Deine Frage verständlicher gewesen. Wie auch immer, der oben vorgeschlagene MT8806 ist so eine Switchmatrix, die 8 Eingänge (bidirektional) mit 4 Ausgängen verbinden kann. https://www.microsemi.com/document-portal/doc_download/127032-mt8806-datasheet-sept11 Gibt es z.B. bei Mouser für um die 4 EUR. Benötigt aber immernoch 6 Steuerleitungen (5 für die Switchkonfiguration, 1 für STROBE zur Datenübernahme).
Dany schrieb: > An einen FPGA dachte ich auch schon, allerdings müsste ich da das SPI > Protokoll implementieren, und ich habe davon keine Ahnung. Du brauchst doch kein SPI-Protokoll, der Baustein muss doch nicht wissen, was für Signale er multiplext. Ein FPGA sollte Tri-State Pins haben, also kann jeder Pin Eingang oder Ausgang sein, das muss doch reichen. Von echt bidirektionalen Signalen war doch nie die Rede. Auf der anderen Seite vom FPGA brauchst du allerdings das I2C-Protokoll. Naja, vielleicht reichen auch Schieberegister...
Da ISP Programmieradapter Software enthalten, kann man die Pins zuordnen, wie man will. Man muss nur das Programm entsprechend erweitern. Entsprechende Quelltexte (z.B. USBASP von Thomas Fischl) sind frei zugänglich. So ein Kreuzschalter ist daher nicht notwendig. Und wenn doch, nimm halt einen. Aber beklage sich nicht über Aufwand oder Kosten. Früher als ich noch jung war, kostete ein 8x8 Kreuzschalter Chip von Maxim satte 50 Euro. Das war gegenüber allen diskreten Alternativen dennoch billig. Ich persönlich halte gar nichts von solchen "universellen" Geräten, denn spätestens in zwei Jahren fehlt da wieder eine Funktion, die du nun brauchst aber anfangs nicht berücksichtigt war. Und: Je universeller, umso aufwändiger. Selbst wenn wir mal das Geld außen vor lassen lohnt es sich nur, wenn man das Ding täglich zig mal benutzt - für Hobbybastler also niemals.
Dany schrieb: > Also ich habe hier gut 30 verschiedene Bastelgeräte. Alle möglichen > Gadgets. Um Ordnung in das Chaos zu bringen habe ich eine eigene > ISP-Schnittstelle entworfen, die 10 Pins hat. Die 10 Pins sind so > definiert: VCC, GND, GIO0...GIO7 Sowas nennt man fehlende Planung. Wenn man nicht vorher vereinbart, welche der 8 Pins SDI/SDO/CLK sind, dann muß man eben einen riesen Aufwand treiben. Man darf auch im Hobbybereich Sachen planen und Vereinbarungen aufschreiben.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.