Searching \ for 'PIC & 8870' in subject line. ()
Make payments with PayPal - it's fast, free and secure! Help us get a faster server
FAQ page: www.piclist.com/techref/microchip/devices.htm?key=pic
Search entire site for: 'PIC & 8870'.

Truncated match.
PICList Thread
'PIC & 8870'
1999\03\09@030809 by Javier

flavicon
face
Hi
I4m interfacing a PIC with a 8870, but with some problems!!
If I don4t connect the PIC with the 8870, the 8870 decodes everything, even
though
I send the tones fast. But when I interface both in order the PIC to save
every recieved tone, the 8870 just decodes some of the tones.What couldbe
the problem ??? Should I put a Buffer between them??
Thanks in advance
Javier

1999\03\09@073142 by Dr. Imre Bartfai

flavicon
face
Hi,

I think the schematic should be shown to justify the problem. I have also
interfaced the 8870 with PIC and it works fine. It's some time ago. I
recall I did it IT-driven and a particular pin of 8870 was tied to RB0/INT
to signal here is a fresh digit. Data lines are connected to RB4..RB7.
I do not hope it helps but can give some hope...
Imre


On Tue, 9 Mar 1999, Javier wrote:

{Quote hidden}

1999\03\09@083841 by PDRUNEN

picon face
i think the PIC should do it without a buffer, I also remember Bob Blicks
design but he used a different chip.  For valid decoding, the 8870 need a
minimum 40mS tone on and 40mS tone off.

Paul

1999\03\09@085304 by John Hansen

picon face
At 05:01 AM 3/9/99 -0300, you wrote:
>Hi
>I4m interfacing a PIC with a 8870, but with some problems!!
>If I don4t connect the PIC with the 8870, the 8870 decodes everything, even
>though
>I send the tones fast. But when I interface both in order the PIC to save
>every recieved tone, the 8870 just decodes some of the tones.What couldbe
>the problem ??? Should I put a Buffer between them??
>Thanks in advance
>Javier

