Hi Hans,
The problem with the play button that also is pauze (when you press it again)
can be related to the fact that you do not toggle the toggle bit so the VCR
thinks you did not release the button.
So if you would declare a variable
var bit toggle = FALSE
And then change your procedure in (also add the delay at the end between two
messages):
procedure RC (byte in adres,byte in command) is
var byte xx = adres <<3
var byte yy = command <<2
var bit x at xx : 7
var bit y at yy : 7
--start
hoog
hoog
-- Send and toggle the toggle bit
if toggle then
hoog
else
laag
end if
toggle = !toggle
--now adres 5 bits
for 5 loop
if x == high then
hoog
else
laag
end if
XX=XX << 1
end loop
-- now command 6 bits
for 6 loop
if y == high then
hoog
else
laag
end if
yy = yy << 1
end loop
-- And do not forget the space between messages
delay_1mS(114)
end procedure
Kind regards,
Rob
________________________________
Van: [email protected] <[email protected]> namens hans
<[email protected]>
Verzonden: donderdag 17 juni 2021 20:21
Aan: jallib <[email protected]>
Onderwerp: Re: [jallib] RC5 lib
Hi Rob,
This was a testing way. I know abou the third bit . I am now working on a
better way :
I am now so far that all commands are working beside the play function. (0x35)
. On the normal button operation this button is also used as pauze command.
With the RC5 (0x35) command works only when i have the pauze situation
activated with the button. Then it restarts, but not as a normal start.
In the program attached you can see the command list i have from this device.
If you have time pleas have a look at this revised, untested program change. :
alias RC5 is pin_D2
pin_D2_direction = output
RC5 = low
var byte ADRES
var byte COMMAND
include delay -- fetch delay library
--
procedure HOOG is
RC5 = low
_usec_delay(889)
RC5 = high
_usec_delay(889)
end procedure
procedure LAAG is
RC5 = high
_usec_delay(889)
RC5 = low
_usec_delay(889)
end procedure
procedure RC (byte in adres,byte in command) is
var byte xx = adres <<3
var byte yy = command <<2
var bit x at xx : 7
var bit y at yy : 7
--start
hoog
hoog
laag
--now adres 5 bits
for 5 loop
if x == high then
hoog
else
laag
end if
XX=XX << 1
end loop
-- now command 6 bits
for 6 loop
if y == high then
hoog
else
laag
end if
yy = yy << 1
end loop
end procedure
forever loop
RC( 0x05, 0x35) -- play
RC( 0x05, 0x36) -- stop
RC( 0x05, 0x37) -- rec
RC( 0x05, 0x32) --left
RC( 0x05, 0x34) --right
RC( 0x05, 0x20) --next
RC( 0x05, 0x21) -- last
RC( 0x05, 0x31) -- delete
RC( 0x05, 0x3c) --lyrics
RC( 0x05, 0x3a) -- transp up
RC( 0x05, 0x3b) -- transp down
RC( 0x05, 0x1d) -- menu
RC( 0x05, 0x29) -- play next
RC( 0x05, 0x22) -- play last
RC( 0x05, 0x3e) -- monitor
end loop
regards
Hans
Op donderdag 17 juni 2021 om 19:47:23 UTC+2 schreef [email protected]:
Hi Hans,
I had a look at your program. The procedure called 'Basis' raises some
questions.
It starts with two start bits (both 'hoog') but the third bit is a toggle bit.
If you press a key on the remote control and you keep it pressed. The same
command is repeated with the same toggle bit. The receiver then knows that it
is still the same command. As soon as you release a key and press it again, the
toggle bit changes. In your 'basis' the toggle bit is always the same so your
device thinks you are repeated the same command.
Next to that do you know the RC5 device address? In your 'basis' you use
low-low-high-low-high to the device has address 0x05 which is a VCR so I assume
you are controlling a VCR. If not you should change 'basis'.
You can find the RC5 addresses on wikipedia.
For the rest it seems to be OK. One thing that can be a problem is the opto
coupler. It will invert your bits and I do not know if the infrared received in
your device does the same. If not then you should invert all bits in 'hoog' and
'laag'.
Kind regards,
Rob
________________________________
Van: [email protected] <[email protected]> namens hans
<[email protected]>
Verzonden: woensdag 16 juni 2021 20:39
Aan: jallib <[email protected]>
Onderwerp: Re: [jallib] RC5 lib
Hi Rob,
I've tried a few things but it's not as easy as I thought. Simply removing the
IR receiver and replacing it with an optocoupler will not work. There's
something behind it with no license plates. So I put the case back together and
checked with a standard remote. He's working again. End of story : I do need a
lib for the normal IR operation. If it can send and receive. I hope you have
the time for it.
Here is what i have done.
I have a very old RC5 reader and on that one the data reeceived is correct,
adres and commands. But not on the one i like to use. (as i said above)
-- Title: RC5 test
--
-- ------------------------------------------------------
--
--
include 16f877a -- target PICmicro
--
pragma target clock 20_000_000 -- oscillator frequency
--
pragma target OSC HS -- crystal or resonator
pragma target WDT DISABLED -- watchdog
pragma target DEBUG DISABLED -- no debugging
pragma target BROWNOUT DISABLED -- no brownout reset
pragma target LVP DISABLED---ENABLED -- low voltage
programming
--
enable_digital_io() -- make all pins digital I/O
-- library with delay procedures
include delay
alias RC5 is pin_D2
pin_D2_direction = output
RC5 = low
include delay -- fetch delay library
--
procedure HOOG is
RC5 = low
_usec_delay(889)
RC5 = high
_usec_delay(889)
end procedure
procedure LAAG is
RC5 = high
_usec_delay(889)
RC5 = low
_usec_delay(889)
end procedure
procedure BASIS is
hoog
hoog
laag
laag
laag
hoog
laag
hoog
end procedure
procedure START_PAUZE is
for 10 loop
basis
hoog
hoog
laag
hoog
laag
hoog
delay_1mS(114)
end loop
end procedure
procedure STOP is
for 10 loop
basis
hoog
hoog
laag
hoog
hoog
laag
delay_1mS(114)
end loop
end procedure
procedure VOLGENDE is
for 10 loop
basis
hoog
laag
laag
laag
laag
laag
delay_1mS(114)
end loop
end procedure
delay_1S(5)
forever loop
start_pauze
delay_1S(2)
start_pauze
delay_1S(2)
start_pauze
delay_1S(2)
stop
delay_1S(2)
volgende
delay_1S(2)
start_pauze
delay_1S(2)
stop
delay_1S(5)
end loop
Thanks again.
regards
Hans
Op woensdag 16 juni 2021 om 08:04:59 UTC+2 schreef [email protected]:
Hi Hans,
I understand what you are doing so you do not need the 36 kHz carrier. That
makes it even simpler. In that case you only need a timer to generate the RC5
bi-phase signal. Will you be able to do that or do you need some help with that?
Met vriendelijke groet,
Rob Jansen
________________________________
From: [email protected] <[email protected]> on behalf of hans
<[email protected]>
Sent: Tuesday, June 15, 2021 9:54:26 PM
To: jallib <[email protected]>
Subject: Re: [jallib] RC5 lib
Hi Rob,
Thanks for responding, even though you're on vacation. First some more
information. I have a device that I normally operate with push buttons, but
that can also work with RC5 if i connect a Tsop1836 on it, for example. I also
have the codes used for address and commands. So I want to use a Pic as a
transmitter.
Actually I don't need the whole IR part because I can also connect an output
of the PIC directly to the RC5 input of the device.. I have already found the
information about what the pulse train should look like.
At least it keeps the gray matter flexible.
Greetings and have a nice holiday
Hans
Op dinsdag 15 juni 2021 om 18:31:02 UTC+2 schreef [email protected]:
Hi Hans,
Some years ago (in 2014 to be exact) I wrote a decoder routine that is capable
of decoding RC5 and RC6 messages. It works on an interrupt basis. I wrote two
variants, one using Timer 0 and one using Timer 1. I attached the sources files
in the attached zip file.
I could make a JAL library out of it - since these source files are not yet
Jallib compilant - and make it part of Jallib. I could then incorporate the
timer part in the decoder part so that you only have one library to include.
Currently I am enjoying my vacation so I am not able to test them but I think
they work. The main program uses a USART to write the received RC5 or RC6
message. The UART part is also included in the zip file.
I could make an RC5 and RC6 encoder program since I have done that in the past
because I have worked at Philips many years ago and was one of the contributors
of the Philips RC6 standard 🙂. As you may know, for the encoder you need a 36
kHz modulated signal to drive the Infra Red LED so you need a PWM signal for
that.
Kind regards,
Rob
________________________________
Van: [email protected] <[email protected]> namens hans
<[email protected]>
Verzonden: dinsdag 15 juni 2021 10:49
Aan: jallib <[email protected]>
Onderwerp: [jallib] RC5 lib
Is there beside the SIRC lib also one for sending/receiving RC5 ?
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/0e2b7ff9-dfde-4d3b-8db2-72e3c50ee21fn%40googlegroups.com<https://groups.google.com/d/msgid/jallib/0e2b7ff9-dfde-4d3b-8db2-72e3c50ee21fn%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/7bc0ee26-67d2-46ac-bd58-a6d339042326n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/7bc0ee26-67d2-46ac-bd58-a6d339042326n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/850931fd-ea4f-45e8-9cd2-80389810ead6n%40googlegroups.com<https://groups.google.com/d/msgid/jallib/850931fd-ea4f-45e8-9cd2-80389810ead6n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to
[email protected]<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/06d8f065-5f5c-4d65-96db-21be1be2f62fn%40googlegroups.com<https://groups.google.com/d/msgid/jallib/06d8f065-5f5c-4d65-96db-21be1be2f62fn%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups
"jallib" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jallib/VI1PR07MB6256E597BDCC6B129E41E44CE60D9%40VI1PR07MB6256.eurprd07.prod.outlook.com.