www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeit abwarten um gleichzeitig zu starten


Autor: Cimbom Gs (cimbomgs)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

habe folgendes vor:

Ich will 2 ADC-Ports gleichzeitig starten. 1. Mikrocontroller sendet den 
2. Mikrocontroller ein Befehl zum starten, aber demit der 1. 
Mikrocontroller mit dem 2. Mikrocontroller gleichzeitig starten kann 
muss er bestimmte Zeit abwarten.(siehe Anhang)

Wie kann ich die Zeit bestimmen, was der 1. Mikrocontroller abzuwarten 
hat?

Meine Idee ist ein Timer mit dem Senden zu starten und sobald ich ein 
ACK erhalten habe, wird der Timer gestoppt. Die Zeit wird dann mit 2 
geteilt (Hin+Zurück).

Aber das kann nicht gehen, weil in der Zeit wo 1. Mikrocontroller auf 
ACK wartet, hat ja der 2. Mikrocontroller mit messen begonnen :-(..

Hat jemand eine Idee, wie ich es realisieren könnte?

Mfg
Cimbom

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du schickst den Befehl einfach an den µC2 und zugleich an dich selbst 
;-)

also vielleicht so:

µC1_TxD------------o---------------------RxD_µC2
                   |
    RxD-------------


Jeder µC fängt sozusagen mit Messen an, wenn der Befehl empfangen wird 
;-)

Autor: lontano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bom-bom-bardiere die beiden MCs mit einem gemeinsamen externen Signal : 
Bom !

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Frage ist : Wozu dieser Aufwand überhaupt ? Was für ein analog 
Signal soll gemessen werden ? Wieso reicht ein kontinuierliches Wandeln 
zweier Kanäle auf einem µC nicht aus ?

Es gibt natürlich auch µC mit Flash-Adc´s zur gleichzeitigen Erfassung 
mehrerer Känale (z.B. für feldorientierte Motorregelungen). Wie wärs 
damit ?

Autor: Ralph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Haben die ADC auf beiden µC einen externen Triggereingang ?
Wenn ja dann nutzt diesen, wenn nein, verabschiede dich von der Idee, in 
Software geht das nicht.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias L. wrote:
> Du schickst den Befehl einfach an den µC2 und zugleich an dich selbst
> ;-)
>
> also vielleicht so:
>
> µC1_TxD------------o---------------------RxD_µC2
>                    |
>     RxD-------------
>
>
> Jeder µC fängt sozusagen mit Messen an, wenn der Befehl empfangen wird
> ;-)

wie soll es gehen, dass ich den Befehn an mich selber schicke? Kannst du 
es mal etwas genauer beschreiben :-)


>bom-bom-bardiere die beiden MCs mit einem gemeinsamen externen Signal :
>Bom !

naja nicht so gut, weil µC1 zusagen hat wann es zu beginnen hat.


>Meine Frage ist : Wozu dieser Aufwand überhaupt ?
ich brauche es zur Abstandsmessung. Beide µC müssen zur gleicherzeit 2 
Messungen starten.

Es muss doch per Software möglich sein wieviele Impulse ich brauche um 
ein Signal zu übertragen oder nicht?!

