
 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
						
					
Lesezeichen