i am trying to decode dtmf signals using only a pic 16f684 and no other ic. Im able to decode what column the key was pressed in by counting th frequency.If anyone knows of some code (short)
to decode what row the key is in i would greatly appreciate the help
dtmf
Re: dtmf
If you intend to do lots of pic'ing and want to lots of telephone type stuff, then have a look at the rat_ring group at yahoo. This group belongs to an ex BT engineer Ken Boakes, exists solely for pic to telephone interfacing.<p>Colin
On a clear disk you can seek forever.
Re: dtmf
The DT in DTMF stands for Dual Tone. There are two frequencies in the tone. I'm wondering how you are detecting the one you are.... Anyway, the DUAL tones identify the exact key, (Thats how the phone company knows what number you're dialing), so, Identify the other tone and you're home free....<p>Now, how to do that? I'm not sure you can do the calculations in real time with a PIC, but a Fast Fourie (spelling?) Transform (FFT) or its close cousing (DFT?) should do that for you. They represent some pretty fancy math....but there are plenty of code fragments floating around...if you just wanna black box it .... and do a function call.<p>[ July 23, 2004: Message edited by: cato ]</p>
Re: dtmf
The tones are in two groups. The low frequency group has four frequencies, one for each row (697, 770, 852, and 941 Hz). The high frequency group has one frequency for each column (1209, 1336, 1477, and 1633 Hz). Only one frequency in each group is used at a time.<p>It should be possible to separate the two frequency groups using low-pass and high-pass filters. These would then be squared up and sent to the PIC as two logic signals. Software could then determine the frequency of each signal by measuring the period of each cycle.
Re: dtmf
I appreciate the responses, but my personal requirements are 1. no external filters
2. no external ic
3. ive looked at that fourier
program and it is too complicated and way too long for my taste.
Ive wrote software in q basic to replicate the waves and using a simple peak counting algorithim
ive conquered the 3 columns in qbasic and on the pic. i just cant seem to pluck out the rows.
Ive tried using an algorithim that tracks zero crossing points and sub peaks, but all has failed. If anyone has any ideas or has seen a
short solution i would be gratfull
2. no external ic
3. ive looked at that fourier
program and it is too complicated and way too long for my taste.
Ive wrote software in q basic to replicate the waves and using a simple peak counting algorithim
ive conquered the 3 columns in qbasic and on the pic. i just cant seem to pluck out the rows.
Ive tried using an algorithim that tracks zero crossing points and sub peaks, but all has failed. If anyone has any ideas or has seen a
short solution i would be gratfull
Re: dtmf
You could of course just purchase one of the cheap DTMF decoding chips and feed the output of that into the pic for further processing.<p>Have you looked at the ratring site, they have what you want in the files section.<p>Colin
On a clear disk you can seek forever.
- Chris Smith
- Posts: 4325
- Joined: Tue Dec 04, 2001 1:01 am
- Location: Bieber Ca.
Re: dtmf
Incorporate the 567, costs a dime and does all the work for you.
Re: dtmf
<blockquote><font size="1" face="Verdana, Helvetica, sans-serif">quote:</font><hr>Originally posted by JKMADSCI:
IIve wrote software in q basic to replicate the waves <hr></blockquote><p>I want to know more about what that means. Are you generating and adding together two sine waves? How? What update rate are you using? What does the output look like?
IIve wrote software in q basic to replicate the waves <hr></blockquote><p>I want to know more about what that means. Are you generating and adding together two sine waves? How? What update rate are you using? What does the output look like?
Re: dtmf
Hey cato i sent you a private message with more data. let me know if you got it?
[email protected]. Im new to this bb.
[email protected]. Im new to this bb.
Re: dtmf
I did get both of them. I'm not sure I fully understood the first one. And it has been far to long since i wrote code in Basic (and never in Qbasic) for me to understand the second one. However, one thing I THINK I got from the first one is that you say your algorithm works when you run it on one device, but not when you simulate it.... or something like that. What I don't see in either of your emails is any reference to sampling frequency. <p>My guess is that q basic is far too slow to catch all the zero crossings (or the peaks) with any reliablity. So, my guess is you are not catching the second frequency because you are sampling too slowly, and the code never sees the peaks you are looking for. <p>Additionally, its not clear to me, how, when you DO see a peak, you know which frequency component its associated with...
Who is online
Users browsing this forum: No registered users and 60 guests