Reply by ivan September 8, 20062006-09-08
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> ha scritto nel messaggio
news:2HeMg.9396$yO7.1549@newssvr14.news.prodigy.com...
> > > ivan wrote: > > > > > > I am generating all the freqs by using arrays and calculating values to > > reduce the timing errors.. Is this the best way to do this? > > > > ivan > > > > You can have the complete DTMF decoder in C if you like. > Please write to vlv@abvolt.com. > > VLV > > > >
I have it in C, but it uses Goertzel and Z8Encore is not fast enough. I want to try this other method and see if it fits into Z8Encore... otherwise will have to choose a faster mcu. Do you mean pay for it?
Reply by Vladimir Vassilevsky September 8, 20062006-09-08

ivan wrote:


> > I am generating all the freqs by using arrays and calculating values to > reduce the timing errors.. Is this the best way to do this? > > ivan >
You can have the complete DTMF decoder in C if you like. Please write to vlv@abvolt.com. VLV
Reply by ivan September 8, 20062006-09-08
"Vladimir Vassilevsky" <antispam_bogus@hotmail.com> ha scritto nel messaggio
news:Zr3Mg.16590$%j7.3220@newssvr29.news.prodigy.net...
> > > ivan wrote: > > > Hi Vladimir, > > > > I have another doubt now... I have 10 freqs (2 more for the
handshaking), if
> > I add all the periods for each freq I get about 9ms, this is the time
needed
> > to scan all tones once for one period only. Each DTMF tone last 50ms,
this
> > means that I can scan each tones max 5 times. But I have two square
waves to
> > scan (sin/cos), hence I can only scan each tone for 2 periods only.
Would
> > this be enough to get sensible results? > > This doesn't seem to be a working solution. > You should do all of the frequencies at the same time. > > VLV
I am generating all the freqs by using arrays and calculating values to reduce the timing errors.. Is this the best way to do this? ivan
Reply by Vladimir Vassilevsky September 7, 20062006-09-07

ivan wrote:

> Hi Vladimir, > > I have another doubt now... I have 10 freqs (2 more for the handshaking), if > I add all the periods for each freq I get about 9ms, this is the time needed > to scan all tones once for one period only. Each DTMF tone last 50ms, this > means that I can scan each tones max 5 times. But I have two square waves to > scan (sin/cos), hence I can only scan each tone for 2 periods only. Would > this be enough to get sensible results?
This doesn't seem to be a working solution. You should do all of the frequencies at the same time. VLV
Reply by Joerg September 7, 20062006-09-07
Hello Rafael,

> > Not much fun doing a DTMF-decoder on a controller. > > a) One can use a bandsplitfilter seperating lowgroup and highgroup. > Getting then the signal in both bands to 1 bit and deciding on the > frequency is the easy part. Virtually all old SC-ICs like the > MT8870 do it that way. > The bandsplitfilter on a controller is difficult. > TI has a applicationnote for the MSP430 using WDFs ( "wave digital > filter" ). But getting WDFs up is a lot of work, i can > scan one or more papers on DTMF bandsplits via WDF if you want > to have a go at it ( Joerg has given up by now i guess ).
No, I haven't but after finishing the technical expose this project is in the VC discussion phase. Those can take a while. If it results in a green light I'll have to calculate all that by hand since decent design SW for WDF doesn't seem to exist. Except for a collection of routines with scant to no documentation.
> b) One can use a filterbank with up to 16 narrow bandpass filters. > * using IIRs out of the textbook is impractical. > * Goertzel is the practical IIR-variant and for some controllers > like the Mitsubishi M16 there are implementations. But usually > it is limited to DSPs.
You can also do it on an MSP430. But only with HW multiplier (F427?). For some reason TI has decided to introduce new F2xx devices with a HW multiplier but taken out the 16bit ADC. Don't know why, banging my head on the table here... -- Regards, Joerg http://www.analogconsultants.com
Reply by Joerg September 7, 20062006-09-07
CBFalconer wrote:

