Clone SERVO CD HECD-019A for PHILIPS CDM12.1

datasheet say-

7.15
Communication on the microcontroller interface can be set-up in two different modes:
•4-wire bus mode: protocol compatible with SAA7345 (CD6) and TDA1301 (DSIC2) where:
– SCL = serial clock
– SDA = serial data
– RAB=R/W control and data strobe (active HIGH) for writing to decoder registers 0 to F, reading status bit selected via decoder register 2 and reading Q-channel subcode
– SILD =R/W control and data strobe (active LOW) for servo commands.

•I2C-bus mode: I2C-bus protocol where SAA7327 behaves as slave device, activated by setting RAB = HIGH and SILD = LOW where:
–I2C-bus slave address (write mode) = 30H
–I2C-bus slave address (read mode) = 31H

– Maximum data transfer rate = 400 kbits/s.
It should be noted that only servo commands can be used therefore, writing to decoder registers 0 to F, reading decoder status and reading Q-channel subcode data must be performed by servo commands.
 
Last edited:
  • Like
Reactions: sergiob
in practice, good will and read the manual. We hope to succeed !
😎

Immagine1114.jpg
 
I'm sorry dxx573k , but I'm a beginner in programming, what data should I collect and where should it be entered. In the servo board there is a Philips P87C58 Eprom, should they be inserted in this Eprom? How should a program be compiled? Unfortunately, I'm not good at programming. Have patience unfortunately I'm not practical.
 
Last edited:
I cant write a code for your. The original microcontroller is 8051 core. The Arduino/Atmega is more easy for beginners, but anyway, you must learning basic concepts of programming. Dont fear - its near to standart school knowledge. I am not a programmer to.
Tonight i continue work whith you data in initialisation part.
first of all - get any Arduino board and try to blink LED.
 
  • Like
Reactions: sergiob
I understand that you cannot write the code for me, indeed, thank you very much for your willingness to help me solve the problem but above all to learn to code. But I don't understand a concept. If the servo code is stored in an EPROM soldered to the CDM controller. What needs to be done. Bypass the Eprom with the servo board initialization parameters and create a complete code for the controller, in my case it would be a copy of the MUSICAL FIDELITY A3.5 CD player with PIC16F88 controller in memory on the CD player motherboard. This is my doubt. My idea was to adapt the mechanical board and the servo to be used on all CD players produced with this Philips logic. This is the reason for the possible copying of the P87C58 memory but I understand that this is not possible to do perhaps because the memory is not readable. I did tests reading the Philips Eprom and it seems to read but when writing to a new P87C58 and soldered on the servo board it doesn't work. I don't know if I explained myself.
 
P87C58 is not EEPROM, its microcontroller whith EEPROM.
1680782712011.png

its may be encripted firmware -
"Encryption Array
Within the EPROM array are 64 bytes of Encryption
Array that are initially unprogrammed (all 1’s). Every
time that a byte is addressed during a verify, 6 ad-
dress lines are used to select a byte of the Encryp-
tion Array. This byte is then exclusive-NOR’ed
(XNOR) with the code byte, creating an Encryption
Verify byte. The algorithm, with the array in the un-
programmed state (all 1’s), will return the code in its
original, unmodified form. For programming the En-
cryption Array, refer to Table 4 (Programming the
EPROM)"
 
as for reading and writing philips P87C58 micro controller. I used this XGPRO software and this programmer. In the read and write configuration there are some points to select, as you can see in the sub-tables " ENCRYPT. TB" and "CONFIG"
1680786821651.png

I haven't actually tried to read or write by changing the parameters on "CONFIG" . Could this be the problem of the non-functioning of the new P87C58 programmed by me?

1680786903191.png


1680786941674.png


1680786977764.png


1680787015031.png


1680787044607.png



1680786741402.png

1680786767770.png


1680787525516.png
 
Last edited:
okay. so at this point let's forget the Philips chip and let's try with Arduino and Atmega chip since it's always a QFP-44 chip only that I imagine the scheme and the pinout are definitely different so I'll have to modify the servo board.

as far as Arduino is concerned, I have already done simple usage tests in the past, and that is trying to turn on and off simple leds or relays. So I would have Arduino UNO and Arduino MEGA 2560. So if you want, let's try to develop something.
 
Last edited:
Working with an Arduino is not too difficult:
I think there aren't any libraries, but perhaps thete are for 3-state bus handling. Anyway:
Set the initialization for the necessary pins (mode select, etc). Define the bus pins.
Within the loop:
Set the bus pins as input, read the values.
Process according to the operating modes (that is four routines since you identified four modes, right?)
Each routine gives an output value, but only one routine is selected according to the input conditions.
Perhaps the previous value of the output pins also plays a role - if not it is better.
Set the I/O pins as output, and place the output values of the routine onto them.
Now the timing: make sure your loop last exactly the necessary time.
Terminate the loop.
I know it sounds simple, you only need a protocol analysis to see the relation between the inputs and outputs on the bus. There must be also direction control on a separate pin.