Page 3 of 3
Posted: Tue Aug 31, 2010 4:56 pm
by Kevin Timmerman
The Robman wrote:I think I've figured out how to send the data:
Looks good.
Bit shifting before calling to handle less than 8 bits?
Note: Before calling the above routine for the first time, I would load the W5 register into W3 and complement it.
Yes - most efficient.
Posted: Tue Aug 31, 2010 5:57 pm
by The Robman
Kevin Timmerman wrote:Looks good.
Thanks. I know you're Mr. Efficiency when it comes to code, so I was hoping you'd like it.
Kevin Timmerman wrote:Bit shifting before calling to handle less than 8 bits?
I hadn't decided how to handle that yet as I haven't planned out the main procedure yet, but I will have to do something to make sure the bits are in the right place. Keep in mind that I'm generating the link code, it's not actually going to be supplied in the data.
Posted: Thu Sep 02, 2010 1:15 pm
by The Robman
I have just written the first draft of an executor to handle this...
http://www.hifi-remote.com/forums/dload ... le_id=8894
Kevin, could you proof read it please to see if you can find any obvious mistakes.
I have also put together a KM file that uses the new executor here:
http://www.hifi-remote.com/forums/dload ... le_id=8895
This zip file includes a spreadsheet that will help you format the byte2 column and the fixed data.
Posted: Fri May 05, 2017 10:31 am
by Barf
(Yes, I know this is almost 7 years since the last post...)
Has someone an IRP form of the B&O protocol? Most likely, this thread contains enough info to construct it, just I thought I ask before I spend the time.
Greetz,
Bengt
Posted: Fri May 05, 2017 1:54 pm
by 3FG
My opinion is that IRP notation is not capable of expressing the B&O IR protocol. It uses 5 different on-off patterns. Two of these are termed by B&O as start or stop, and they correspond to a lead in and lead out. The unusual part is the other three patterns, which I call here A, B, and C. Pattern A maps to the binary digit zero, and B maps to binary one. C maps to the value of the most recently transmitted bit value--it repeats the previous bit. Thus C does not have an invariant mapping; the mapping depends on the previous bit value.
IRP implicitly assumes that each pattern maps to a fixed value, and I don't see an obvious way to change the notation to alter that assumption. Also, IRP has no way to indicate that e.g. two A patterns sent consecutively is an error.
Posted: Sun May 07, 2017 6:42 am
by Barf
Thanx for the answer.
After some work, looking at this thread and the teaser code, I came up with the IRP
Code: Select all
{455k,3125,msb}<200u,-zeroGap,zeroGap=2,oneGap=3,() | 200u,-oneGap,zeroGap=1,oneGap=2>
(200u,-1,200u,-1,200u,-5,D:9,F:8,200u,-4,200u,-100m)
{zeroGap=1, oneGap=3}
[D:0..511,F:0..255]
which renders code with IrScrutinizer that the teaser decodes.
The funny () in the middle of the first line is necessary for correct parsing, otherwise it will be parsed as oneGap = (3|200u).