It may be a firmware problem.  The 8870 does not have a latch, so when a new
tone comes in it will displace the last one, sometimes before the last one is
read.  There is a line coming out of the 8870 (I've forgotten the name of it)
that will tell you when a new tone has been received.  You can run this into
the PIC interrupt line and do an interrupt service routine to gather the
tones.  If this is inconvenient, you can go to a 8880 chip, which includes a
latch and a register that can be read.

John Hansen

1999\03\09@122442 by Mike Keitz

picon face
On Tue, 9 Mar 1999 08:53:15 -0500 John Hansen <spam_OUThansenTakeThisOuTspamFREDONIA.EDU>
writes:

>It may be a firmware problem.  The 8870 does not have a latch, so when
>a new
>tone comes in it will displace the last one, sometimes before the last
>one is
>read.  There is a line coming out of the 8870 (I've forgotten the name
>of it)
>that will tell you when a new tone has been received.

I've only used the very old type of 8870.  It has an output latch that
will remember the last tone received until another one comes in.  The
output that indicates a tone is present is only active, well, while a
tone is present.  At the leading edge of the tone present output, the
4-bit output will represent the new tone.

In order to tell when "new" tones are coming in, your software has to
wait for the tone present signal to go inactive, indicating the first
tone has ended, then wait for it to go active again, indicating a new
tone has been received.  It has to be polled at least every 40 ms, and
faster wouldn't hurt.  My repeater controller polls about every 60 ms,
and some autodialers can outrun it, causing digits to be missed.  Since
the tone input is used infrequently and only by a few people, it didn't
seem to be much of a problem.


___________________________________________________________________
You don't need to buy Internet access to use free Internet e-mail.
Get completely free e-mail from Juno at http://www.juno.com/getjuno.html
or call Juno at (800) 654-JUNO [654-5866]

1999\03\09@225015 by Steve Ridley

flavicon
face
I am also using an 8870 interfaced to a PIC. I am using the Holtek CM8870 it
has a pin called StD which I have connected to RA4 to produce an interrupt
when a digit is decoded. I then read the digit within 40 ms by raising the
TOE pin on the 8870 and reading the data on RB4 - 7 which I have connected
to 8870 pins Q1 - 4.

Now while we are on this subject. Has anybody had much success reading DTMF
codes while there is voice on the analog input. I have a telephone line
application that delivers an announcement and waits for DTMF codes. I would
like it to be able to receive DTMF codes while the announcement is being
delivered. To achieve this I connected the raw announcement signal to IN- on
the 8870 to cancel the voice signal being received on IN+. The CM8870 has a
differential analog input IN+ and IN-. This works fairly well but it is not
as reliable as when their is no voice on the line. That is, it misses some
digits. Anyone had any success with this type of thing.

Steve Ridley
Blue Ocean Telecommunications
Sydney,  Australia

{Original Message removed}

1999\03\10@061849 by Stefan Sczekalla-Waldschmidt

flavicon
face
Hi,

> Now while we are on this subject. Has anybody had much success reading DTMF
> codes while there is voice on the analog input. I have a telephone line
> application that delivers an announcement and waits for DTMF codes. I would
> like it to be able to receive DTMF codes while the announcement is being
> delivered. To achieve this I connected the raw announcement signal to IN- on
> the 8870 to cancel the voice signal being received on IN+. The CM8870 has a
> differential analog input IN+ and IN-. This works fairly well but it is not
> as reliable as when their is no voice on the line. That is, it misses some
> digits. Anyone had any success with this type of thing.

I would think some filter will help. You may use a filter which just
let the frequencies pass where the DTMF-Tones are expected.

Kind regards,

       Stefan

1999\03\10@125947 by John Payson

flavicon
face
|Now while we are on this subject. Has anybody had much success reading DTMF
|codes while there is voice on the analog input. I have a telephone line
|application that delivers an announcement and waits for DTMF codes. I would
|like it to be able to receive DTMF codes while the announcement is being
|delivered. To achieve this I connected the raw announcement signal to IN- on
|the 8870 to cancel the voice signal being received on IN+. The CM8870 has a
|differential analog input IN+ and IN-. This works fairly well but it is not
|as reliable as when their is no voice on the line. That is, it misses some
|digits. Anyone had any success with this type of thing.

That's a bit of a tricky issue, since the signal you put onto the
phone line will get attenuated by an amount which may vary somewhat
with the distance to the telco office; you need to subtract out just
the right amount of signal to make things work optimally.  You may
have an easier time if, at least to start with, you feed your audio
signal and the phone line signal into a differential amplifier, with
adjustable gain on your audio signal, and try to "null" it as well as
possible.  That should then give you a pretty good idea of how to set
up the gain when using the 8870's internal diff. amp.

Note also that it's a good idea to mute outgoing audio when you see
something DTMF'ish.  Not only will this allow you to better detect any
digits after the first one, but if you are expecting a long-ish DTMF
digit you can check to make sure muting the audio doesn't cause the DTMF
to disappear (some people's voices can contain just the right frequencies
to fake out DTMF decoders--a phenomenon called "talk-off"; muting the
audio and checking that the DTMF is still present is a good way to mini-
mize that).

Another suggestion I'd add to the last one: the 8870 uses a cap to set
the required present/absent time for a DTMF signal [it "debounces" the
signal, basically].  I'd suggest that you might want to shrink that cap
and do the debouncing in software.  This would allow you to mute the
outgoing audio more quickly.


Attachment converted: wonderland:WINMAIL.DAT (????/----) (0002BFC8)

1999\03\10@170843 by paulb

flavicon
face
Steve Ridley wrote:

> I would like it to be able to receive DTMF codes while the
> announcement is being delivered.  To achieve this I connected the raw
> announcement signal to IN- on the 8870 to cancel the voice signal
> being received on IN+. The CM8870 has a differential analog input IN+
> and IN-.  This works fairly well but it is not as reliable as when
> there is no voice on the line.  That is, it misses some digits.

 You're describing a hybrid, but are you implementing it properly?

 Basically, it looks like:

Announce o--+---------------------------+
(Audio      |                           |
 source)    >    R                      >    R
            > ~680 ohm                  > ~680 ohm
            |                           |
         +--+-----------+  +------------+--------o
         |  |         __|__|__            Line via isolating
 Line Cl =  >  Rl     \ -  + /              transformer
 dummy   |  > ~680 ohm \    /  op-amp   +--------o
         |  |           \  /   or 8870  |
         M  M            \/             M
         Gnd                             Gnd

 Where Rl and Cl try to match the line.

 There's no way to filter DTMF frequencies out of voice, that's what
the (8870) chip is designed to do already, for better or worse.  A
properly designed hybrid is your best approach.
--
 Cheers,
       Paul B.

More... (looser matching)
- Last day of these posts
- In 1999 , 2000 only
- Today
- New search...