Meinst du den letzten Code von mir? Was vermisst du den daran?
Ok, werds mal mit 6 Bytes insgesamt probieren.
Gruß
Chris
EDIT:
Habs jetzt mal so probiert mit Start- und Stop-Byte, jedoch tut sich nichts... PWM wird zwar erzeugt, aber sie verändert sich nicht, d.h. die Werte werden nicht korrekt eingelesen?!
ATTINY2313:
ATMEGA8:Code:$regfile = "attiny2313.dat" $crystal = 16000000 $framesize = 20 $hwstack = 20 $swstack = 20 $baud = 19200 Config Timer0 = Timer , Prescale = 1 '100kHz Timer0 = 96 On Timer0 Servo_irq Enable Timer0 Config Portd.2 = Output Config Portd.3 = Output Config Portd.4 = Output Config Portd.5 = Output Const Start_byte = 0 Const Stop_byte = 127 Dim _start As Byte Dim _stop As Byte Dim Servo(4) As Byte Dim _ist As Byte Dim _bl(4) As Byte Dim I As Byte Const Min_servo = 65 Const Max_servo = 160 Const Diff_servo = Max_servo - Min_servo For I = 1 To 4 _bl(i) = Min_servo Servo(i) = _bl(i) Next I Enable Interrupts Do Inputbin _start While _start <> Start_byte 'warte auf start Inputbin _start Wend Inputbin _bl(1) ; _bl(2) ; _bl(3) ; _bl(4) ; _stop If _stop = Stop_byte Then For I = 1 To 4 If _bl(i) < Min_servo Then _bl(i) = Min_servo If _bl(i) > Max_servo Then _bl(i) = Max_servo Servo(i) = _bl(i) Next I End If Loop End Servo_irq: Timer0 = 96 Incr _ist If _ist >= 200 Then _ist = 0 If Servo(1) > _ist Then Portd.2 = 1 Else Portd.2 = 0 End If If Servo(2) > _ist Then Portd.3 = 1 Else Portd.3 = 0 End If If Servo(3) > _ist Then Portd.4 = 1 Else Portd.4 = 0 End If If Servo(4) > _ist Then Portd.5 = 1 Else Portd.5 = 0 End If Return
Wo könnte mein Problem sein?Code:$regfile = "m8def.dat" $crystal = 16000000 $framesize = 80 $hwstack = 80 $swstack = 80 $baud = 19200 Config Serialout = Buffered , Size = 20 Config Timer2 = Timer , Prescale = 256 On Timer2 Detectrxpause Enable Timer2 Config Int1 = Rising On Int1 Getreceiver Enable Int1 Config Pind.3 = Input Portd.3 = 0 Const Start_byte = 0 Const Stop_byte = 127 Const _maxchannel = 4 Dim Bufferbyte As Byte Dim Kanal(_maxchannel) As Byte Dim Channel As Byte Dim _bl(_maxchannel) As Byte Dim I As Byte Dim Max_kanal(_maxchannel) As Byte Dim Min_kanal(_maxchannel) As Byte Dim Diff_kanal(_maxchannel) As Byte For I = 1 To _maxchannel _bl(i) = 0 Max_kanal(i) = 100 Min_kanal(i) = 100 Diff_kanal(i) = Max_kanal(i) - Min_kanal(i) Next I Enable Interrupts Do '( For I = 1 To _maxchannel If Kanal(i) > Max_kanal(i) Then Max_kanal(i) = Kanal(i) Diff_kanal(i) = Max_kanal(i) - Min_kanal(i) End If If Kanal(i) < Min_kanal(i) Then Min_kanal(i) = Kanal(i) Diff_kanal(i) = Max_kanal(i) - Min_kanal(i) End If Next I ') For I = 1 To _maxchannel _bl(i) = Kanal(i) '- Min_kanal(i) Next I Printbin Start_byte ; _bl(1) ; _bl(2) ; _bl(3) ; _bl(4) ; Stop_byte Waitms 100 Loop End Getreceiver: If Channel > 0 And Channel < 5 Then Kanal(channel) = Timer2 End If Timer2 = 6 Incr Channel Return Detectrxpause: Channel = 0 Return







Zitieren

Lesezeichen