Du kannst das doch auch einfach per RS232/ UART machen. Einfach die beiden Controller RxD und TxD vertauscht verbinden, geht das per "print" und "input".
Viele Grüße,
William
Hallo zusammen,
habe heute mal wieder eine Verständnisfrage, da diese Frage mehrere Bereiche abdeckt, Elektronik und Programmierung, weis ich nicht genau wo ich sie stellen soll, hab mich dann für dieses Forum entschieden.
Ich verwende einen Mega32 als Hauptcontroller. Dann habe ich noch einen Mega8, der zur Steuerung einer Motorbrücke (L29 verwendet werden soll.
Nun möchte ich, dass der Mega32 dem Mega8 Richtung und Geschwindigkeit der Motoren mitteilt, der Mega8 steuert diese dann per PWM usw. an
Nur wie realisiert man so eine Kommunikation? Hab im RN-Wissen Bereich bereits gesucht und I²C / bzw SPI Bus gefunden. Nur leider habe ich keine Idee wie ich so eine Schaltung aufbaue, geschweige denn diese richtig anzusteuern.
Wäre für ein paar Tipps sehr dankbar.
LG
Daniel
Du kannst das doch auch einfach per RS232/ UART machen. Einfach die beiden Controller RxD und TxD vertauscht verbinden, geht das per "print" und "input".
Viele Grüße,
William
ist das denn schnell genug?
grade bei zeitkritischen Anwendungen wie Motorsteuerungen?
Und vorallem wären dann bei dem Mega32 die Rx und Tx Ports belegt, die brauch ich ja noch für den PC.
Schnell genug ist das schon. Auf jeden Fall schneller als dein Motor aufgrund seiner Trägheit auf PWM Änderungen reagieren könnte. Vom Mega32 brauchst du nur den TxD zum anderen Controller verlegen.
Wenn dein Mega32 auch noch Daten zum PC senden soll, dann kannst du einfach seinen TxD Anschluss verzweigen und also an den PC und an den Mega 8 anschließen (wurde mir vor kurzem hier im Forum so erklärt). Dass der PC nicht auf die Befehle reagiert die eigentlich nur an den MEga8 gesendet werden sollten, kannst du ja per Software regeln.
Aber per TWI ist das bestimmt eleganter, vielleicht erklärts ja hier noch jemand...
Naja, wie schnell ist "schnell genug"?ist das denn schnell genug?
da wären schon konkrete Angaben sinnvoll, wie lange es denn dauern darf bis eine vom Mega32 abgeschickte Nachricht vom Mega8 empfangen wurde.
So viele Treppen und so wenig Zeit!
naja ich habe da wie gesagt keinerlei Erfahrungen mit, wie lange würde es denn dauern?
Beispiel:
Roboter fährt auf ein Hindernis zu, Mega32 bekommt vom Sensor die Meldung da ist ein Hindernis, dieser sendet dem Mega8 die entsprechenden Befehle zu (Nothalt z.B.)
Noch eine andere Frage, kann man über den Rx bzw Tx Port auch mehrere Controller steuern, würde das gehen, wenn ich einfach mehrer anschließe oder wie darf man sich das vorstellen. Man könnte ja eine Routine einbauen, die auswertet an welchen Controller die Sendung gerichtet ist. So könnte man das ja auch machen, wenn die Sendung zum PC gehen soll.
Hoffe man kann mir folgen
---
Update:
---
Könnte ich dann auch an einem Ozi mehrere Controller hängen? So könnte ich viel Platz sparen auf den Motorsteuerungsplatinen.
Das müsste eigentlich gehen.Zitat von daniel.weber
Aber du kannst ja auch einen AtMega162 nehmen. Der hat jeweils zwei RxD und TxD Anschlüsse.
mfg
Das mit dem mehrere Controller steuern ist möglich,
mit einem Quarz/Oszillator kannst du allerdings nicht mehrere Controller betreiben.
MfG Christopher \/
Reicht locker.Beispiel:
Roboter fährt auf ein Hindernis zu, Mega32 bekommt vom Sensor die Meldung da ist ein Hindernis, dieser sendet dem Mega8 die entsprechenden Befehle zu (Nothalt z.B.)
Denkansatz:
Dein Bot hat eine bestimmte Masse.
Der Antrieb (Motor mit Getriebe etc.) braucht rein Mechnisch eine gewisse Zeit um zum Stehen zu kommen.
Diese Zeit liegt meist weit über der für die Komunikation.
Darum brauchst du dir also keine sorge zu machen.
Die Frage hat Willa dir eigentlich schon beantwortet.Noch eine andere Frage, kann man über den Rx bzw Tx Port auch mehrere Controller steuern, würde das gehen, wenn ich einfach mehrer anschließe oder wie darf man sich das vorstellen. Man könnte ja eine Routine einbauen, die auswertet an welchen Controller die Sendung gerichtet ist. So könnte man das ja auch machen, wenn die Sendung zum PC gehen soll.
Du schaffst dir einfach ein eigenes Protolkoll.
Zb. Startwert,Adresse (Also wer angwesprochen wird),Befehl,Daten etc.,Stoppwert.
Also ganz ähnlich wie bei I2C
@christopher1
Warum denn nicht ?mit einem Quarz/Oszillator kannst du allerdings nicht mehrere Controller betreiben.
Sicher kannst du mehrere Controller mit einem Takt betreiben.
Takt auf "Extern" stellen und einspeisen.
Das kann sein das ein TTL-Generator alle Controller taktet.
Kann aber auch sein das einer seinen Quarztakt bzw. internen Takt mit allen anderen Teilt wenn man ihn anzapft.(Xtal kann auch nen Ausgang sein.
Natürlich muß man sicherstellen daß das Taktsignal auch sauber bei allen beteiligten ankommt.
Lange leitungen sind da nicht angesagt.
Diese Methode ist vorteilhaft wenn man verschiedene Controller zeitkritisch synchronisieren muß.
Für die hier angestrebte anwendung ist das allerdings eher weniger nötig.
Da reicht es wenn jeder Controller einen "Baudratenfreundlichen Takt" besitzt.
Gruß
Ratber
Sorry, hab das selbst noch nicht probiert, aber schon öffters gelesen, dass das nicht/schlecht klappt, aber man sollte halt nicht alles glauben
MfG Christopher \/
Lesezeichen