PDA

View Full Version : using ISD2560 on PIC18F4620



rookie
- 27th March 2007, 10:18
HI , did anyone know how to record sound using ISD2560 in PIC18F4620 ?

peterdeco1
- 27th March 2007, 10:51
Hi Rookie. You really don't need a PIC to run that chip. You can use a diode matrix for addressing purposes. Also, DON"T become attached to it. Winbond released an End Of Life to that series and is discontinuing it. We are using the ISD2575 (same thing with 75 seconds) and I'm in the process of redesigning our boards to use (probably) the newer ISD1750. It offers the ability to operate stand-alone or SPI with a microcontroller.

dleroi
- 3rd December 2007, 17:40
We are using the ISD2575 (same thing with 75 seconds) and I'm in the process of redesigning our boards to use (probably) the newer ISD1750. It offers the ability to operate stand-alone or SPI with a microcontroller.

I realize that this is an old thread, but I'm curious if you did go with the ISD1750? If so, I'd be interested in hearing how it went.

I'm also updating an old project that used a now obsolete Winbond chip. I thought I could simply pulse the FWD input to get to the desired recording, but the ISD chip responds too slowly that way. I'm going to pursue the SPI interface, next. If there's any interest, I'll post my results.

I'm new to this forum, so I'm not sure if I should post here or start a new thread dedicated to interfacing with the ISD chips. Anyone have a suggestion?

- Don

peterdeco1
- 3rd December 2007, 19:24
Hi Don. Never persued the ISD1750. Requires a whole new protocol from what I'm used to. I've been using the ISD5008 for a while now and with the quantities we order, the price is almost equal to what we were paying for the 2575. So this is the chip we will use to replace it.

dleroi
- 3rd December 2007, 21:13
Hi Peter,

Thanks for the quick reply. It appears no one is "upgrading" to the ISD1700 series for their PIC projects. My concern was with the SPI code, but since it looks like SPI is soon going to be the only way to talk to these things, I'm going to give the ISD17120 a shot.

- Don

peterdeco1
- 4th December 2007, 16:26
Let me know Don. Perhaps we can share some code.

Dave
- 4th December 2007, 17:58
peterdeco1, Here is a subroutine I wrote quite a few years back for a repeater. The plyrec flag is for playback/record. It uses the chip select, interrupt, eom, mosi and clock. It was for recording and playing back 6, 20 second messages from a 120 second part. I hope it helps....

Dave Purola,
N8NTA



'************************************************* ********************
ISDDVR1:' SPI DRIVER FOR ISD-33120 DVR
'************************************************* ********************
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[%00100\5] 'SEND POWER-UP COMMAND
ISDSEL = 1 'SET <>CE HIGH
PAUSTIME = 30 'WAIT FOR POWER-UP SEQUENCE TO COMPLETE
GOSUB WAITIME
IF PLYREC=0 THEN REC 'CHECK FOR RECORD MODE

PLY:
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[((DRCHANL MIN 5)*133)\11,%11100\5] 'START PLAYBACK @ ADDRESS
ISDSEL = 1 'SET <>CE HIGH
PAUSE 1
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[%11110\5] 'CONTINUE PLAYBACK @ ADDRESS
ISDSEL = 1 'SET <>CE HIGH
TIMSTAMP = 0
WHILE TIMSTAMP<20000 'WAIT FOR 20 SEC or UNTIL EOM
IF EOM_OVF=0 THEN CLRDR 'CHECK FOR EOM, IF NOT BUSY THEN FINISHED
WEND
GOTO CLRDR 'NO EOM BIT TO BE FOUND IN TIME

REC:
TIMSTAMP = 0
WHILE TIMSTAMP<3000 'START TIMING LOOP FOR UNKEY (~3 SEC)
IF COR=1 THEN CONTREC 'WAIT FOR COR/COS TO DROP
WEND
GOTO CLRDR 'NO UNKEY TO BE FOUND IN TIME

CONTREC:
TIMSTAMP = 0
WHILE TIMSTAMP<3000 'START TIMING LOOP FOR UNKEY (~3 SEC)
IF COR=0 THEN SREC 'CHECK FOR COR/COS PRESENT
WEND
GOTO CLRDR 'TIME IS UP SO, FINISH OPERATION

SREC:
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[((DRCHANL MIN 5)*133)\11,%10100\5] 'START RECORD @ ADDRESS
ISDSEL = 1 'SET <>CE HIGH
PAUSE 1
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[%10110\5] 'CONTINUE RECORD @ ADDRESS
ISDSEL = 1 'SET <>CE HIGH
TIMSTAMP = 0
WHILE TIMSTAMP<19900 'WAIT FOR 19.9 SEC or UNTIL EOM
IF EOM_OVF=0 OR COR=1 THEN CLRDR 'IF COR/COS DROPPED OR EOM THEN STOP RECORD
WEND

CLRDR:
ISDSEL = 0 'SET <>CE LOW
SHIFTOUT MOSI,SCLK,0,[%00000\5] 'STOP REC/PLY @ POWER DOWN
ISDSEL = 1 'SET <>CE HIGH
RETURN

dleroi
- 5th December 2007, 14:24
Well Dave,

I think you've saved me a ton of trial and error! Thanks!

- Don

dleroi
- 5th December 2007, 14:28
Let me know Don. Perhaps we can share some code.


Peter,

Definitely!

- Don

peterdeco1
- 5th December 2007, 17:29
Thanks Dave. Your code is almost identical to the 5008 code except there are 3 SHIFTOUTs to get the 5008 to go from record to play. Once in play, the first 2 config bits are stored in a temporary register so you can just repeat the 3rd to do things like message cueing.

newtoybrazil
- 8th December 2007, 16:34
/*Hello everyone, health and harmony from Brazil. For the subrotina, just put it in my code or have to declare it before?
It can be used with the PIC16F877 and ISD2590? I have one and I thought he would never use it ...
I am building a small robot and would like to respond to the same external events through sounds or phrases.
Thanks to all.*/

dleroi
- 11th December 2007, 01:24
Well, I have an ISD17120 working under SPI control. I still have some things to figure out for the recording operation, but I'm pretty pleased, so far.

I decided to use a Basic Atom for the prototype to make it a little easier on me. The code is almost the same - if not identical.

Dave, your post was a big help to get the SPI sorted out, but otherwise, the ISD17120 is a whole different animal than those other ISD devices.

One big, dumb mistake that I couldn't figure out until I got out the oscilliscope - I had used back slashes instead of forward slashes in the SHIFTOUT syntax! So, it was always shifting out 16 bits and the command codes were divided by the number of bits I had intended to send!

I'll post some code when I get the recording down. Meanwhile, if anyone else is having problems with an ISD1700 device, I may be able to help.

- Don

ivirscar
- 15th December 2008, 05:48
Hey Don...


I am working with the ISD1740 under SPI control- any example code for operating with the set_play command would be greatly appreciated! All I want to do in my application is set the play pointer to the beginning of a given message address and play the message. I need to be able to set the address beginning and end to play pre-recorded "sound effects" from the chip.