ISD2560 problem

Hello,

I have a problem controlling the ISD2560 audio recorder, connected to a microcontroller (Atmel Mega 32). I have recorded several messages and they are correctly played back in push button mode. But I need to play one specified message, not all of them.

The ISD2560 works now with A4(M4) = A8 = A9 = 1, A0(M0) controlled by the microcontroller (signal name: Isd_m0), with the rest of Ax = 0. The microcontroller controls inputs: P/!R (Isd_pr), PD (Isd_pd), !CE (Isd_ce).

According to the documentation, the general idea of playing back the n-th message is as follows:

- "Rewind" the memory to the beginning (a positive pulse to the PD),

- Turn on "fast-playing" (M0=1) while !CE = 1,

- Pulse CE (1 -> 0 -> 1) n-1 times,

- Enable normal playback (M0 = 0),

- Pulse !CE once.

Unfortunately, the effects are rather random: some message is played (or sometimes not), but not the one which I want. Delays between line changes affect the behavior. How should this be done properly? The following code in Bascom should do this job (but doesn't). In the original code, there is a delay (waitms 1) after each assignment.

Isd_pr = 1 Isd_pd = 0 Isd_pd = 1 Isd_pd = 0

For i = 2 To n Isd_m0 = 1 Isd_ce = 0 Isd_ce = 1 Next i

Isd_m0 = 0 Isd_ce = 0 Isd_ce = 1

Regards Piotr

Reply to
Piotrne
Loading thread data ...

=46rom memory, the ISD device fast-forwards at a very specific rate, looking for an end-of-message flag. Depending on how long each of your recorded messages is, you might not reach a message break point before submitting either a subsequent "next" instruction, or the final "play" instruction. Adjust your timing, and see if that helps. I do not know what the behavior would be if you pulsed this "next" instruction too rapidly.(?)

Still, I would expect the same results each time, and the fact that you mention that is not the case, does lead me to suspect some other cause, but I can't think of it. Could be an issue with power/reset timing as you switch from fast-forward to play mode? The datasheet should have that, but on their ISD4003's it's very fast and I assume they use the same technology. Good luck.

-mpm

Reply to
mpm

Results are the same each time (but not correct). I have been trying to insert different delays after starting pulses, up to 50 ms. With the same set of delays, results are the same.

According to the datasheet, another starting pulse on CE before the previous message reaches its end, causes a pause and the ISD waits for another pulse to continue. Indeed, the "fast playing" mode may behave strange if you send pulses too fast - it may switch between playing and pausing (instead of starting messages only). There is an output EOM (End Of Message), which should inform when one message is complete. I have tried to use it, but the EOM signal worked strange in this mode.

If the "fast playing" mode plays 800 times faster, then a 10 ms delay should be long enough to complete a single message, which normally takes about 0.5 second. But not - it doesn't work. And changing the delay to 50 ms changes the result... I'll keep trying with EOM.

Thank you Piotr

Reply to
Piotrne

I'm checking the EOM\\ signal now and it works. Indeed, before the next pulse on CE\\, I have to wait for EOM\\ = 0. This is also a short pulse only, with a length of 12.5 milliseconds. I have attached EOM\\ to a normal input and I have poll the state Of EOM\\ in a loop. But the program if fast enough and works well. I?ll check, why doesn?t it work with a "long delay" after a CE\\ pulse

- for example, 50 ms, without checking the EOM\\ state.

After switching back to normal playback speed, it is also important to wait for EOM\\ = 0. Trying to play another message may end with no sound, breaking the previous message etc.

Thank you! Piotr

Reply to
Piotrne

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.