Moin! Ich bastele gerade an einer Multi-Schnittstellen Schritt- und DC-Motor-Steuerung. Den unvollständigen Schaltplan habe ich angehängt. Ich will eigentlich versuchen das über UART übertragene Bit auf einem LED-Cluster aus 8 LEDs wiederzugeben, damit man auch sieht, was übertragen worden ist bzw. dass etwas übertragen worden ist. Ich kann kein Schieberegister verwenden, da ich ja keinen Takt habe. Wie kann ich sonst die 8Bit in irgendein externes Register stecken? Kommentare zu dem Schaltplan sind übrigens erwünscht ;) Auch konstruktive Kritik. Es sei angemerkt, dass dies meine erste vollständig selbst entwickelte Schaltung ist und das noch 470µF Kondensatoren zur Stabilisierung an die Vs aller Motortreiber kommen. Ebenso werde ich natürlich die Busse noch mit dem AVR verbinden und das Reset-Netzwerk verwollständigen. In diesem Sinne vielen Dank! Daniel
Hast du eine Schachtel von MAX3221 geschenkt bekommen und versuchts sie nun schnellstmöglich alle zu verbauen, egal ob's einen Sinn ergibt oder nicht?
Konkret: Das Bündel MAX3221er ist so verschaltet komplett falsch, mitsamt des Multiplexers. Warum willst du auf der Platine intern mit aller Gewalt mit RS232-Pegeln arbeiten? Der einzige der MAXe, der tatsächlich Sinn ergibt, ist IC3. Alle anderen MAXe sind nicht nur überflüssig, sondern regelrecht falsch bis schädlich. Und wenn das mal repariert ist, dann wird aus Analogmux IC6 und 2-fach DIP-Switch ein 4-fach DIP-Switch für den Rx-Anschluss vom Controller.
Der MAX3221 benötigt min. 100nF Kondensatoren. Mehr schadet nicht, weniger schon, d.h. 47nF sind zu wenig.
Andreas Kaiser wrote: > Konkret: Das Bündel MAX3221er ist so verschaltet komplett falsch, > mitsamt des Multiplexers. > > Warum willst du auf der Platine intern mit aller Gewalt mit RS232-Pegeln > arbeiten? Der einzige der MAXe, der tatsächlich Sinn ergibt, ist IC3. > Alle anderen MAXe sind nicht nur überflüssig, sondern regelrecht falsch > bis schädlich. > Ich habe mich was das angeht nach dieser|diesem Application Note gerichtet: http://www.maxim-ic.com/appnotes.cfm/an_pk/588 Die Beschaltung mit den kleineren Kondensatoren entstammt den Mindestanforderungen aus dem Datenblatt des MAX3221 für 5V Vcc. Die könnte ich aber noch vergrößern, dass stimmt. Ich möchte ja eigentlich nur die Signal weiterleiten. Brauche ich denn für den FTDI und den XT-Nano (3,3V mit Pegelkonverter) überhaupt irgendeinen MAXXXX? > Und wenn das mal repariert ist, dann wird aus Analogmux IC6 und 2-fach > DIP-Switch ein 4-fach DIP-Switch für den Rx-Anschluss vom Controller. Der Multiplexer als solcher ist aber schon richtig, denke ich. Warum 4-fach? Bin wie immer dankbar für die Hilfe!
> Die Beschaltung mit den kleineren Kondensatoren entstammt den > Mindestanforderungen aus dem Datenblatt des MAX3221 für 5V Vcc. Ok, stimmt tatsächlich. Wobei ein MAX3xxx bei 5V freilich etwas fehl am Platz ist, da nimmt man meist erheblich (MAX232, 1µF) oder immer noch etwas (MAX232/202E 100nF) billigere Typen. > Ich möchte ja eigentlich nur die Signal weiterleiten. Brauche ich denn > für den FTDI und den XT-Nano (3,3V mit Pegelkonverter) überhaupt > irgendeinen MAXXXX? Wie geschrieben - einzig für die 9pol-Seriell zum PC brauchst du wirklich einen MAXe. Sonst nirgends. Und was den XT-Nano angeht (sofern er das Ethernet-Dings ist was Google darunter auswirft): Der mag offenbar auch andere Schnittstellen leiden. I2C beispielsweise. Denkbar wäre hier auch, den Mega mit 3,3V betreiben (bis 8MHz), was einerseits die Pegelkonverter einspart, andererseits wieder den teureren MAXx braucht. > Der Multiplexer als solcher ist aber schon richtig, denke ich. Warum > 4-fach? Wenn's dich unbedingt danach gelüstet, kannst du den auch drinlassen. Aber dieser Doppel-4fach Mux plus 2fach DIP-Switch für Umschaltung zwischen 3 seriellen Interfaces leistet auch nicht mehr als ein 3fach DIP-Switch für direkte Umschaltung zwischen 3 Rx-Leitungen. Die Tx-Leitung kannst du nämlich auch ohne Umschalter direkt an alle Kunden dranhängen. Und wenn du den Nano mit I2C oder SPI betreibst, sind es nur noch 2 serielle Schnittstellen, FTDI und 9pol COM. Dann reduziert sich das auf ein 3-pol Stiftleiste zum Umschalten per Jumper.
Andreas Kaiser wrote: >> Die Beschaltung mit den kleineren Kondensatoren entstammt den >> Mindestanforderungen aus dem Datenblatt des MAX3221 für 5V Vcc. > > Ok, stimmt tatsächlich. Wobei ein MAX3xxx bei 5V freilich etwas fehl am > Platz ist, da nimmt man meist erheblich (MAX232, 1µF) oder immer noch > etwas (MAX232/202E 100nF) billigere Typen. > Ja, das sehe ich jetzt auch ein. Ist ja keine Ultra-Low-Power-Schaltung ;) >> Ich möchte ja eigentlich nur die Signal weiterleiten. Brauche ich denn >> für den FTDI und den XT-Nano (3,3V mit Pegelkonverter) überhaupt >> irgendeinen MAXXXX? > > Wie geschrieben - einzig für die 9pol-Seriell zum PC brauchst du > wirklich einen MAXe. Sonst nirgends. Ja, ich bin ein Idiot. Ich bin angeregt durch Deinen Post auch zum gleichen Ergebnis gekommen und es freut mich sehr. > > Und was den XT-Nano angeht (sofern er das Ethernet-Dings ist was Google > darunter auswirft): Ja, ist er. > Der mag offenbar auch andere Schnittstellen leiden. > I2C beispielsweise. Denkbar wäre hier auch, den Mega mit 3,3V betreiben > (bis 8MHz), was einerseits die Pegelkonverter einspart, andererseits > wieder den teureren MAXx braucht. Nee, das lassen wir mal lieber ;) Ich will eigentlich so früh wie möglich die BOM fertig bekommen, weil die Bauteile bei uns (in der Uni) zentral bestellt werden müssen und ich für meine Bachelor-Arbeit nur 2 Monate Zeit habe (Board-Design, Bestellung, Zusammenbau, Software, TESTEN, Dokumentieren und Arbeit schreiben) >> Der Multiplexer als solcher ist aber schon richtig, denke ich. Warum >> 4-fach? > > Wenn's dich unbedingt danach gelüstet, kannst du den auch drinlassen. > Aber dieser Doppel-4fach Mux plus 2fach DIP-Switch für Umschaltung > zwischen 3 seriellen Interfaces leistet auch nicht mehr als ein 3fach > DIP-Switch für direkte Umschaltung zwischen 3 Rx-Leitungen. Die > Tx-Leitungen kannst du nämlich auch ohne Umschalter direkt an alle > Kunden dranhängen. > > Und wenn du den Nano mit I2C oder SPI betreibst, sind es nur noch 2 > serielle Schnittstellen, FTDI und 9pol COM. Dann reduziert sich das auf > ein 3-pol Stiftleiste zum Umschalten per Jumper. Ich hatte gerade die Idee, dass man diese Schaltung dann auch als eine Art universellen Schnittstellenkonverter nutzen kann. Dazu müsste ich dann ja nur einen 6-fach DIP-Switch nutzen und so jeweils eine Rx- und eine Tx-Leitung schalten, richtig? Das heißt zum Beispiel seriell rein, aber über Ethernet raus z.B.. Habe ich da etwas übersehen? Ich frage mich, weil mir die Idee gerade sehr gut gefällt. Tausend Dank!
Wenn du in der Lage sein willst, auf 2 Interfaces gleichermassen zu arbeiten, dass muss der Controller das auch können, dann reicht eine Muxer-Umschaltung nicht aus. Musst du also beide USARTs vom Mega162 verwenden. Das kannst du nun dadurch lösen, indem du mit einer recht komplexen Mux-Konstruktion die 2 USARTs auf die 3 asynchronen Kandidaten (9pol, FTDI, XT-Nano) umschaltest. Oder, wesentlich einfacher, indem du den Mega162 mit 3,3V fährst, die 9pol-Serielle via MAXe an UART0, den FTDI direkt an UART1, und den XT-Nano direkt an die I2C-Pins vom Controller anschliesst. Dann geht jeder mit jedem ohne Umschaltung, bei geringstem Hardware-Aufwand Wenn dir das softwareseitig zu kompliziert erscheint (ist es nicht, den I2C-Code gibt's in einer AN) und du doch wieder umschalten willst: Wenn es nur darum geht, eine der Schnittstellen 9pol/USB/Ethernet verwenden zu können, und nicht mehrere davon, dann musst du nur den Rx-Pin umschalten. Der Tx-Pin kann mit allen dieser Kandidaten gleichzeitig verbunden sein. Wenn da soweiso nix drinsteckt, stört das auch niemanden.
Kann ich nicht auch einfach die empfangenen Daten vom µC gleich wieder in das Ausgabe-Register schreiben, von mir aus auch mit Zeitverzögerung? Dann hätte ich doch den µC quasi als Nullmodem implementiert. Ich wollte nicht von zwei Schnittstellen gleichzeitig Duplex durchführen können, sondern immer nur eindirektionalen Verkehr erreichen. Sonst müsste man ja wie Du beschrieben hast immer Umschalten. Eigentlich ist das ja auch nicht so wichtig. Aufgabe ist und bleibt es ja die Motoren zu steuern und dazu werden die Rückmeldungen des µC ja höchstwahrscheinlich immer an die Schnittstelle zurückgesendet, welche auch die Befehle gegeben hat. Allerdings könnte ich natürlich auch den von Dir angeregten "Hardware-Broadcast" durchführen. Gefällt mir und hilft auch beim Debuggen, denke ich. Wenn ich das ganze jetzt auf Hardware-Handshake umstellen wollte, müsste ich doch nur noch die CTS- und RTS-Signale über einen Max232 an die serielle und direkt an die anderen beiden Umsetzer senden, oder? Die Signale würden dann natürlich per Software im µC gesetzt.
> Kann ich nicht auch einfach die empfangenen Daten vom µC gleich wieder > in das Ausgabe-Register schreiben, von mir aus auch mit Zeitverzögerung? Blöd nur, wenn du Daten empfängst, während der Muxer grad auf die Ausgangsschnitstelle geschaltet hat. Die sind dann weg, oder kommen halbiert als Schrott an. Ergo: Nein, das geht üblicherweise nicht. Jedenfalls nicht wenn du Tx/Rx gemeinsam umschaltest. Mit getrennten Muxern für Rx und Tx geht es, aber das erhöht wieder den Aufwand. Warum nimmst du einen Mega162 der sowieso schon ungewöhnliche zwei UARTs hat und weigerst dich standhaft, die zweite zu verwenden? > Wenn ich das ganze jetzt auf Hardware-Handshake umstellen wollte, müsste > ich doch nur noch die CTS- und RTS-Signale über einen Max232 an die > serielle und direkt an die anderen beiden Umsetzer senden, oder? Wenn die Motorsteuerung da auch mitmischen soll - nein.
Andreas Kaiser wrote: >> Kann ich nicht auch einfach die empfangenen Daten vom µC gleich wieder >> in das Ausgabe-Register schreiben, von mir aus auch mit Zeitverzögerung? > > Blöd nur, wenn du Daten empfängst, während der Muxer grad auf die > Ausgangsschnitstelle geschaltet hat. Die sind dann weg, oder kommen > halbiert als Schrott an. Hätte vielleicht erwähnen sollen, dass ich entweder das 6-fach DIP-Switch-Modell (jeweils Rx und Tx schaltbar) oder das Rx schaltbar und Tx Broadcast an alle Schnittstellen zu Grunde lege. > Warum nimmst du einen Mega162 der sowieso schon ungewöhnliche zwei UARTs > hat und weigerst dich standhaft, die zweite zu verwenden? Weil ich einerseits ohnehin schon 22 der 35 maximal verfügbaren IO-Pins nutze und eventuell noch ein einen 8LED-Status-Cluster anschließen wollte und andererseits keinen Notwendigkeit dafür sehe. Wozu sollte ich es denn nutzen. Alles was ich eigentlich machen will, funktioniert gut über 1 UART. Die Kette sollte eigentlich so laufen: Daten rein -> Steuerbefehle und -parameter entnehmen -> entsprechende Ausgangspins setzen -> Rückmeldung generieren -> Rückmeldung über UART raus >> Wenn ich das ganze jetzt auf Hardware-Handshake umstellen wollte, müsste >> ich doch nur noch die CTS- und RTS-Signale über einen Max232 an die >> serielle und direkt an die anderen beiden Umsetzer senden, oder? > > Wenn die Motorsteuerung da auch mitmischen soll - nein. Wie meinst Du das? Die Motorsteuerung besteht nur aus einem entsprechenden Programm im Controller und den 6 Motortreibern. Ich wollte den Hardware-Handshake zwischen µC und Gegenstelle ausführen, also entweder ein PC am RS-232 oder der FTDI (der diese Signale ohnehin benötigt) und der XT-Nano (der diese Signale ebenso benötigt). D.h. ich muss RTS und CTS ohnehin generieren/auswerten, dann kann ich sie auch gleich für RS-232 nutzen.
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.