Oh, na klar! Du hast es ja vorher schon geschrieben...
Werde jetzt mal das Programm durchforsten und mal schauen, wo noch was zu machen ist. Melde mich dann wieder.
Gruß
Chris
EDIT:
Hab jetzt mal den Noise-Filter durch den Simulator gejagt. Herausgekommen ist folgendes:
Code:
'( 1439
For I = 1 To 5
Meanrx(i) = Meanrx(i) * 3
Meanrx(i) = Meanrx(i) + Empf(i) '"lowpass filter" of the RC signal
Shift Meanrx(i) , Right , 2 ' (=divide by 4)
Aempfh(i) = Meanrx(i) + 17 'upper acceptable fluctuation
Aempfl(i) = Meanrx(i) - 17 'lower acceptable fluctuation
If Empf(i) > Aempfh(i) Or Empf(i) < Aempfl(i) Then 'compare allowed fluctuation with current rc reading
Empf(i) = Meanrx(i) 'if fluctuation was too high -> replace with averaged value
End If
Next
')
'( 635
Meanrx(1) = Meanrx(1) * 3
Meanrx(1) = Meanrx(1) + Empf(1)
Shift Meanrx(1) , Right , 2
Aempfh(1) = Meanrx(1) + 17
Aempfl(1) = Meanrx(1) - 17
If Empf(1) > Aempfh(1) Or Empf(1) < Aempfl(1) Then
Empf(1) = Meanrx(1)
End If
Meanrx(2) = Meanrx(2) * 3
Meanrx(2) = Meanrx(2) + Empf(2)
Shift Meanrx(2) , Right , 2
Aempfh(2) = Meanrx(2) + 17
Aempfl(2) = Meanrx(2) - 17
If Empf(2) > Aempfh(2) Or Empf(2) < Aempfl(2) Then
Empf(2) = Meanrx(2)
End If
Meanrx(3) = Meanrx(3) * 3
Meanrx(3) = Meanrx(3) + Empf(3)
Shift Meanrx(3) , Right , 2
Aempfh(3) = Meanrx(3) + 17
Aempfl(3) = Meanrx(3) - 17
If Empf(3) > Aempfh(3) Or Empf(3) < Aempfl(3) Then
Empf(3) = Meanrx(3)
End If
Meanrx(4) = Meanrx(4) * 3
Meanrx(4) = Meanrx(4) + Empf(4)
Shift Meanrx(4) , Right , 2
Aempfh(4) = Meanrx(4) + 17
Aempfl(4) = Meanrx(4) - 17
If Empf(4) > Aempfh(4) Or Empf(4) < Aempfl(4) Then
Empf(4) = Meanrx(4)
End If
Meanrx(5) = Meanrx(5) * 3
Meanrx(5) = Meanrx(5) + Empf(5)
Shift Meanrx(5) , Right , 2
Aempfh(5) = Meanrx(5) + 17
Aempfl(5) = Meanrx(5) - 17
If Empf(5) > Aempfh(5) Or Empf(5) < Aempfl(5) Then
Empf(5) = Meanrx(5)
End If
')
Also 635 im Vergleich zu 1439 ist doch schon etwas
Vielen Dank für den Tipp!
Gruß
Chris
EDIT:
Mit den Tmpx-Overlay Variablen von Empf(x) kann man ja, wenn ich jetzt keinen Mist erzähle, die ISR nochmal verkürzen?!
Code:
'in range: 33
'out of range: 34
!PUSH R16
!IN R16, SREG
!PUSH R16
!PUSH R18
!in r18, tcnt0
!lds r16, {channel}
!cpi r16, 1
!breq channel1
!cpi r16, 2
!breq channel2
!cpi r16, 3
!breq channel3
!cpi r16, 4
!breq channel4
!cpi r16, 5
!breq channel5
!rjmp outofrange
Channel1:
!sts {tmp1}, r18
!rjmp outofrange
Channel2:
!sts {tmp2}, r18
!rjmp outofrange
Channel3:
!sts {tmp3}, r18
!rjmp outofrange
Channel4:
!sts {tmp4}, r18
!rjmp outofrange
Channel5:
!sts {tmp5}, r18
Outofrange:
!inc r16
!sts {channel}, r16
!LDI R16, 6
!OUT TCNT0, R16
!POP R18
!POP R16
!OUT SREG, R16
!POP R16
Stimmt das soweit oder fällt dir etwas auf?
Lesezeichen