RunRyder RC
 9  Topic Subscribe
WATCH
 10 pages [ <<    <    ( 1 )     2      3     NEXT    >> ] 15674 views POST REPLY
Scorpion Power Scorpion Power
11-16-2003 06:48 PM  13 years agoPost 1
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

In the previous thread 'Decoding Futaba PCM1024Z' (see http://www.runryder.com/helicopter/...Futaba+PCM1024Z) we discussed existing sources on this format. We concluded with a document merging the surces.

If you want to follow this thread I recommend reading at least the concluding report:
http://graphics.tudelft.nl/~wouter/...s/pasman03k.pdf

However not all necessary information was available to fully decode the format. Here I would like to discuss reverse engineering of the missing parts.

Frederic in the previous thread already reverse engineered the delta codes.

The first thing to make this discussion open to everyone here is to make code available so that everyone with a computer and futaba transmitter can join the discussion.

A very simple piece of hardware connects your transmitter via the trainer port to the audio INPUT port of the compu. This is the same for macintosh and pc. The signal output on the trainer port should be connected via a 33k ohm resistor to the audio input and the further via a 2k2 resistor to ground. See figure


Transmitter........................Computer......
...............+++++++++.........................
sig.out.-------+.33k...+--------+---->.audio.in..
...............+++++++++........|................
...............................+++...............
...............................+.+...............
........................2200...+.+...............
...............................+.+...............
...............................+++...............
................................|................
GND.---------------------------------------.GND.........


Frederic is busy with a PC version of this program.

For Macintosh users I created a PCMdecoder. It is at:

http://graphics.tudelft.nl/~wouter/PCMdecoder.

You can run this from a shell, and will give a single line of output for every frame that comes out of your receiver.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-16-2003 06:49 PM  13 years agoPost 2
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Okay sorry for the stupid layout of the figures, apparently they dont print spaces and I needed them for the layout...

Okay now for the first result.

I noted that sometimes the two first bits after the odd/even frame data are not 00 but 11. This happens only once in a while, and I'm now curious what that means. This might be the 'failsafe frame' Augusto was hinting at.

Check this output from my program:

S0:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S1: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S1:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S0: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S0:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S1: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S1:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S0: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S0:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S1: 00001100111111110011000111111110011100011100110001100000111111000000011001110001100011001111111100110001111111100111000111001100111111111111100011000111001100001100111100
S1:000000110011111111001100011100111111000000011111001100110011001110000000011000110000001100111111111100110000111111100011001100110011111111000111100011110000111110001100001111

S0: 00001111111100001110001100000000011100011100110001100000111111000000011001110001100011111111000011000011111100000111111100011100111111110011000111111110011100011100111100
S0:000000111111110000001100011100001100111100000000001100110011001110000011110000001110011111111100001110011100000110011111000000000011111111001100011111111001110001110011001111

S1: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S1:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S0: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S0:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S1: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S1:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S0: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100
S0:000000110011001100001100011100011000111111110000001111111111001110000000011100000111110000110011001110011100001110001111111100000011111111000111100011110000111110001100001111
S1: 00001100110011001110001100000000110011100001111111110000111111000000111000110011000111001100110011000011111110000011000011001100111111111111100011000111001100001100111100

Sorry that I can't one line per frame here, the text field is too narrow. For good viewing copy the lines to your text editor and set it wide enough. All bits will nicely fall under each other and then you can see that most bits are stable all the time, except for the two red lines.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
WATCH
 10 pages [ <<    <    ( 1 )     2      3     NEXT    >> ] 15674 views POST REPLY
Scorpion Power Scorpion Power
11-16-2003 07:28 PM  13 years ago •• Post 3 ••
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Hi all,

I have two executables: ReadPCM that allows taking samples that are dumped in files. DecodePCM reads the file, shows all the bits and decodes what we currently know.
I do not have a website where I can put them; Wouter, can I perhaps put it on yours?

I have been working on the Failsafe. I have some interesting data, but I do not see the logic yet. I will try to describe what I have seen so far later this evening…

Usage:
DecodePCM FileName VerboseLevel(0-5)

Usage:
ReadPCM T
Tests if PCM signal is present
ReadPCM L FileName NbSamples
Logs raw data to logfile

Examples:
E:\ReadPCM\exe>ReadPCM T
#PCMFrames = 0 ( 0/s) #PCMErrors = 0 Pos1 = 0
#PCMFrames = 16 ( 32/s) #PCMErrors = 0 Pos1 = 556
#PCMFrames = 34 ( 36/s) #PCMErrors = 0 Pos1 = 556
#PCMFrames = 52 ( 36/s) #PCMErrors = 0 Pos1 = 556
#PCMFrames = 69 ( 34/s) #PCMErrors = 0 Pos1 = 556
#PCMFrames = 86 ( 34/s) #PCMErrors = 0 Pos1 = 556
Stopping...

E:\ReadPCM\exe>ReadPCM L test.log 1000
#Transitions 0
#Transitions 804
Writing logfile...


E:\ReadPCM\exe>DecodePCM test.log 0
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
- 556 - 460 - 1020 - 270
608 - 472 - 28 - 924 -
Done

E:\ReadPCM\exe>DecodePCM test.log 4
11111111111100011111111001110001110011111111000000000001110011110000000011100000
11111111001100011111111001110001110011001111
== SYNC = NEG == Time:021.30ms == #Frames:0000 ================================
000011 FrameType: ODD.
0011001100 => PCM byte 101000
0000011111 => PCM byte 100110
1111100111 => PCM byte 000011
0011111100 => PCM byte 010000
aux= 2 ecc=208 A1= 608 D2= 8
0011111111 => PCM byte 001000
1110011000 => PCM byte 011101
0011000111 => PCM byte 100000
1110000000 => PCM byte 110110
aux= 0 ecc= 54 A3= 472 D4= 8
0011001100 => PCM byte 101000
1111110011 => PCM byte 000001
0001111000 => PCM byte 110001
1100001100 => PCM byte 101110
aux= 2 ecc=110 A5= 28 D6= 8
0011111111 => PCM byte 001000
0001110000 => PCM byte 111001
0011100000 => PCM byte 110011
0001111100 => PCM byte 100101
aux= 0 ecc=229 A7= 924 D8= 8
------ Time=046.20
1100
== SYNC = NEG == Time:049.50ms == #Frames:0001 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
0011001100 => PCM byte 101000
0001100111 => PCM byte 100010
0011110000 => PCM byte 110010
0011000111 => PCM byte 100000
aux= 2 ecc=160 A2= 556 D1= 8
0011111111 => PCM byte 001000
1100011100 => PCM byte 011100
0001111000 => PCM byte 110001
0011111100 => PCM byte 010000
aux= 0 ecc= 80 A4= 460 D3= 8
0011001100 => PCM byte 101000
0000000111 => PCM byte 111111
0011100000 => PCM byte 110011
1111001100 => PCM byte 010100
aux= 2 ecc=212 A6=1020 D5= 8
0011111111 => PCM byte 001000
0011111100 => PCM byte 010000
0001110000 => PCM byte 111001
0000111100 => PCM byte 110000
aux= 0 ecc=112 A8= 270 D7= 8
------ Time=075.00
001111

................

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-16-2003 07:42 PM  13 years agoPost 4
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi Frederic

For the code, sure if you mail it to me I will create directory at my homepage so that anyone can download it.

Are those frames I mentioned above the failsafe frames you think?

It seems you have two programs, one for dumping the raw data and another for the analysis. Maybe we can both use the analysis program, and only have a different dump program? Currently I dump one frame per line, with all the bits in the frame. I also noticed that the number of bits alternates between odd and even frames, not with two bits but with FOUR bits. There seem also two bits extra at the end.

On the other hand, for some things real-time working decoding would be very handy if not essential. Therefore I planned to integrate the decoder and grabber software.
But we might still use the same software under water.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-16-2003 08:20 PM  13 years agoPost 5
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Hi Wouter,
Maybe we can both use the analysis program, and only have a different dump program?
I cannot agree more
Are those frames I mentioned above the failsafe frames you think?
No
I also noticed that the number of bits alternates between odd and even frames, not with two bits but with FOUR bits. There seem also two bits extra at the end.
I did not see this before, but you are right. It can also be seen in my decoding application. When the 4 packets are decoded there is a line with the time. After that you see the bits until the next sync.
On the other hand, for some things real-time working decoding would be very handy if not essential.
I have discovered that when I start dumping too much info on the console, the application gets too slow and cannot handle the input in RT.


Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-16-2003 08:22 PM  13 years agoPost 6
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Hi All,


About the FS, this is what I have seen so far:

All regular frames have aux values 2,0,2,0 (one for every packet in the frame). When FS is active, every minute there are 4 special frames that have different aux values. I did not see any differences in the two unknown bits after the odd/even frame field.

For my tests, I have setup the TX so that all 8 channels have different positions. When we look at these 2 “normal” frames:

== SYNC = POS == Time:11782.65ms == #Frames:0413 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
0011001100 => PCM byte 101000
0001100111 => PCM byte 100010
0011110000 => PCM byte 110010
0011000111 => PCM byte 100000
aux= 2 ecc=160 A2= 556 D1= 8
0011111111 => PCM byte 001000
1100011100 => PCM byte 011100
0001111000 => PCM byte 110001
0011111100 => PCM byte 010000
aux= 0 ecc= 80 A4= 460 D3= 8
0011001100 => PCM byte 101000
0000000111 => PCM byte 111111
0011100000 => PCM byte 110011
1111001100 => PCM byte 010100
aux= 2 ecc=212 A6=1020 D5= 8
0011111111 => PCM byte 001000
0011111100 => PCM byte 010000
0001110000 => PCM byte 111001
0000111100 => PCM byte 110000
aux= 0 ecc=112 A8= 270 D7= 8
------ Time=11808.15
001111
== SYNC = NEG == Time:11811.45ms == #Frames:0414 ================================
000011 FrameType: ODD.
0011001100 => PCM byte 101000
0000011111 => PCM byte 100110
1111100111 => PCM byte 000011
0011111100 => PCM byte 010000
aux= 2 ecc=208 A1= 608 D2= 8
0011111111 => PCM byte 001000
1110011000 => PCM byte 011101
0011000111 => PCM byte 100000
1110000000 => PCM byte 110110
aux= 0 ecc= 54 A3= 472 D4= 8
0011001100 => PCM byte 101000
1111110011 => PCM byte 000001
0001111000 => PCM byte 110001
1100001100 => PCM byte 101110
aux= 2 ecc=110 A5= 28 D6= 8
0011111111 => PCM byte 001000
0001110000 => PCM byte 111001
0011100000 => PCM byte 110011
0001111100 => PCM byte 100101
aux= 0 ecc=229 A7= 924 D8= 8
------ Time=11836.35
1100

the channel positions are: 608, 556, 472, 460, 28, 1020, 924 and 270

With FS configures for channel 1, the 4 “special frames” look like this:

== SYNC = NEG == Time:11839.65ms == #Frames:0415 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A2= 512 D1= 8*****CHECK****
0011111111 => PCM byte 001000
1100011100 => PCM byte 011100
0001111000 => PCM byte 110001
0011111100 => PCM byte 010000
aux= 0 ecc= 80 A4= 460 D3= 8
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A6= 512 D5= 8*****CHECK****
0011111111 => PCM byte 001000
0011111100 => PCM byte 010000
0001110000 => PCM byte 111001
0000111100 => PCM byte 110000
aux= 0 ecc=112 A8= 270 D7= 8
------ Time=11865.15
001111
== SYNC = POS == Time:11868.45ms == #Frames:0416 ================================
000011 FrameType: ODD.
1111110000 => PCM byte 011000
0000011111 => PCM byte 100110
1111100011 => PCM byte 000010
0000000111 => PCM byte 111111
aux= 1 ecc=191 A1= 608 D2= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A3= 512 D4= 8
1111110000 => PCM byte 011000
1111110011 => PCM byte 000001
0000111100 => PCM byte 110000
1111110011 => PCM byte 000001
aux= 1 ecc= 1 A5= 28 D6= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A7= 512 D8= 8
------ Time=11893.65
1100
== SYNC = POS == Time:11896.65ms == #Frames:0417 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
1111110000 => PCM byte 011000
0001100111 => PCM byte 100010
0011100000 => PCM byte 110011
1111000011 => PCM byte 001111
aux= 1 ecc=207 A2= 556 D1= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A4= 512 D3= 8
1111110000 => PCM byte 011000
0000000111 => PCM byte 111111
0011110000 => PCM byte 110010
0000111000 => PCM byte 111011
aux= 1 ecc=187 A6=1020 D5= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A8= 512 D7= 8
------ Time=11921.85
001111
== SYNC = NEG == Time:11925.45ms == #Frames:0418 ================================
000011 FrameType: ODD.
0011111111 => PCM byte 001000
0000000111 => PCM byte 111111
0011110011 => PCM byte 010001
0000111000 => PCM byte 111011
aux= 0 ecc=123 A1=1012 D2= 8*****CHECK****
0011001100 => PCM byte 101000
1110011000 => PCM byte 011101
0001110011 => PCM byte 100001
0000011000 => PCM byte 111100
aux= 2 ecc=124 A3= 472 D4= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A5= 512 D6= 8*****CHECK****
0011111111 => PCM byte 001000
0001110000 => PCM byte 111001
0011100000 => PCM byte 110011
0001111100 => PCM byte 100101
aux= 0 ecc=229 A7= 924 D8= 8
------ Time=11950.35
1100

So the aux values are:
0000, 1010, 1010, 0200.
We see that some positions are still correct and that some positions contain 512 (not the actual position). I think that the FS position for channel 1 can be found in the first packet of the 4th frame.

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-16-2003 08:25 PM  13 years agoPost 7
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

I did the same test with FS on channel 1 and 2. Now the aux are:
1010, 0200, 0200,1010. I think that the FS position for channel 1 is in packet 1 of frame 2 and FS for channel 2 in packet 1 of frame 3


== SYNC = POS == Time:7869.75ms == #Frames:0275 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
1111110000 => PCM byte 011000
0001100111 => PCM byte 100010
0011100000 => PCM byte 110011
1111000011 => PCM byte 001111
aux= 1 ecc=207 A2= 556 D1= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A4= 512 D3= 8
1111110000 => PCM byte 011000
0000000111 => PCM byte 111111
0011110000 => PCM byte 110010
0000111000 => PCM byte 111011
aux= 1 ecc=187 A6=1020 D5= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A8= 512 D7= 8
------ Time=7894.95
001111
== SYNC = NEG == Time:7898.55ms == #Frames:0276 ================================
000011 FrameType: ODD.
0011111111 => PCM byte 001000
0000000111 => PCM byte 111111
0011110000 => PCM byte 110010
1110001100 => PCM byte 011110
aux= 0 ecc=158 A1=1020 D2= 8*****CHECK****
0011001100 => PCM byte 101000
1110011000 => PCM byte 011101
0001110011 => PCM byte 100001
0000011000 => PCM byte 111100
aux= 2 ecc=124 A3= 472 D4= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A5= 512 D6= 8*****CHECK****
0011111111 => PCM byte 001000
0001110000 => PCM byte 111001
0011100000 => PCM byte 110011
0001111100 => PCM byte 100101
aux= 0 ecc=229 A7= 924 D8= 8
------ Time=7923.45
1100
== SYNC = NEG == Time:7926.75ms == #Frames:0277 ================================
000000 FrameType: EVEN
11 Meaning unknown (yet)
0011111111 => PCM byte 001000
0000011000 => PCM byte 111100
0000111100 => PCM byte 110000
1100111100 => PCM byte 010110
aux= 0 ecc= 22 A2= 972 D1= 8*****CHECK****
0011001100 => PCM byte 101000
1100011100 => PCM byte 011100
0000111100 => PCM byte 110000
1110000011 => PCM byte 011010
aux= 2 ecc= 26 A4= 460 D3= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A6= 512 D5= 8*****CHECK****
0011111111 => PCM byte 001000
0011111100 => PCM byte 010000
0001110000 => PCM byte 111001
0000111100 => PCM byte 110000
aux= 0 ecc=112 A8= 270 D7= 8
------ Time=7952.25
001111
== SYNC = POS == Time:7955.55ms == #Frames:0278 ================================
000011 FrameType: ODD.
1111110000 => PCM byte 011000
0000011111 => PCM byte 100110
1111100011 => PCM byte 000010
0000000111 => PCM byte 111111
aux= 1 ecc=191 A1= 608 D2= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A3= 512 D4= 8
1111110000 => PCM byte 011000
1111110011 => PCM byte 000001
0000111100 => PCM byte 110000
1111110011 => PCM byte 000001
aux= 1 ecc= 1 A5= 28 D6= 8*****CHECK****
0011111111 => PCM byte 001000
0011000111 => PCM byte 100000
1111100111 => PCM byte 000011
0001110011 => PCM byte 100001
aux= 0 ecc=225 A7= 512 D8= 8
------ Time=7980.75
1100

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-16-2003 09:41 PM  13 years agoPost 8
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi

I checked the extra bits after the 4 pcm_packets. There are either 4 or 6 extra bits, for odd and even header. I haven't seen any variation in them yet, even headers always have the value 15 (so they are ending all at 001111) and odd headers have 12 (all ending at 1100)

My system can keep up with printing if I make very long lines. I can even dump both all bits (174) and another line with the 'interpreted' data . I can now also dump only interpreted data, looks like this



S1.1: (P=511 D=8 A=2 ECC=47)(P=448 D=8 A=0 ECC=114)(P=40 D=8 A=2 ECC=33)(P=40 D=8 A=0 ECC=107)e=12
S1.2: (P=513 D=8 A=2 ECC=192)(P=523 D=8 A=0 ECC=185)(P=422 D=8 A=2 ECC=82)(P=787 D=8 A=0 ECC=222)e=15
S0.1: (P=511 D=8 A=2 ECC=47)(P=448 D=8 A=0 ECC=114)(P=40 D=8 A=2 ECC=33)(P=40 D=8 A=0 ECC=107)e=12
S0.2: (P=513 D=8 A=2 ECC=192)(P=523 D=8 A=0 ECC=185)(P=422 D=8 A=2 ECC=82)(P=787 D=8 A=0 ECC=222)e=15
S1.1: (P=511 D=8 A=2 ECC=47)(P=448 D=8 A=0 ECC=114)(P=40 D=8 A=2 ECC=33)(P=40 D=8 A=0 ECC=107)e=12
S1.2: (P=513 D=8 A=2 ECC=192)(P=523 D=8 A=0 ECC=185)(P=422 D=8 A=2 ECC=82)(P=787 D=8 A=0 ECC=222)e=15
S0.1: (P=511 D=8 A=2 ECC=47)(P=448 D=8 A=0 ECC=114)(P=40 D=8 A=2 ECC=33)(P=40 D=8 A=0 ECC=107)e=12
S0.2: (P=513 D=8 A=2 ECC=192)(P=523 D=8 A=0 ECC=185)(P=422 D=8 A=2 ECC=82)(P=787 D=8 A=0 ECC=222)e=15
S1.1: (P=511 D=8 A=2 ECC=47)(P=448 D=8 A=0 ECC=114)(P=40 D=8 A=2 ECC=33)(P=40 D=8 A=0 ECC=107)e=12

I now also see I was mistaken with those frames that seemed to start with aux=11. That's not right, 11 is the first 2 bits of a 10-bits packet that still has to be decoded from 10 to 6 bits.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-16-2003 09:47 PM  13 years agoPost 9
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Man I get headaches to get the results visible here. I wanted to show < P=511 D=8> without space between < and P. Seems impossible. THen I changed < into (. Now I had a ':' before the < and I got : ( which is interpreted by RR as

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 04:35 PM  13 years agoPost 10
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi

I placed a new version of the Mac PCM reader in http://graphics.tudelft.nl/~wouter/PCM

You need the MacPCM file.

Note that you have to set user executable permission, using

chmod u+x MacPCM

It has new command line options to steer the printed output. In short

args are involved with print options.
+* accepts only * for printing
-* rejects all * for printing.
you can use + and - options mixed
* is the following
p0, p1: frames with polarity 0 or 1
f1, f2: odd or even frames
a^^^^: auxfields in the four pcm_packets are holding 4 digits. ^ can be 0,1,2 or 3.
example: PCM +p0 -a2020
this prints all frames with polarity 0 and with NOT aux fields 2,0,2,0.
you can set only 1 option for p, f for accept and one other for reject.
so PCM +a0000 -a2000 is okay
but PCM -a0000 -a1000 is not ok.
be careful to use the right digits, for instance digit 3 will be accepted
for f but f=3 will never become 'true'.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 04:42 PM  13 years agoPost 11
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Hi all

Frederic sent me a PC version of the PCM reader. So now both mac and pc users can join the discussion!
They are in the same directory
http://graphics.tudelft.nl/~wouter/PCM/

The files are PCReadPCM.exe and PCDecodePCM.exe. As far as I know you need the same interface I described earlier.

The output format and options are bit different, we hope to share the code at some point but right now we each developed code independently. I wrote from scratch giving clean code, Frederic hacked the Propo code giving a more messy code.

Oh of course we can't assume responsibility if your computer crashes due to our code! My own code runs very robust, hasn't ever crashed on my machine. I don't know about Frederic's code (doesn't run at all )

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 04:48 PM  13 years agoPost 12
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Frederic

I owe you still an answer on a question you asked some time ago, about only even position data coming out.

As you might already have noticed above, I DO have odd and even data. This apparently needs better investigation.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 04:49 PM  13 years agoPost 13
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

I found another interesting effect on the AUX field. Try pulling the throttle close, before turning on the transmitter.

[added]
This aux configuration must be telling the transmitter to release off the battery failsafe for 30 seconds. This is signalled setting frame1packet2.aux to 1 and happens when throttle gets below about 40%.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 08:42 PM  13 years agoPost 14
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

I did checking the channel/frame position measurements. Here is the result (not unexpected but it resolves the confusion)

channel.....channel name........position in.............delta in
............................(frame 1/2, packet 0..3).............
1..................ail...............1,0...............2,0
2..................ele...............2,0...............1,0
3..................thr...............1,1...............2,1
4..................rud...............2,1...............1,1
5..................gyro gain.........1,2...............2,2
6..................pit...............2,2...............1,2
7..................ch7 (switch C)....1,3...............2,3
8..................ch8 (knob)........2,3...............1,3

Angelos
This is different from your results. What was different from my setup? (The default FF8S program, heli SWSH1)?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 08:57 PM  13 years agoPost 15
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Frederic

I get again different results for the failsafe data.
If I set failsafe for channel 1 and 2 (rest=normal) I get something like

S1.1:< P=396 D=8 A=0 ECC=2>< P=864 D=8 A=3 ECC=214>< P=512 D=8 A=0 ECC=225>< P=40 D=8 A=0 ECC=107>e=12
S1.2:< P=392 D=8 A=0 ECC=197>< P=441 D=8 A=2 ECC=108>< P=512 D=8 A=0 ECC=225>< P=76 D=8 A=0 ECC=215>e=15
S0.1:< P=511 D=8 A=1 ECC=64>< P=512 D=8 A=1 ECC=196>< P=40 D=8 A=1 ECC=78>< P=512 D=8 A=0 ECC=225>e=12
S0.2:< P=512 D=8 A=1 ECC=196>< P=512 D=8 A=0 ECC=225>< P=984 D=8 A=1 ECC=85>< P=512 D=8 A=0 ECC=225>e=15


Thus I have aux=0300,0200,1110,1010, and the failsafe data seems in the first two frames ( the odd frame has the ail failsafe and the even frame the ele failsafe.)

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-17-2003 09:00 PM  13 years agoPost 16
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

I noticed that I get a failsafe packet after only 8 seconds instead of waiting a minute, maybe this is related to having the throttle at 0?

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-18-2003 11:24 AM  13 years agoPost 17
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

Oh of course we can't assume responsibility if your computer crashes due to our code!
Crashes are just bugs and not harmful for a pc. Connecting the TX the PC is the dangerous part IMHO

BTW: who else is joining us?
My own code runs very robust,
Congratulations
I don't know about Frederic's code
It is typical one-time-use testcode, not 100% clean, but not messy. It work fine for me

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-18-2003 11:32 AM  13 years agoPost 18
FredericG

rrNovice

Belgium

My Posts: All  Forum  Topic

This aux configuration must be telling the transmitter to release off the battery failsafe for 30 seconds. This is signalled setting frame1packet2.aux to 1 and happens when throttle gets below about 40%.
I do not see what you mean...
Thus I have aux=0300,0200,1110,1010, and the failsafe data seems in the first two frames ( the odd frame has the ail failsafe and the even frame the ele failsafe.)
I have the impression that the FS packets can have many different compositions. I think we will need to study many samples before we will see the logic. In my tests (the one I have posted) I have also seen different configurations of aux-values and different places where, for example, the FS for channel 1 is located in the 4 FS frames
I noticed that I get a failsafe packet after only 8 seconds instead of waiting a minute, maybe this is related to having the throttle at 0?
I suppose that different radios can have different strategies when to send FS info.

Frederic

PM  EMAIL  HOMEPAGE  Attn:RR  Quote
11-18-2003 04:59 PM  13 years agoPost 19
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Frederic
This aux configuration must be telling the transmitter to release off the battery failsafe for 30 seconds. This is signalled setting frame1packet2.aux to 1 and happens when throttle gets below about 40%.
I mean that if I have throttle stick below 40% I get a '1' in the aux field of all odd frames, in aux field of the second pcm_packet. I abbreviate that with frame1.packet2.aux.

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
11-18-2003 09:12 PM  13 years agoPost 20
w.pasman

rrElite Veteran

Netherlands

My Posts: All  Forum  Topic

Okay I figured out the failsafe behaviour on my transmitter, at least I think so. I would like to hear if this holds also for others.

Let me define a few things.

polarity of a frame: 0=all bits are inverted (LOW sync pulse) 1=all bits normal (HIGH sync pulse)

odd (1) and even (2) frame: odd frame starts with 000011 and has 170 bits;even starts with 00000011 and has 174 bits.

I get failsafe packets in the following situations:

* 8sec after turn on
* every minute after that
* immediately after failsafe for one of the channels is turned ON (NOT when turned OFF!)

My transmitter always sends frames in the following order of polarity&frame:
P1.S1 (frame with polarity 1, odd frame)
P1.S2 (frame with polarity e1ven frame)
P0.S1 (frame with polarity 0, odd frame)
P0.S2 (frame with polarity 0, even frame)
and then back to P1.S1 to repeat the cycle.

I abbreviate those four frames with S1.1 S1.2 S0.1 and S0.2.

Now on the aux fields. Every frame has four aux fields with each two bits. I put all bits after each other for ease, so for instance aux 3210 would become 11 10 01 00 or shortly 11100100.

Normally we have the following aux fields
S1.1 10001000
S1.2 00000000
S0.1 10001000
S0.2 00000000

DURING FAILSAFE frames this turns in the 'all channels in normal mode' into
S1.1 00000000
S1.2 00000000
S0.1 01000100
S0.2 01000100

Failsafe channel values are put in (there are four pcm_packets in each frame, counting from 0 to 3, and they all have 10 position bits that are now used for the failsafe value)
ch1: S1.1 packet 0.position
ch2: S1.2 packet 0.position
ch3: S0.1 packet 1.position
ch4: S0.2 packet 1.position
ch5: S1.1 packet 2.position
ch6: S1.2 packet 2.poition
ch7: S0.1 packet 3.position
ch8: S0.2 packet 3.position.

If the channel is in normal mode, the position is set to 512 (probably any other value would do, as it is supposed to keep the old value in case of hold)

If the channel has a pre-set hold value, the hold value is put in, and another aux bit is set:

failsafe on bits (auxbits are counted from left to right, starting at 1, ending at 8)
ch1: S1.1 auxbit#3
ch2: S1.2 auxbit#3
ch3: S0.1 auxbit#3
ch4: S0.2 auxbit#3
ch5: S1.1 auxbit#7
ch6: S1.2 auxbit#7
ch7: S0.1 auxbit#7
ch8: S0.2 auxbit#7

For instance FS on on channel 3, 4, 5 and 8 gives
S1.1 00000000 + (ch5) bit#7 --> 00000010
S1.2 00000000
S0.1 01000100 + (ch3) bit #3 --> 01100100
S0.2 01000100 + (ch4) bit #3 + (ch8) bit#7 --> 01100110

PM  EMAIL  HOMEPAGE  GALLERY  Attn:RR  Quote
WATCH
 10 pages [ <<    <    ( 1 )     2      3     NEXT    >> ] 15674 views POST REPLY
Scorpion Power Scorpion Power
 Print TOPIC  Make Suggestion 

 9  Topic Subscribe

Saturday, October 21 - 1:14 pm - Copyright © 2000-2017 RunRyder   EMAILEnable Cookies

Login Here
 New Subscriptions 
 Buddies Online