| Using PIC16f876 SPI to control
the Voice Chip ISD4003 |
|
|
|
Schematic Diagram for teh ISD4003 voice chip.
Works Great.
Circuit works on 3V

Click here for the source code
New source code ( using basic memory segmentation )
|
IMPORTANT NOTE:
The
pictures shown in the oscilloscope show a data burst starting at the raising edge of the
clock. It SHOULD BE ON THE FALLING EDGE instead.
Using this commmand:
setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16 );
Ernesto
|
Hits to this page.
|

snap shots from the oscilloscope are down here |
MOSI
Control Bytes
PIC sents MSB first
In oscciloscope bits are read from left to right
Ao, A1, .. A10,Co, ... C4 |
|
Blue channel indicates
clock signal generated by the PIC16F876
Yellow channel indicates data sent to D4003  |
POWER UP Voice Chip
Address byte:
00000000
Instruction Byte:
00100000
RUN =
0
= ns
PLAY/RECORD = 0 = ns
PU =
1
= POWER UP
IAB =
0
= ns
|
|
Blue channel
indicates clock signal generated by the PIC16F876
Yellow channel indicates data sent to ISD4003 |
RECORD at Address A0-A10
Address byte:
00000000
Instruction Byte:
10100000
RUN = 1
PLAY/RECORD = 0 = RECORD
PU =
1
= Already On
IAB =
0
= Use Address |
|
Blue channel indicates
clock signal generated by the PIC16F876
Yellow channel indicates data sent to ISD4003  |
STOP Playing or Recording
Address byte:
00000000
Instruction Byte:
00110000
RUN =
0
= STOP
PLAY/RECORD = 0 = ns
PU =
1
= Already On
IAB =
1
= Ignore address bit
|
|
Blue channel indicates
clock signal generated by the PIC16F876
Yellow channel indicates data sent to ISD4003 |
PLAY at Address A0-A10
Address byte:
00000000
Instruction Byte:
11100000
RUN =
1
= RUN
PLAY/RECORD = 1 = PLAY
PU =
1
= Already On
IAB =
0
= Use address
|
|
Blue channel indicates
clock signal generated by the PIC16F876
Yellow channel indicates SS pin on ISD4003  |
Slave Select Signal.
This picture shows SS pin on the ISD4003 when data is transmitted from
PIC16f87 to it using SPI
I give enough time before transmitting data. |
|