Zitat Zitat von wkrug
Da Du anscheinend gleich 8 von diesen Impulslängen messen willst, brauchst Du einen Controller der 8 geeignete Interuptquellen hat.
Da dürften sich Controller eignen, die Pin Change Interrupts unterstützen.
Also genauergesagt muss ich nur 2 PPM Signale messen, die dann nachher auf Kanal 5 und 6 erscheinen sollen..

Zitat Zitat von wkrug
Beispiel !!!
Startbedingung, Kanal 1 wird übertragen:
Comparematch Interupt tritt auf.
Der Impulsausgang wird auf 1 geschaltet.
Der TCNT wird ausgelesen, es werden die Counts bis zum nächsten Comparematch Interrupt ( sagen wir mal 1,8ms ) zu diesem Wert dazu gezählt.
Dieser Wert wird ins Comparemach Register eingespeichert.
Die Comparematch Interrupt routine wird verlassen.

Der nächste Comparematch Interupt tritt nach 1,8ms auf.
Der Impulsausgang wird auf 0 gesteuert.
Das TCNT Register wird ausgelesen.
Dazu werden die Counts bis zum nächsten gewünschten Interrupt dazu addiert - In Deinem Fall wären das 0,2ms.
Dieser Wert wird im Comparematch Register des Counters abgespeichert.
Der Impulszähler wird Inkrementiert.
Die Comparematch Interrupt routine wird verlassen.

Beim nächsten Comparematch Interrupt also nach 1,8+0,2ms gehts dann so weiter bis alle Impulse + Startpause übertragen wurden.
Dann wird einfach der Framecounter auf 0 gesetzt und das Spielchen beginnt von vorne.
Ähm, ja, ich mag auch Toastbrot.

So ganz check ich das noch nicht


Zitat Zitat von wkrug
Das funktioniert sehr gut und läuft praktisch im Hintergrund, weil die komplette Impulsausgabe im Comparematch Interrupt stattfindet.
Daraus schließe ich mal, das du irgendwo schonmal sonen Code verwendet hast, könntest du den mal posten?


Also einen Code um an die RC Werte zu kommen habe ich bereits (Den habe ich vorher schonmal verwendet.. Allerdings kam es da nciht auf die Auflösung an, die hier nur ca. 70Schritte beträgt. .Aber das könnt man ja durch verwendung eines 16Bit Timers ändern.. :



Code:
$regfile = "m16def.dat"
$crystal = 4000000

Config Portd.2 = Input

Dim Lesen1 As Bit
Dim Gyro_gier As Byte

Lesen1 = 0

Config Timer0 = Timer , Prescale = 64
Enable Timer0
Stop Timer0

Config Int0 = Change
On Int0 Messen1
Enable Interrupts
Enable Int0

Do

Loop

End

Messen1:

   If Lesen1 = 0 Then
      Start Timer0
      Lesen1 = 1
   Else
      Stop Timer0
      Gyro_gier = Timer0
      Timer0 = 0
      Lesen1 = 0
   End If

Return