Zitat Zitat von goara
das geht so:

Code:
$regfile = "m644def.dat"

$framesize = 32

$swstack = 32

$hwstack = 32

$crystal = 20000000

$baud = 9600





' ----- Empfänger -----

Dim Kanal_nick As Integer

Dim Kanal_roll As Integer

Dim Kanal_yaw As Integer

Dim Kanal_pitch As Integer

Dim Kanal_nick_check(3) As Integer

Dim Kanal_roll_check(3) As Integer

Dim Kanal_yaw_check(3) As Integer

Dim Kanal_pitch_check(3) As Integer

Dim Kanal_nick_init As Integer

Dim Kanal_roll_init As Integer

Dim Kanal_yaw_init As Integer

Dim Kanal_pitch_init As Integer

Dim Puls(8) As Integer

Dim Kanal As Byte

Dim Empfaenger_ok(4) As Byte









'-----------Interupts----------

On Icp1 Get_empfaenger Nosave                               ' ICP fuer Funke

On Ovf1 Kanal_reset Nosave



Config Timer1 = Timer , Prescale = 8 , Capture Edge = Falling

Enable Ovf1

Enable Icp1

Enable Interrupts


'...
'blablablabalbal... codecode

'...





'------------Interupts---------------                      ' FUnke am ICP interrup

 Get_empfaenger:

      push r10

      push r11

      push r24

      push r25

      push r26

      push r27

      in r24,sreg

      push r24

      Puls(kanal) = Timer1

      Timer1 = 40000

      Incr Kanal

      pop r24

      !Out Sreg , R24

      pop r27

      pop r26

      pop r25

      pop r24

      pop r11

      pop r10

     Return


Kanal_reset:

    push r24

    in r24,sreg

    push r24

    Kanal = 1

    pop r24

    !Out sreg,r24

    pop r24

   Return

End
Die Signale sind alle am anfang von dem Signal, das erste nach der langen Pause ist also kanal 1 usw...
Bild hier  
[/code]
Hi Goara,

Habe dein Code mal in Bascom ausprobiert, aber er funktioniert nicht.
Summensignal ist am ICP angeschlossen (Empfänger = ACT DSL4top Typ: MK)
Hier mein Code:
Code:
'Einstellungen
$regfile = "m644pdef.dat"                                   'Atmega 644P
$crystal = 20000000                                         '20Mhz ext
$baud = 115200
$hwstack = 100
$swstack = 100
$framesize = 100


'ADC Einstellungen
Config Adc = Single , Prescaler = Auto , Reference = Aref   'Aref = 3V3
Start Adc
'Acc Nullwerte: Z = 611 ; Y = 497 ; X = 511 für ACC-Mode


'I2C Bus Einstellungen
Config Scl = Portc.0                                        'I2C Port SCL
Config Sda = Portc.1                                        'I2C Port SDA
I2cstart                                                    'I2C Bus starten


'Serialport Einstellungen
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 254
Config Serialout = Buffered , Size = 254


'PPM Messung
Dim Kanal_nick As Integer

Dim Kanal_roll As Integer

Dim Kanal_yaw As Integer

Dim Kanal_pitch As Integer

Dim Kanal_nick_check(3) As Integer

Dim Kanal_roll_check(3) As Integer

Dim Kanal_yaw_check(3) As Integer

Dim Kanal_pitch_check(3) As Integer

Dim Kanal_nick_init As Integer

Dim Kanal_roll_init As Integer

Dim Kanal_yaw_init As Integer

Dim Kanal_pitch_init As Integer

Dim Puls(8) As Integer

Dim Kanal As Byte

Dim Empfaenger_ok(4) As Byte


On Icp1 Get_empfaenger Nosave                               ' ICP fuer Funke

On Ovf1 Kanal_reset Nosave



Config Timer1 = Timer , Prescale = 8 , Capture Edge = Falling

Enable Ovf1

Enable Icp1




'Interrupteinstellungen
Enable Interrupts                                           'Interrupts einschalten



Do
'Mainblablabla
Loop

'------------Interupts---------------                      ' FUnke am ICP interrup

 Get_empfaenger:

      push r10

      push r11

      push r24

      push r25

      push r26

      push r27

      in r24,sreg

      push r24

      Puls(kanal) = Timer1

      Timer1 = 40000

      Incr Kanal

      pop r24

      !Out Sreg , R24

      pop r27

      pop r26

      pop r25

      pop r24

      pop r11

      pop r10

     Return


Kanal_reset:

    push r24

    in r24,sreg

    push r24

    Kanal = 1

    pop r24

    !Out sreg,r24

    pop r24

   Return




'Ende des Programms#############################################################
End
Habe mir die Kanäle mit

Print Kanal_nick ; " Nick"
Print Kanal_yaw ; " Yaw"
Print Kanal_nick_init ; " Nick init"
Print Kanal ; " Kanal"

anzeigen lassen. Leider ist alles 0. Bis auf "Kanal" der wechselt.
Desweiteren habe ich auch versucht, den Timerpreloader auf 55536 anstatt 40000 zu stellen (um auf 4 ms zu kommen). Leider auch ohne erfolg.

Dann habe ich auch noch diesen Code hier ausprobiert:
http://www.rn-wissen.de/index.php/RC...nger_auswerten
und auf meine Werte angepasst (Timer1, Summensignal am INT1, Preloader usw.) auch ohne Erfolg.

Empfänger funktionier (Am Kanal1 hab ich das Summensignal, Am kanal2 hängt ein Servo)

Kann mir jemand vll weiter helfen?

Danke