> Joerg wrote: > >>CBFalconer wrote: >> > > ... snip ... > >>>There is a simple cure for availability of 1% capacitors - incoming >>>selection. All the 5% caps can be used by choosing the appropriate >>>resistors, which were relatively cheap. >> >>That is an expensive proposition, plus you have to sell all the ones >>between 1% and 5% on the gray market. Selecting resistors is a labor >>intense job, I would have never been allowed to spec in something like >>that. What we did with Hilbert shifters and stuff like this was passive >>(and sometimes active) laser trim. But we tried our darndest to avoid >>any of that. > > > I was talking about selecting caps, not resistors. ...
Sure, but selecting appropriate resistors as you mentioned is a process that requires labor and some skills. Read a scope, meter or digital test rig. Then select the resistor from a table or as displayed and solder it in. I didn't do industrial design in the 70's since I was still at college but in the 80's when I did this was very much frowned upon.
> ... For those you > could (this is 1970, remember) buy the appropriate values. > Besides, IIRC, the active filter calculations for the > band-splitting filter didn't require better than 5% components > anyhow. >
Yes, the bandsplit would be easier.
> Cap selection requires a jig. Place cap on jig, read, dump in > appropriate bin. Even with manual labor it is hard to see more > than 10 seconds per cap, triple that to 30 sec to allow for breaks, > bathroom time, chatting time, etc. > > Building the jig requires some ingenuity. >
My boss would have gone ballistic if that procedure were in my ECO ;-) -- Regards, Joerg http://www.analogconsultants.com
Reply by CBFalconer September 7, 20062006-09-07
Joerg wrote: 
> CBFalconer wrote: >
... snip ...
>> >> There is a simple cure for availability of 1% capacitors - incoming >> selection. All the 5% caps can be used by choosing the appropriate >> resistors, which were relatively cheap. > > That is an expensive proposition, plus you have to sell all the ones > between 1% and 5% on the gray market. Selecting resistors is a labor > intense job, I would have never been allowed to spec in something like > that. What we did with Hilbert shifters and stuff like this was passive > (and sometimes active) laser trim. But we tried our darndest to avoid > any of that.
I was talking about selecting caps, not resistors. For those you could (this is 1970, remember) buy the appropriate values. Besides, IIRC, the active filter calculations for the band-splitting filter didn't require better than 5% components anyhow. Cap selection requires a jig. Place cap on jig, read, dump in appropriate bin. Even with manual labor it is hard to see more than 10 seconds per cap, triple that to 30 sec to allow for breaks, bathroom time, chatting time, etc. Building the jig requires some ingenuity. -- Chuck F (cbfalconer at maineline dot net) Available for consulting/temporary embedded and systems. XX-Mozilla-Status: 8018.att.net>
Reply by CBFalconer September 7, 20062006-09-07
Joerg wrote:
> > CBFalconer wrote: >
... snip ...
>> >> There is a simple cure for availability of 1% capacitors - incoming >> selection. All the 5% caps can be used by choosing the appropriate >> resistors, which were relatively cheap. > > That is an expensive proposition, plus you have to sell all the ones > between 1% and 5% on the gray market. Selecting resistors is a labor > intense job, I would have never been allowed to spec in something like > that. What we did with Hilbert shifters and stuff like this was passive > (and sometimes active) laser trim. But we tried our darndest to avoid > any of that.
I was talking about selecting caps, not resistors. For those you could (this is 1970, remember) buy the appropriate values. Besides, IIRC, the active filter calculations for the band-splitting filter didn't require better than 5% components anyhow. Cap selection requires a jig. Place cap on jig, read, dump in appropriate bin. Even with manual labor it is hard to see more than 10 seconds per cap, triple that to 30 sec to allow for breaks, bathroom time, chatting time, etc. Building the jig requires some ingenuity. -- Chuck F (cbfalconer at maineline dot net) Available for consulting/temporary embedded and systems. <http://cbfalconer.home.att.net>
Reply by Joerg September 7, 20062006-09-07
CBFalconer wrote:

> Vladimir Vassilevsky wrote: > >>Joerg wrote: >> >> >>>>>Not in 1970. The only things available then were based on big >>>>>iron cores and brute force narrow band filters. >>> >>>There was another way to do it but in telco this was not well >>>understood: Mix up to a few ten kHz and filter there. Much easier. >> >>It is difficult to believe that it was easier to get the required >>Q and stability at those frequencies. Or, perhaps, you could use >>crystals as the filters? >> >> >>>>Still the uA741 was already invented that time, right? >> >>>Sure, I did it with uA709 in those days. But: Look at it from a >>>manufacturer's point of view. In the 70's you could get 1% >>>resistors but they cost much more than today. However, you >>>could not buy 1% capacitors unless you paid a prohibitive price. >> >>The early microprocessors were available also (?), so the digital >>DTMF decoder could be built. Too expensive at that time, perhaps. >> >> >>>>The other solution is the line of the synchronous detectors which >>>>should not be the problem at that time either. >> >>It seems to be the simplest solution which should work without the >>need for adjustment. Using the discrete logic, it would take about >>15 ICs to build the decoder. > > > If you look back at my posting <44FE2537.34FEFF80@yahoo.com> > (somebody has removed the necessary attributions) you will see I > could do it with only 3 packages, at the time (1970). You also > can't use filters with excessive Q, because there are tolerances on > the generated frequencies. > > There is a simple cure for availability of 1% capacitors - incoming > selection. All the 5% caps can be used by choosing the appropriate > resistors, which were relatively cheap. >
That is an expensive proposition, plus you have to sell all the ones between 1% and 5% on the gray market. Selecting resistors is a labor intense job, I would have never been allowed to spec in something like that. What we did with Hilbert shifters and stuff like this was passive (and sometimes active) laser trim. But we tried our darndest to avoid any of that. -- Regards, Joerg http://www.analogconsultants.com
Reply by ivan September 7, 20062006-09-07
"Peter Dickerson" <first{dot}surname@tesco.net> ha scritto nel messaggio
news:dXWLg.11442$8V4.6380@newsfe5-win.ntli.net...
> "ivan" <wolfsafety@wolfsafety.it> wrote in message > news:edpd7l$g6n$1@news.flashnet.it... > > Hi Vladimir, > > > > I have another doubt now... I have 10 freqs (2 more for the
handshaking),
> if > > I add all the periods for each freq I get about 9ms, this is the time > needed > > to scan all tones once for one period only. Each DTMF tone last 50ms,
this
> > means that I can scan each tones max 5 times. But I have two square
waves
> to > > scan (sin/cos), hence I can only scan each tone for 2 periods only.
Would
> > this be enough to get sensible results? > > It sounds like you're expecting to do the tone searches sequentially. I > don't think that's what is intended. I expect that for an input you
multiply
> by sin *and* cos and accumulate the two results. With the same data input
to
> the same with sin and cos for the other frequencies too. At the end a > sampling period you make a determination of the energies in each frequency > (at least notionally by using the sum of squares of the sin and cos > accumulators) making sure only one from each band is strong. Only if you
run
> out of time would you consider filtering sequentially. > > Peter > >
Ok! I see what you mean... thanks!