Autor: Michael K. (mmike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leg Doch von einem Ausgang von µC1 eine Leitung zu INT0 bei µC1 und µC2. 
Wenn µC1 dann den Ausgang ändert oder hochzieht, oder wie auch immer, 
werden bei beiden "gleichzeitig" die externen Ints ausgelöst ....

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre es eine gute Lösung zu sagen, ich sende ein Datum und warte auf die 
Antwort. Wenn ich die Antwort habe stoppe ich die Zeit. µC2 darf noch 
nichts machen.
Ich will mit diesem Schritt nur wissen wie lange es von µC1 zu µC2 
dauert.
Weil ich jetzt weiß wie lange es dauert, sende ich ein Befehl an µC2 und 
lass µC2 für die Hälfte der Zeit was ich gemessen habe abwarten.(weil 
die Zeit die ich gemessen habe für Hin+Zurück war und wenn mein Befehl 
bei µC2 ankommt ist Hälfte der Zeit rum)

Sobald µC1 ACK erhalten hat beginnt es zu messen. Wenn ACK angekommen 
ist müsste auch die Zeit für µC2 abgelaufen sein. Somit müssten beide 
gleichzeitig mit der Messung starten..

Autor: lontano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du mit Standardgeschwindigkeit faehrst, dann geht es bei dir um 
''us'' und nicht um zehntel Sekunden Verspaetung....
Wer misst misst Mist ?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
lontano wrote:
> Wenn du mit Standardgeschwindigkeit faehrst, dann geht es bei dir um
> ''us'' und nicht um zehntel Sekunden Verspaetung....
> Wer misst misst Mist ?

es geht hier auch um µs, sonst wäre es ja kein Problem gewesen :-(

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls es zwei identische µCs sind und synchron laufen, kannst Du die 
gewünschte Messzeit in die Zukunft legen. Dann brauchen beide µCs nur zu 
warten, bis die Zeit gekommen ist...

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja aber ich muss ja auch die Zeit, die ich zum übertragen brauche, mit 
berücksichtigen.

Autor: lontano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem ersten MC startest du ein externes Monoflop: sein Ausgang 
steuert die 2 ADC Konversionstarteingaenge.

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ lontano

was ist ein externes Monoflop?

Autor: lontano (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eine monostabile Kippstufe  ZB Cmos Baustein CD4528

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Cimbom Gs
> ja aber ich muss ja auch die Zeit, die ich zum übertragen brauche,
> mit berücksichtigen.

Nein eben nicht. Wenn beide µCs die gleiche absolute Zeit haben, kannst 
du z.B. um 13:24 beiden in Ruhe mitteilen, sie sollen um 13:35 eine 
Messung machen.

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Controller 1 löst bei beiden Controllern einen externen Interrupt aus, 
der wiederum bei beiden "zeitgleich" die Messung startet.

Bei einem AVR hast du damit maximal 2 Takte Versatz. Wenn die synchron 
laufen sind 0 Takte Versatz machbar.

Wir bewegen uns da in Größenordnungen von unter 0,1 µs

Hab ich was übersehen?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kai Giebeler wrote:
> Wir bewegen uns da in Größenordnungen von unter 0,1 µs

ich denke, dass das die beste Lösung wäre. Würden wir uns auch in der 
Größenordnung von 0,1µs bewegen, wenn es um 2-3 m Abstand geht?

Autor: Cimbom Gs (cimbomgs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
StinkyWinky wrote:
> Wenn beide µCs die gleiche absolute Zeit haben, kannst
> du z.B. um 13:24 beiden in Ruhe mitteilen, sie sollen um 13:35 eine
> Messung machen.

naja net so einfach alle 10ms eine Messung zu starten und dann zu sagen 
um wie viel Uhr beide µC zu starten haben..

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du Dir um die Länge der Signalleitung Sorgen machst - mach beide 
Signalleitungen gleich lang oder schalte mit Licht .. :-)

Autor: Kai G. (runtimeterror)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So langsam werde ich doch neugierig, welches analoge Signal zeitlich so 
präzise ausgelesen werden soll...

Ungefähre Laufzeit bei 3m Leitung
3 m / 300000000 m/s = 10 ns

Wird vermutlich noch ein Aufschlag für die Dämpfung drauf kommen, aber 
ich denke, dass sollte passen. Ansonsten wie bereits vorgeschlagen 
einfach die Leitungen gleich lang machen.

Sollte die Verzögerung doch größer sein: einfach den ersten Controller 
einen Takt warten lassen.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie vorher schon erwähnt: machs per Pin-Change-Interrupt.
Am µC1 hast du einen Ausgang und einen Eingang. Am µC2 nur den Eingang.
Wenn jetzt µC1 am Ausgang eine bestimmte Spannung anlegt, wird bei 
beiden der Code für die Wandlung "gleichzeitig" ausgeführt, da ja auf 
den Eingängen die Signale zur "gleichen Zeit" ankommen.
Du löst also mit der Spannung an den Eingängen die Wandlung aus. Mehr 
nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.