Verzögerter Impuls

Gast #4248196
Lesenswert?

Hallo,

ich möchte folgendes mit Hilfe zweier ATmega32M1 realisieren:

Controller 1 erzeugt immer wieder drei Impulse die den gleichen 
zeitlichen Abstand haben.
Diese Impulse "sieht" Controller 2 am "Input Capture Pin".
Controller 2 soll nun Anhand der gemessenen Abstände der Impulse die 
Zeitbasis des Controllers 1 erkennen und seinerseits Impulse in einem 
definierten Abstand zum vorherigen Impuls erzeugen.
Andert sich die Taktfrequenz eines Controllers soll es trotzdem für 
Controller 1 so aussehen, als würden die Impulse con Controller 2 immer 
zum gleichen Zeitpunkt kommen.

_|__|__|________|__|__|______ ... C1
__|__|__|________|__|__|______ ... C2

Habt Ihr eine Idee wie ich es am Besten schaffe?

Kann ich den Timer so konfgurieren, daß er "automatisch" den Impuls 
erzeugt?

Vielen Dank!

Simon
Gast #4248203
Lesenswert?

> Controller 1 erzeugt  Impulse

> Andert sich die Taktfrequenz ... soll es trotzdem für
> Controller 1 so aussehen

Verstehe ich nicht. Wer ist hier der Sender und wer ist der Empfänger? 
Was ist mit den Pulsbreiten, sind die völlig egal?

> Impulse von Controller 2 immer zum gleichen Zeitpunkt kommen.

Was genau meinst du mit "gleichem Zeitpunkt"?

> Kann ich den Timer so konfgurieren, daß
> er "automatisch" den Impuls erzeugt?

Wer ist "der Impuls?" Timer erzugen regelmäßige Impulse, unabhängig 
davon, was ein anderer Timer oder µC macht.
Gast #4248204
Lesenswert?

Simon schrieb:
> Andert sich die Taktfrequenz eines Controllers soll es trotzdem für
> Controller 1 so aussehen, als würden die Impulse con Controller 2 immer
> zum gleichen Zeitpunkt kommen.

versteh ich nicht. Controller 1 erzeugt doch die Impulse - wie soll er 
da etwas "sehen"?
Gast #4248210
Lesenswert?

Stefan U. schrieb:
>
> Verstehe ich nicht. Wer ist hier der Sender und wer ist der Empfänger?
> Was ist mit den Pulsbreiten, sind die völlig egal?

Beide senden und beide Empfangen C1 elektrisch, C2 optisch.

> Was genau meinst du mit "gleichem Zeitpunkt"?

Gemeint ist der Abstand zum vorherigen Impuls

_______|______|_____|_________________   C1
___________|______|_____|_____________   C2
       |-t-|  |-t-| |-t-|

> Wer ist "der Impuls?" Timer erzugen regelmäßige Impulse, unabhängig
> davon, was ein anderer Timer oder µC macht.

der Impuls von C2

Peter II schrieb:
> versteh ich nicht. Controller 1 erzeugt doch die Impulse - wie soll er
> da etwas "sehen"?

Beide senden und beide Empfangen C1 sendet elektrisch, C2 sendet 
optisch.
Gast #4248216
Lesenswert?

Stefan U. schrieb:
> Dann sind Mikrocontroller in der AVR Klasse die falsche Wahl, da zu
> langsam.
>
> Lies dich mal ein, wie lange das Aufrufen einer ISR dauert.

Impulse kann ich problemlos erzeugen, wenn ich polle kann ich auch 
einigermaßen exakt die Impulse von C2 erzeugen.

Ich habe aber gehofft, daß es mit Hilde des Timers genauer geht.
Gast #4248256
Lesenswert?

> Bei 16Mhz sind das 0,4µs wo siehst du da sein Problem?

Die Impulse sind 5µS breit. Da alleine das Aufrufen der ISR schon 3-4 
Takte  dauert, werden die Zeiten vom Impuls-beginn und Ende schon 
alleine dadurch deutlich verzerrt. Vor allem wird es schwierig, da die 
Zeit nicht immer genau gleich ist.

Aber, wie genau es sein soll, hat er ja noch gar nicht gesagt. Ich war 
voreilig.
Gast #4249127
Lesenswert?

Stefan U. schrieb:
> Aber, wie genau es sein soll, hat er ja noch gar nicht gesagt. Ich war
> voreilig.

Ich habe mir den Ablauf wie folgt vorgestellt:

- C1 erzeugt den ersten Impuls. (Länge ca. 5µs)
SP: - C2 speichert, dank Input Capture, den Timerwert und setzt
      den Timer auf 0
- C2: Der Timer TOP Wert und der Wert des Timer Compare Registers wird
      mit angenommenen Werten berechnet (Verzögerung ca. 12µs)
- C2: Beim Erreichen des Timer Compare Wertes wird der der Ausgang
      auf High gesetzt
- C2: Beim Erreichen des TOP Wertes wird der Ausgang auf LOW gesetzt
- C1 erzeugt den zweiten Impuls (Länge ca. 5µs, etwa 60µs nach erstem 
Impuls)
- goto SP

ich hoffe es ist jetzt verständlicher.

Vielen Dank für die rege Beteiligung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren