Contacte

Generator de microcircuit de semnale ton dtmf. Studiul receptorului și al emițătorului de semnale dtmf. Condiționarea semnalului Dtmf

Subiectul dispozitivelor simple, am decis să construiesc un generator de semnal DTMF pentru același ATtiny2313. Cine nu știe, DTMF (Engleză Dual-Tone Multi-Frequency) este un semnal analogic cu două tonuri multifuncțional utilizat pentru apelare număr de telefon... Citiți Wikipedia.

Decizia de a asambla un astfel de dispozitiv a fost dictată de dorința de a încerca să implementeze semnale analogice complexe folosind un microcontroler. Nu aplicație practică pentru acest aparat nu a fost planificat, dar poate folosi cineva un astfel de dispozitiv? Foloseste-l!

Sursa generator DTMF


Acum să vedem ce avem.

Semnalul este format folosind PWM și, pentru a-i da forma dorită, se folosește un lanț RC. Ca rezultat, după lanțul RC, primim următorul semnal (butonul 6 este apăsat):

De-a lungul întregii curbe a semnalului util, observăm un pieptene de înaltă frecvență (frecvența este mai mare decât cea sonoră, deci nu va crea zgomot) - aceasta este opera lanțului RC. Puteți face linia mai lină prin creșterea capacității condensatorului sau a rezistenței rezistorului, dar în acest caz, oscilația semnalului util va scădea semnificativ.

Ne uităm la spectrul semnalului și ne asigurăm că există două frecvențe individuale(frecvența PWM a depășit zona de afișare), atunci totul este în regulă - dispozitivul funcționează așa cum ar trebui.

Soluții gata preparate

Există sarcini de generare și decodare a unui semnal DTMF soluții gata făcute... Iată câteva fișe tehnice pentru aceste microcircuite.

Generator DTMF
- Decodor DTMF


P.S. Păcat că nu există ADC în ATtiny2313 - ai fi putut să te sperie și de decodorul DTMF! Dar nimic, îl voi repeta pe mega, cu siguranță îl voi atașa.

(Vizitat de 6.868 ori, 1 vizite astăzi)

Invenția se referă la domeniul generării digitale a semnalelor de frecvență în două tonuri (DTMF) destinate transmiterii de date, de exemplu, în domeniul telefoniei. Rezultatul tehnic obținut este o scădere a numărului de elemente de circuit redundante, o creștere a eficienței economice. Generatorul de semnal DTMF, care implementează metoda de generare a semnalului DTMF, conține doi acumulatori, două registre de blocare, două dispozitive de memorie, un sumator final, un convertor digital-analog, un convertor de semnale DTMF într-o secvență de numere întregi, un divizor a frecvenței master a generatorului de semnal DTMF cu un factor de diviziune reglabil, un convertor de coduri DTMF de semnale în codul factorului de divizare. 2 sec. și 3 c.p. f-ly, 2 dwg

Invenția se referă la metode de generare a metodelor digitale de semnale DTMF (frecvență în două tonuri) destinate transmiterii datelor, de exemplu, în domeniul telefoniei cu apelare prin frecvență tonică. este metoda de generare a semnalelor DTMF, prezentată în brevetul SUA nr. 5034977 din 04.04.89, public. 23.07.91, M.cl. 5 H 04 M 1/00. O metodă cunoscută pentru generarea semnalelor DTMF include selectarea primului și celui de-al doilea cod de unghiuri de eșantionare corespunzătoare primei și celei de-a doua frecvențe a componentelor semnalului DTMF, însumarea cumulativă a primului și celui de-al doilea cod de eșantionare unghiuri, respectiv, fixate periodic, cu o perioadă corespunzătoare frecvenței de eșantionare a ceasului, primul și al doilea rezultat al însumării cumulative, obținând prima și a doua valoare discretă a componentelor semnalului DTMF stocate în celulele aflate la adresa localizată tabele ale valorilor discrete ale componentelor semnalului DTMF prin citirea din tabelele corespunzătoare la adresele corespunzătoare rezultatelor sumării cumulative a codurilor unghiului de eșantionare, însumând prima și a doua valoare discretă a componentelor semnalului DTMF la obțineți a treia valoare discretă corespunzătoare valorii semnalului DTMF. Metoda cunoscută pentru generarea semnalelor DTMF este următoarea: în funcție de codul DTM Semnal F prin intermediul primei conversii a codurilor de semnal DTMF, este selectat primul cod, care determină unghiul de eșantionare a semnalului cu o frecvență corespunzătoare grupului tripla- coloane și, prin intermediul celei de-a doua conversii a codurilor de semnal DTMF, este selectat al doilea cod, care determină unghiul de eșantionare a semnalului cu o frecvență corespunzătoare grupului de frecvențe mai mici - rânduri, periodic, cu o perioadă corespunzătoare frecvența ceasului de eșantionare, primul cod al unghiului de eșantionare este însumat în acumulatorul corespunzător și fixat în registrul corespunzător, a cărui ieșire este rezultatul, a cărui valoare corespunde adresei celulei de tabel stocate în memoria corespunzătoare numai citire și în care sunt situate valorile discrete corespunzătoare ale sinelor, care determină frecvența superioară a semnalului DTMF în același mod, periodic, cu o perioadă corespunzătoare frecvenței de eșantionare a ceasului, se însumează al doilea cod al unghiului de eșantionare sus în acumulatorul corespunzător și fixat în registrul corespunzător, a cărui ieșire este rezultatul, a cărui valoare corespunde adresei celulei de tabel stocate în memorie numai în citire și în care sunt amplasate valorile discrete corespunzătoare ale sinelor care determină frecvența inferioară a semnalului DTMF, valorile discrete ale sinelor care determină frecvențele superioare și inferioare ale semnalului DTMF sunt însumate în sumatorul final, determinând valoarea discretă a semnalului DTMF și prin conversie digital-analog, sunt alimentate la ieșire, formând semnal sinusoidal DTMF corespunzător codului de intrare al semnalului DTMF. Metoda cunoscută este ineficientă datorită indicatori tehnici și economici reduși și indicatori tehnologici.Indicatorii tehnici și economici sunt determinați de costurile necesare la implementarea metodei de realizat parametrii necesari prezentat semnalelor DTMF. V metodă cunoscută precizia generării frecvenței depinde de adâncimea de biți a codului corespunzătoare unghiului de eșantionare, care necesită o capacitate mare de biți a acumulatorului, ceea ce complică implementarea metodei cu hardware simplu. Și anume, codul unghiului de eșantionare în metoda cunoscută este determinat de expresia K = (F / F t) 32 ..., (1.1) unde K este codul corespunzător unghiului de eșantionare; F este frecvența generată; F t este frecvența de eșantionare. După cum puteți vedea, acuratețea frecvenței generate depinde fără echivoc de raportul dintre frecvența generată și frecvența de eșantionare. , cel puțin 12 biți, ceea ce duce la o creștere a numărului de elemente componente ale dispozitivelor care implementează metoda cunoscută. Dispozitivele cunoscute pentru implementarea metodei cunoscute, și anume addere, registre, memorii numai în citire, au intrări / ieșiri cu o lățime de 4 și 8 biți. Prin urmare, cu o adâncime de biți mai mare, sunt necesare costuri tehnice și economice suplimentare pentru implementarea dispozitivelor la fel de funcționale. În același timp, în metoda cunoscută, o scădere a numărului de cifre după punctul zecimal duce la o eroare de frecvență care o depășește pe cea permisă. Indicatorii tehnologici sunt determinați de versatilitatea și unificarea în implementarea metodei, de exemplu, stadiul actual al tehnicii, care implică o scădere a consumului de material, a elementelor componente și o creștere a multifuncționalității dispozitivelor, necesită utilizarea microcontrolerelor. Microcontrolerele pe scară largă utilizate în măsurători de telefonie și telemetrie utilizează date pe 8 biți și un dispozitiv aritmetic-logic pe 8 biți, care necesită operații de calcul suplimentare legate de sumarea datelor cu o lățime mai mare de 8 biți și analiza semnalului de transport atunci când se implementează cunoscutul care mărește numărul de comenzi și, în consecință, frecvența de ceas a microcontrolerului, precum și volumul memorie cu acces aleator microcontroler, ceea ce duce la o creștere a costului dispozitivelor folosind o metodă cunoscută de generare a semnalelor DTMF. Această concluzie este dată atunci când se analizează aplicarea metodei cunoscute într-un apelator de tonuri bazat pe microcontrolere fabricate de Atmel, Microchip tnc etc. Astfel, metoda cunoscută este fundamental ineficientă, datorită indicatorilor tehnici și economici reduși, exprimat în consumul crescut de material , consumul de energie și indicatorii tehnologici reduși, deoarece are limitări atunci când se utilizează metoda, inclusiv în compoziția microcontrolerelor de utilizare pe scară largă, care se exprimă în creșterea caracteristici tehnice aplicat microcontrolerelor, ceea ce reduce multifuncționalitatea lor. Cel mai apropiat în esență tehnică și rezultatul obținut de generatorul de semnal DTMF revendicat este generatorul de semnal DTMF prezentat în brevetul SUA nr. 5034977 din 04.04.89, publ. 23.07.91, M.cl. 5 N 04 M 1/00. Generatorul cunoscut de semnale DTMF include: primul acumulator, primul registru de blocare, primul dispozitiv de memorie, al doilea sumator acumulator, al doilea registru de blocare, al doilea dispozitiv de memorie, sumatorul final, convertor digital-analog, iar ieșirea primului acumulator este conectată la intrarea primului registru de blocare, ieșirea primului registru de blocare este conectată la intrarea primului dispozitiv de memorie, precum și la unul dintre intrările primului sumator de stocare, ieșirea primului dispozitiv de memorie este conectată la una dintre intrările sumatorului final, ieșirea celui de-al doilea sumator de stocare este conectată la intrarea celui de-al doilea registru de blocare, ieșirea celui de-al doilea blocare registrul este conectat la intrarea celui de-al doilea dispozitiv de memorie, precum și la una dintre intrările celui de-al doilea acumulator, ieșirea celui de-al doilea dispozitiv de memorie este conectată la cealaltă intrare a sumatorului final, ieșirea sumatorului final este conectat la intrarea digitalului un convertor de jurnal, a cărui ieșire este ieșirea unui generator de semnal DTMF. Generatorul cunoscut conține, de asemenea, un prim convertor de coduri de semnal DTMF în codurile corespunzătoare de unghiuri de eșantionare corespunzătoare frecvențelor înalte ale semnalului DTMF, un al doilea convertor de Semnalele DTMF codifică în codurile corespunzătoare de unghiuri de eșantionare corespunzătoare frecvențelor inferioare ale semnalului DTMF, iar ieșirea primului convertor de semnale DTMF este conectată la o altă intrare a primului acumulator, ieșirea celui de-al doilea convertor de semnale DTMF este conectate la o altă intrare a celui de-al doilea acumulator, intrările primului și celui de-al doilea convertor de semnale DTMF sunt intrările generatorului de semnal DTMF și intrările de ceas ale primului și celui de-al doilea registru de blocare interconectate și sunt intrarea frecvența ceasului Eșantionarea generatorului de semnal DTMF. Binecunoscutul generator de semnal DTMF oferă un rezultat tehnic scăzut datorită numărului excesiv de elemente de circuit asociate cu diferite, precum și capacității excesive a acelorași elemente funcționale. În plus, implementarea soluției tehnice cunoscute este efectiv posibilă sub forma unui microcircuit separat separat, cu toate acestea, acest lucru necesită organizarea unei producții specializate, dar având în vedere că generatoarele de semnal DTMF fac parte din dispozitive multifuncționale (telefoane cu capacități avansate, dispozitive pentru transmiterea informațiilor telemetrice prin linii telefonice etc.) implementate în prezent pe baza microcontrolere universale , producerea de microcircuite individuale de semnale DTMF este ineficientă din punct de vedere economic. Baza soluției tehnice propuse este sarcina de a crea o metodă de generare a semnalelor DTMF utilizând un generator de semnal DTMF, în care, prin schimbarea condițiilor și a secvenței de operații, metoda este implementată cu indicatori tehnici și economici ridicați datorită scăderii capacității de biți de același tip de operații, indicatori tehnologici ridicați, la implementarea metodei, atât în ​​proiectarea circuitelor cu hardware simplu, cât și ca parte a unui microcontroler multifuncțional, asociat cu repetabilitatea, la implementare, a acelorași elemente funcționale. Soluția tehnică se bazează pe sarcina de a crea un generator de semnal DTMF, în care prin introducerea de noi elemente și implementarea de noi conexiuni crește rezultatul tehnic asociat cu o scădere a numărul de elemente de circuit redundante și, prin urmare, crește eficiența economică Problema este rezolvată de faptul că în metoda cunoscută de generare a semnalelor DTMF, inclusiv selectarea primului și celui de-al doilea cod al unghiurilor de eșantionare corespunzătoare primei și celei de-a doua frecvențe a componentelor semnalului DTMF, suma totală a primei și a al doilea cod separă unghiurile de eșantionare, respectiv fixate periodic, cu o perioadă corespunzătoare frecvenței ceasului de eșantionare, primul și al doilea rezultat al însumării acumulative, obținând prima și a doua valoare discretă a componentelor semnalului DTMF stocate în celulele aflate la adresa tabelele corespunzătoare ale valorilor discrete ale componentelor semnalului DTMF prin citirea din tabelele corespunzătoare a adreselor corespunzătoare rezultatelor sumării cumulative a codurilor unghiului de eșantionare, însumarea primei și celei de-a doua valori discrete a DTMF componente de semnal pentru a obține a treia valoare discretă Valoarea corespunzătoare valorii semnalului DTMF, nou este că primirea primei și celei de-a doua valori discrete a componentelor semnalului DTMF stocate în celulele aflate în adresă ale tabelelor corespunzătoare ale valorilor discrete ale componentelor semnalului DTMF este efectuată prin citirea din tabelele corespunzătoare la adresele corespunzătoare rezultatelor sumării cumulative, respectiv, a primei și a doua secvențe de numere întregi, a căror valoare medie corespunde codurilor unghiurilor de eșantionare corespunzătoare componentelor Semnal DTMF. În plus, valoarea medie a secvenței de numere întregi care formează rezultatul adunării cumulative poate fi media aritmetică a acestor numere. În plus, înregistrarea periodică a primului și celui de-al doilea rezultat al adunării cumulative poate fi cu o perioadă corespunzătoare frecvența ceasului de eșantionare, diferită pentru diferite semnale DTMF. este rezolvată și de faptul că în generatorul de semnal DTMF cunoscut, inclusiv primul acumulator, primul registru de blocare, prima memorie, al doilea acumulator, al doilea registru de blocare, al doilea memorie, sumatorul final, convertorul digital-analog și ieșirea primului acumulator este conectată la intrarea primului registru de blocare, ieșirea primului registru de blocare este conectată la intrarea primului dispozitiv de memorie, ca precum și la una dintre intrările primului acumulator, ieșirea primului dispozitiv de memorie este conectată la una dintre intrări în sumatorul final, ieșirea celui de-al doilea acumulator este conectată la intrarea celui de-al doilea registru de blocare, ieșirea celui de-al doilea registru de blocare este conectată la intrarea celui de-al doilea dispozitiv de memorie, precum și la una dintre intrările al doilea acumulator, ieșirea celui de-al doilea dispozitiv de memorie este conectat la o altă intrare a sumatorului final, ieșirea sumatorului final este conectată la intrarea unui convertor digital-analog, a cărui ieșire este ieșirea DTMF generator de semnal, nou conform invenției este că generatorul de semnal DTMF conține suplimentar un convertor de semnale DTMF într-o secvență de numere întregi, un divizor al frecvenței master a generatorului de semnal DTMF cu un factor de diviziune reglabil, un convertor de cod semnale DTMF în codul factorului de divizare și prima ieșire a convertorului de semnale DTMF într-o secvență de numere întregi este conectată la o altă intrare a primului acumulator, a doua ieșire a convertorului de semnale DTMF secvența de numere întregi este conectată la o altă intrare a celui de-al doilea acumulator, ieșirea divizorului de frecvență master al generatorului de semnal DTMF cu un raport de diviziune reglabil este conectată la intrarea de ceas a convertorului de semnale DTMF în secvența numerelor întregi, de asemenea în ceea ce privește intrarea de ceas a primului registru de reținere și intrarea de ceas a celui de-al doilea registru de reținere, ieșirea convertorului de coduri de semnale DTMF în codul factorului de diviziune este conectată la intrarea pentru setarea factorului de divizare a divizorului de frecvență master al generatorul de semnal DTMF, intrarea divizorului de frecvență master al generatorului de semnal DTMF cu un raport de diviziune reglabil este intrarea frecvenței master a generatorului de semnal DTMF, intrarea convertorului de cod de semnal DTMF la codul factorului de divizare conectat la intrarea convertorului de semnale DTMF într-o succesiune de numere întregi și este intrarea generatorului de semnale DTMF. În plus, convertorul de semnale DTMF într-o secvență de numere întregi poate fi realizat sub forma unei memorii programabile controlate, a cărei memorie constă din, corespunzătoare numărului de semnale DTMF, zone de memorie constând din celule de memorie corespunzătoare lungimii secvenței de numere întregi, realizată în așa fel încât într-o jumătate a celulei de memorie stochează un număr referitor la prima secvență de numere întregi, iar cealaltă jumătate a celulei de memorie stochează un număr corespunzător celeilalte secvențe de numere întregi, care sunt sumele acumulatorilor corespunzători, iar controlul memoriei programabile este realizat cu posibilitatea de a selecta zone separate de control ale memoriei și o celulă de memorie separată. Noi caracteristici ale metodei de generare a semnalelor DTMF și a unui generator de semnal DTMF în combinație cu caracteristicile acestor obiecte oferă noi proprietăți tehnice ale obiectelor și, ca o consecință a acestor proprietăți, oferă se produce un nou rezultat tehnic necesar. Relația de cauzalitate dintre setul de caracteristici ale metodei propuse și rezultatul tehnic obținut este explicată după cum urmează. Pentru a dezvălui esența soluției tehnice propuse, următoarele calcule vor fi convenabile: y (P ) = sin (n) (1.2), unde y (P) este valoarea discretă a funcției sinusoidale; = wT = 27F / Fr (1.3) este unghiul de eșantionare, măsurat în radiani; n este numărul ordinal al eșantionului - eșantionul; F t = F OSC / kd este frecvența ceasului de eșantionare, unde F OSC este dispozitivul de frecvență de conducere; kd - raport de diviziune reglabil. Apoi = 2FK D / F OSC. (1.4) După cum se știe, funcția sinusoidală este periodică cu o perioadă de 2. Pentru a converti unghiul de eșantionare din radiani în unități relative și pentru a obține codul unghiului de eșantionare, împărțim întreaga perioadă în m părți, unde m este binar întreg. Astfel, obținem o parte minimă discretă a perioadei: = 2 / m. (1.5) Codul unghiului de eșantionare este valoarea relativă a unghiului de eșantionare în conformitate cu o parte a perioadei, și anume, K = / = 2F / F t: 2P / m = Fm / F t. (1.6) De exemplu, pentru frecvențele generate 1477 Hz și 697 Hz (corespunde codului DTMF al semnalului „3”), la m = 64 și frecvența ceasului F t = 32768 Hz K 697 = 1,36; K l477 = 2,88. Evident, pentru afișarea binară a codului unghiului de eșantionare K 697 = 1,36 v, respectiv 136 necesită 8 biți (1281 + 640 + 320 + 160 + 81 + 40 + 20 + 10), iar K 1477 = 2,88 v respectiv 288 necesită 9 biți (2561 + 1280 + 640 + 321 + 160 + 80 + 40 + 20 + 10). În acest caz, pentru sumarea cumulativă, respectiv, în reprezentarea binară, sunt necesari 12 biți, care au determinat dezavantajele descrise mai sus ale soluției cunoscute . Soluția tehnică propusă definește, de exemplu, numărul 1.36 ca valoare medie a unei secvențe de numere întregi 1 și 2, și anume 1.36 = (1x + 2y) / (x + y), unde x și y sunt numărul de numere 1 și respectiv 2, repetate periodic cu o perioadă (x + y). Valoarea codului unghiului de eșantionare constă dintr-o parte întreagă Ts și o parte fracționată, adică de exemplu 1,36 = 1 + 0,36. Precizia relativă a unei astfel de înlocuiri în conformitate cu expresia (1.7) = K / C (1.7) crește odată cu creșterea părții întregi a valorii codului unghiului de eșantionare. De exemplu, pentru frecvența generată 697 Hz, m = 64 și frecvența ceasului F t = 32768 Hz, eroarea de a înlocui K 697 = 1,36 cu valorile numerelor 1 și respectiv 2, 36 și 32%. În același timp, dacă creșteți valoarea m = 256, atunci eroarea de a înlocui K 697 = 5,45 cu valorile numerelor 5 și 6 scade cu 9 și respectiv 10%. În acest caz, eroarea de frecvența generată, de exemplu, la înlocuirea lui K 697 = 5,45 cu valorile numerelor 5 și 6 cu o perioadă de repetare, egală cu 16, 5,45 = (5x + 6y) / (x + y), unde (x + y) = 16. Rezolvând ecuația, obținem x = 9, y = 7, adică din șaisprezece operații de însumare cumulative, sumandul 5 este însumat de nouă ori și sumatul 6 este însumat de șapte ori, în timp ce K 697 = 5.4375, înlocuind această valoare în expresia (1.6) cu m = 256, F t = 32768 Hz, determinăm valoarea reală calculată a frecvenței generate F = 696 Hz, în timp ce eroarea a rămas 0,1%. Astfel, însumarea cumulativă a unei secvențe de numere întregi, a cărei valoare medie corespunde unghiurilor de eșantionare corespunzătoare, face posibilă obținerea unor indicatori economici prin reducerea adâncimii de biți a operațiilor de însumare cumulată datorită capacității de a varia componentele expresiilor de mai sus și, în consecință, o scădere a capacității de biți a dispozitivelor care implementează metoda propusă, ceea ce duce la o scădere a costurilor hardware și energetice la implementarea metodei și pentru a asigura performanțe tehnologice ridicate ale metodei propuse atunci când este utilizată în dispozitive multifuncționale Relația de cauzalitate dintre setul de caracteristici ale soluției tehnice propuse și rezultatul tehnic obținut este explicată după cum urmează: Rezultatul tehnic ridicat al generatorului de semnal DTMF este asigurat de introducerea de noi elemente ale convertorului de cod de semnal DTMF într-o secvență de numere întregi, divizorul frecvenței de setare a generatorului de semnal DTMF cu factor de divizare reglabil, un convertor de coduri de semnale DTMF într-un cod de factor divizor, care asigură implementarea metodei prin elemente de circuit cu aceeași adâncime de biți care nu depășește 8 biți, în timp ce nu există redundanță de elemente necesare pentru rezolvarea mai multor probleme, de exemplu, și pentru rezolvarea rezultatului sumării cumulative, și același număr de biți sunt utilizați pentru a adresa dispozitivul de stocare corespunzător, implementat de cel mult un registru de 8 biți, care poate fi realizat prin mijloace accesibile publicului sub forma unui microcircuit sau, într-un design de microprocesor, a unei celule de memorie. În plus, implementarea sumatoarelor de stocare poate fi realizată sub formă de dispozitive identice, cu aceeași capacitate de biți, sub formă de microcircuite adder disponibile public cu termeni pe 4 biți. că numerele și, în consecință, dispozitivele care formează secvențele de numere întregi descrise mai sus, a căror combinație determină codurile corespunzătoare ale unghiurilor de eșantionare, pot avea o adâncime de biți diferită, dar cea mai optimă , din punctul de vedere al îndeplinirii obiectivelor stabilite de soluția revendicată, sunt numere pe 4 biți. Rezultatul tehnic este asigurat și atunci când soluția tehnică propusă este implementată ca parte a microcontrolerelor, unde sistemul de comandă al microcontrolerelor include în mod necesar comenzi care funcționează cu numere pe 4 biți - nibble. Astfel, soluția tehnică propusă a generatorului de semnal DTMF face posibilă furnizarea un rezultat tehnic ridicat asociat cu o scădere a numărului de elemente ale circuitului și oferă, de asemenea, versatilitate în implementarea generatorului de semnal DTMF atât de hardware disponibil public, cât și ca parte a microcontrolerelor multifuncționale, care determină eficiența economică ridicată a soluției tehnice. descrie un generator de semnal DTMF care implementează o metodă de generare a semnalelor DTMF. Generatorul de semnal DTMF include un convertor 1 de semnale DTMF într-o succesiune de numere întregi, un divizor 2 al frecvenței master a unui generator de semnal DTMF cu un factor de divizare reglabil, un convertorul 3 al semnalelor DTMF semnalizează coduri într-un factor de divizare a codului, primul acumulator 4, primul registru de blocare 5, primul dispozitiv de memorie 6, al doilea dispozitiv de memorie 7, al doilea registru de blocare 8, al doilea sumator de acumulator, sumatorul final 10 , convertorul digital-analog 11. Funcționarea generatorului de semnal DTMF este ilustrată printr-un exemplu de implementare a metodei de generare a semnalelor DTMF. Pe baza expresiilor (1.4, 1.6) și a datelor tehnice, în special a frecvenței master a dispozitivului în care va fi implementată metoda propusă , se calculează secvențe de numere întregi care determină codurile corespunzătoare ale unghiurilor de eșantionare și codurile factorului de divizare pentru divizorul 2 al frecvenței master a generatorului de semnal DTMF cu un factor de divizare reglabil, care sunt scrise în celulele de memorie corespunzătoare ale convertorului 1 a semnalelor DTMF într-o succesiune de numere întregi și convertorul 3 al codurilor de semnal DTMF în coduri de factor de divizare, de asemenea, calculați în prealabil valorile discrete ale sinusurilor funcțiilor corespunzătoare, al căror număr este determinat de numărul de eșantioane m și sunt scrise în dispozitivele de memorie corespunzătoare 6 și 7, la generarea unui semnal DTMF, la intrările convertorului 1 și convertizorului 3, care sunt intrări de generator, pentru o perioadă de timp al semnalului DTMF, se va seta codul semnalului DTMF generat, la ieșirea convertorului 3 se va seta un cod care determină factorul de divizare pentru divizorul 2, în timp ce la ieșirea divizorului 2 se va seta frecvența de ceas de eșantionare periodic, cu o perioadă corespunzătoare frecvenței ceasului de eșantionare, de la prima ieșire a convertorului 1 va fi introdusă intrarea primului acumulator 4 numere binare incluse în prima secvență de numere întregi, iar din a doua ieșire a convertorului 1 va introduceți intrarea celui de-al doilea acumulator 9 numere binare incluse în a doua secvență de numere întregi corespunzătoare componentelor semnalului DTMF, rezultatele însumării acumulative sunt furnizate de la ieșirile sumatorilor acumulatori la intrările registrelor de blocare corespunzătoare 5 și 8, din ieșirile registrelor de blocare 5 și 8, rezultatele sumării cumulative, cu o perioadă corespunzătoare frecvenței ceasului de eșantionare, sunt alimentate către alte intrări ale acumulatorilor corespunzători addere digitale 4 și 9, precum și la intrările dispozitivelor de memorie corespunzătoare 6 și 7, setând adresele valorilor discrete ale sinusurilor componentelor corespunzătoare ale semnalului DTMF, de la ieșirile dispozitivelor de memorie 6 și 7, valorile discrete ale componentelor corespunzătoare ale semnalului DTMF sunt alimentate la intrările corespunzătoare ale sumatorului total 10, la ieșirea cărora se formează un semnal DTMF binar discret, care este alimentat la intrarea digitală -convertitor analog 11, la ieșirea căruia se formează un semnal DTMF sinusoidal în etapă, corespunzător codului de intrare al semnalului DTMF. Convertorul 1 de coduri de semnale DTMF într-o secvență de numere întregi (Fig. 1) poate fi realizat în forma prezentată în Fig. 2, unde convertorul de coduri de semnale DTMF într-o secvență de numere întregi include un dispozitiv de control 12, un memorie programabilă 13. Funcționarea generatorului de semnal DTMF este ilustrată mai departe exemplu specific implementarea metodei propuse într-un apelator de ton-frecvență telefonic. Preliminar, pe baza expresiilor (1.4, 1.6) și a datelor tehnice, se calculează secvențe de numere întregi care determină codurile corespunzătoare ale unghiurilor de eșantionare și codurile factorilor de divizare pentru divizorul 2 din frecvența principală a generatorului de semnal DTMF cu un factor de diviziune reglabil. Având în vedere că implementarea metodei include același tip de calcule, apoi pentru a ilustra lucrările într-un exemplu specific, implementarea metodei de generare a unui semnal DTMF corespunzător apăsării tastei „7” ca parte a dialerului ton-impuls este dată. Frecvența de setare a generatorului este setată frecvența cuarțului, cel mai frecvent în tehnologia telefonică, și anume F OSC = 3579545 Hz. Apăsarea tastei „7” corespunde unui semnal DTMF cu frecvența superioară (coloane) de 1209 Hz și frecvența inferioară (linii) de 852 Hz. Deoarece semnalul DTMF transmite simultan două frecvențe, coeficienții de divizare sunt calculați pentru o frecvență superioară - superioară, astfel încât codul unghiului de eșantionare corespunzător în conformitate cu expresia (1.6) să fie aproape de valoarea maximă - 16, care este implementată în cel mult Date pe 4 biți. Astfel, la F OSC = 3579545 Hz, numărul de valori discrete ale sinusurilor m = 128, valorile calculate ale factorului de diviziune pentru divizorul 2 al frecvenței master a generatorului de semnal DTMF cu un factor de diviziune ajustabil KD = 240 = 460, în timp ce codurile corespunzătoare ale unghiurilor de eșantionare pentru frecvența superioară sunt K 1209/852 = 10,376, pentru frecvența inferioară K 852/1209 = 7,312 Conform invenției, codurile unghiului de eșantionare sunt înlocuite cu o succesiune de numere întregi, respectiv 10/11 și 7 / 8.10.375 = (10x + 11y) / (x + y), în timp ce de fapt K 1209/852 = 10.3757.312 = (7x + 8y) / (x + y), în timp ce de fapt K 952/1209 = 7.313, cu (x + y) = 16. Astfel, 10.375 se înlocuiește periodic cu o succesiune repetată de numere întregi de 10 de 10 ori și de 11 ori, iar 7.312 se înlocuiește ca 7 de 11 ori și 8 de 5 ori. zona de memorie pentru codul DTMF al semnalului „7” în binar este după cum urmează:
Astfel, se calculează șaisprezece tabele corespunzătoare codurilor de semnal DTMF, și anume 0, 1, 2 ... 9, *, #, A, B, C, D și preînregistrate în memoria memoriei programabile 13 (convertor a codului de caractere DTMF în Când apăsați o tastă, de exemplu, „7” la intrarea generatorului, pe durata semnalului DTMF, codul binar al semnalului DTMF „7” (0111) este setat, convertorul 3 al codului de semnal DTMF în factorul de diviziune convertește codul de semnal DTMF în diviziunea codului de coeficient kd pentru divizorul 2 al frecvenței master a generatorului cu un factor de diviziune reglabil, ieșirea divizorului 2 va seta ceasul de eșantionare F t = F OSC / KD. Codul DTMF al semnalului ajunge, de asemenea, la intrările de adresă ale biților superiori ai memoriei programabile 13 (convertor de coduri de semnale DTMF într-o succesiune de numere întregi) și este prezent acolo pe durata semnalului DTMF. Dispozitivul controlat 12, realizat, de exemplu, sub forma unui contor (convertor de semnale DTMF într-o succesiune de numere întregi), sub influența semnalelor de ceas cu o frecvență de t, își modifică ciclic valoarea la ieșirile paralele secvențial din 0000 la 1111, modificând corespunzător valorile intrărilor de adresă ale celor mai puțin semnificativi biți ai dispozitivului de memorie programabil 13 (convertor de semnale DTMF într-o succesiune de numere întregi), numerele de 8 biți (octeți) apar la ieșirea unui dispozitiv de memorie programabil 13 cu o frecvență de ceas de eșantionare, în timp ce în conformitate cu Tabelul 1, cei mai semnificativi patru biți (nibble mare) formează o succesiune de numere întregi, a căror colecție, și anume, media aritmetică, determină codul unghiului de eșantionare corespunzând frecvenței superioare (coloanelor) și celor patru biți inferiori (piciorul inferior) formează o succesiune de numere întregi, a căror colecție, și anume media aritmetică, determină codul unghiul de eșantionare corespunzător frecvenței (liniei) inferioare, date de patru biți, în conformitate cu tabelul 1, de la ieșirea memoriei programabile 13 (convertorul de semnale DTMF într-o secvență de numere întregi) sunt alimentate separat la intrările acumulatorii corespunzători 4 și 9, la ieșirile sumatorilor corespunzători 4 și 9, datele se modifică cu o rată de ceas de eșantionare de la 0 la m (în acest caz, m = 128), determinând și fixând prin intermediul blocării registrelor 5 și 8 adrese pentru dispozitivele de memorie 6 și 7, în care valorile discrete binare ale componentelor sinusoidale corespunzătoare ale DTMF sunt respectiv semnal scris, de la ieșirile dispozitivelor de stocare 6 și 7 valori discrete binare ale componentelor sinusoidale corespunzătoare ale Semnalul DTMF este alimentat la intrările corespunzătoare ale sumatorului final 10, la ieșirea cărora se formează valori discrete binare ale semnalului DTMF, care sunt apoi alimentate la intrarea convertorului digital-analog 11, la a cărui ieșire este un semnal DTMF sinusoidal în trepte. Generatorul de semnal DTMF poate fi implementat pe baza unor informații bine cunoscute mijloace tehnice, descris, de exemplu, în: Utilizarea circuitelor integrate în calculul electronic. Manual / Ed. B.N. Fayzulaeva, B.V. Tarabrina. - M.: Radio și comunicații, 1986. În acest caz, convertorul de 3 coduri de semnale DTMF în coduri de factori de diviziune poate fi realizat, de exemplu, sub forma unui cip de memorie de numai citire 155PE 3 (p. 343) , implementarea registrelor este descrisă la p. 108, implementarea acumulatorilor este descrisă la p. 114. Metoda inventivă și generatorul de semnal DTMF sunt, de asemenea, implementate pe baza mijloacelor tehnice ale Microchip Inc. (Microcontrolere cu 8 biți cu un singur cip, cum ar fi pic16f628), ca parte a apelatorului telefonic cu tonuri de impulsuri "Kadran - NKT - 01" fabricat de compania "Kadran" (Ucraina, Zaporojie). Sistem de comandă și organizare internă nodurile microcontrolerului sunt descrise în: Prokopenko B.Ya. Microcontrolere cu un singur cip. Dodeka, 2000, ISBN8-87835-056-4. Descrierea parametrilor semnalului DTMF este dată, de exemplu, în: Circuite integrate: Microcircuite pentru telefonie. Numărul 1. - M.: Dodeka, 1994, 256 p. - ISBN-5-87835-003-3., P. 12, 13.

REVENDICARE

1. O metodă pentru generarea semnalelor de frecvență în două tonuri (DTMF), inclusiv selectarea primului și celui de-al doilea cod de unghi de eșantionare corespunzător primei și celei de-a doua frecvențe a componentelor semnalului DTMF, însumarea cumulativă separat a primului și celui de-al doilea cod de unghi de eșantionare, respectiv perioadă fixă ​​periodic corespunzătoare frecvenței ceasului de eșantionare, primul și al doilea rezultat al însumării cumulative, obținând prima și a doua valoare discretă a componentelor semnalului DTMF stocate în celulele aflate la adresa tabelelor corespunzătoare de valori discrete componentelor semnalului DTMF prin citirea din tabelele corespunzătoare la adresele corespunzătoare rezultatelor sumării cumulative a codurilor unghiului de eșantionare, însumând prima și a doua valoare discretă a componentelor semnalului DTMF pentru a obține a treia valoare discretă corespunzătoare valoarea semnalului DTMF, caracterizată prin aceea că primirea primei și celei de-a doua valori discrete este semnalul lor DTMF, stocat în celulele aflate la adresa tabelelor corespunzătoare de valori discrete ale componentelor semnalului DTMF, se efectuează prin citirea din tabelele corespunzătoare la adresele corespunzătoare rezultatelor sumării cumulative, respectiv, a primului și a doua secvență de numere întregi, a cărei valoare medie corespunde codurilor unghiurilor de eșantionare corespunzătoare componentelor semnalului DTMF .2. 2. Metodă conform revendicării 1, caracterizată prin aceea că valoarea medie a secvenței de numere întregi care formează rezultatul însumării cumulative este media aritmetică a acestor numere. 2. Metodă conform revendicării 1, caracterizată prin aceea că înregistrarea periodică a primului și celui de-al doilea rezultat al adunării acumulative se realizează cu o perioadă corespunzătoare frecvenței ceasului de eșantionare, care este diferită pentru semnalele DTMF diferite. Un generator de semnal DTMF care include un prim sumator de acumulator, un prim registru de blocare, un prim dispozitiv de memorie, un al doilea sumator de acumulator, un al doilea registru de blocare, un al doilea dispozitiv de memorie, un sumator final, un convertor digital-analog și ieșirea a primului sumator acumulator este conectat la intrarea primului registru de blocare, ieșirea primului registru de blocare a registrului este conectat la intrarea primului dispozitiv de stocare, precum și la una dintre intrările primului sumator de stocare, ieșirea primului dispozitiv de stocare este conectată la una dintre intrările sumatorului total, ieșirea celui de-al doilea sumator de stocare este conectată la intrarea celui de-al doilea registru de blocare, ieșirea celui de-al doilea registru de blocare este conectată la intrarea al doilea dispozitiv de stocare, precum și cu una dintre intrările celui de-al doilea sumator de stocare, ieșirea celui de-al doilea dispozitiv de memorie este conectat la o altă intrare a sumatorului total, ieșirea sumatorului total este conectată la intrarea digitalului -convertor analogic pentru a cărui ieșire este ieșirea generatorului de semnal DTMF, caracterizată prin aceea că generatorul de semnal DTMF conține în plus un convertor de semnale DTMF într-o secvență de numere întregi, un divizor al frecvenței master a generatorului de semnal DTMF cu un factor de diviziune reglabil , un convertor de semnale DTMF într-un cod de divizare, primul ieșire a convertorului de semnale DTMF într-o secvență de numere întregi este conectat la o altă intrare a primului acumulator, a doua ieșire a convertorului de coduri de semnale DTMF într-un secvența de numere întregi este conectată la o altă intrare a celui de-al doilea acumulator, ieșirea divizorului de frecvență master al generatorului de semnale DTMF cu raport de diviziune reglabil este conectată la convertorul de intrare de ceas al codurilor de semnale DTMF într-o succesiune de numere întregi, precum și cu intrarea de ceas a primului registru de blocare și intrarea de ceas a celui de-al doilea registru de blocare, ieșirea convertorului de coduri de semnale DTMF în codul de coeficient divizorul de frecvență este conectat la intrare pentru setarea factorului de diviziune al divizorului de frecvență master al generatorului de semnal DTMF; secvența numerelor întregi și este intrarea generatorului de semnal DTMF. 5. Generator de semnale DTMF conform revendicării 4, caracterizat prin aceea că convertorul de coduri de semnale DTMF într-o succesiune de numere întregi se realizează sub forma unei memorii programabile controlate, a cărei memorie constă din corespondența cu numărul de DTMF. semnale, zone de memorie formate din celule corespunzătoare lungimii secvenței de memorie întregi, făcute astfel încât o jumătate a celulei de memorie stochează un număr legat de prima secvență de numere întregi, iar cealaltă jumătate a celulei de memorie stochează un număr corespunzător la o altă secvență de numere întregi care sunt sumandele acumulatorilor corespunzători, iar memoria programabilă este controlată cu posibilitatea unui control separat asupra selecției unei zone de memorie și a unei celule de memorie separate.

Apelarea prin ton (semnalizare multi-frecvență dual-ton, DTMF) a fost dezvoltată de Bell Labs în anii 50 ai secolului trecut pentru un revoluționar de la acea vreme telefon cu buton... Pentru prezentarea și transmiterea datelor digitale în modul ton, o pereche de frecvențe (tonuri) ale vorbirii gama de frecvențe... Sistemul definește două grupuri de patru frecvențe, iar informațiile sunt codificate prin transmiterea simultană a două frecvențe - una din fiecare grup. Acest lucru oferă un total de șaisprezece combinații pentru a reprezenta șaisprezece numere diferite, simboluri și litere. Codificarea DTMF este utilizată în prezent într-o mare varietate de aplicații de comunicații și control, după cum se dovedește, de exemplu, în Recomandarea Q.23 a Uniunii Internaționale a Telecomunicațiilor (UIT).

Acest articol descrie un circuit generator de ton DTMF care reproduce toate cele opt frecvențe și produce o ieșire rezultată în două tonuri. Sistemul în cauză a fost construit pe baza cipului Silego GreenPAK ™ SLG46620V și amplificatoare operaționale Silego SLG88104V. Semnalul de ieșire este suma celor două frecvențe definite de rândul și coloana tastaturii telefonului.

Circuitul propus folosește patru intrări pentru a selecta combinația de frecvență generată. Circuitul are, de asemenea, o intrare de activare care declanșează oscilația și determină durata de transmitere a semnalului. Frecvența de ieșire a generatorului îndeplinește cerințele standardului ITU pentru DTMF.

Tonuri DTMF

Standardul DTMF definește codificarea cifrelor 0-9, literele A, B, C și D și simbolurile * și # ca o combinație de două frecvențe. Aceste frecvențe sunt împărțite în două grupuri: un grup de frecvență înaltă și un grup de frecvență joasă. Tabelul 1 prezintă frecvențele, grupurile și reprezentările simbolurilor corespunzătoare.

Tabelul 1. Codificare ton DTMF

Grup de înalte

Grup de bas

Frecvențele au fost alese pentru a evita armonicele multiple. Mai mult, suma sau diferența lor nu oferă o altă frecvență DTMF. În acest fel, sunt evitate armonicele sau distorsiunea modulației.

Standardul Q.23 specifică faptul că eroarea fiecărei frecvențe transmise ar trebui să se încadreze în ± 1,8% din valoarea nominală, iar distorsiunea totală (datorată armonicilor sau modulației) ar trebui să fie cu 20 dB sub frecvențele fundamentale.

Semnalul rezultat descris mai sus poate fi descris ca:

s (t) = Acos (2πfhight) + Acos (2πflowt),

unde fhigh și flow sunt frecvențele corespunzătoare din grupurile de frecvență înaltă și joasă.

Figura 1 arată semnalul rezultat pentru cifra „1”. Figura 2 prezintă spectrul de frecvență pentru un semnal dat.

Orez. 1. Tonul DTMF

Orez. 2. Spectrul tonului DTMF

Durata tonurilor DTMF poate varia în funcție de aplicația specifică care utilizează codificarea tonurilor. Pentru cele mai frecvente aplicații, valorile duratei tind să se situeze între manual și automat. Tabelul 2 prezintă scurta descriere durata tipică de timp pentru două tipuri de apelare.

Masa 2. Durata semnalelor cu apelare prin ton

Setați tipul

Grup de înalte

Grup de înalte

Set de mână

Apelare automată

Pentru mai multă flexibilitate, generatorul DTMF oferit în acest manual este echipat cu o intrare de activare, care este utilizată pentru a începe generarea semnalului și a determina durata acestuia. În acest caz, durata semnalului este egală cu durata impulsului la intrarea de activare.

Partea analogică a circuitului generatorului DTMF

Recomandarea UIT Q.23 definește semnalele DTMF ca semnale analogice create de două unde sinusoidale. În circuitul generator DTMF propus, cipul Silego GreenPAK SLG46620V generează semnale de undă pătrată cu frecvențele DTMF dorite. Sunt necesare filtre analogice și un sumator pentru a obține semnale sinusoidale cu frecvența necesară și pentru a forma semnalul rezultat (suma celor două unde sinusoidale). Din acest motiv, în acest proiect, s-a decis să se utilizeze filtre și un adder bazat pe amplificatoarele operaționale SLG88104V.

Figura 3 prezintă structura părții analogice propuse a dispozitivului.

Orez. 3. Circuit de procesare analogic pentru primirea unui semnal DTMF

Filtrele analogice sunt utilizate pentru a produce semnale sinusoidale din impulsuri dreptunghiulare. După filtrare, cele două semnale sunt însumate și se formează semnalul DTMF în două tonuri de ieșire dorit.

Figura 4 prezintă rezultatul transformatei Fourier utilizate pentru a obține spectrul unui semnal dreptunghiular.

Orez. 4. Spectrul semnalului este dreptunghiular

După cum puteți vedea, unda pătrată conține doar armonici ciudate. Dacă reprezentăm un astfel de semnal cu amplitudine A sub forma unei serii Fourier, atunci acesta va avea următoarea formă:

Analiza acestei expresii ne permite să concluzionăm că, dacă filtrele analogice au atenuare suficientă pentru armonici, atunci este destul de realist să obținem semnale sinusoidale cu o frecvență egală cu frecvența undei pătrate originale.

Luând în considerare toleranța la interferență specificată în standardul Q.23, este necesar să se asigure că toate armonicele sunt atenuate cu 20 dB sau mai mult. În plus, orice frecvență din grupul de frecvență joasă trebuie combinată cu orice frecvență din grupul de frecvență înaltă. Având în vedere aceste cerințe, au fost dezvoltate două filtre, unul pentru fiecare grup.

Filtrele Butterworth trecătoare joase au fost utilizate ca ambele filtre. Atenuarea unui filtru Butterworth de ordinul n poate fi calculată ca:

A (f) [dB] = 10 log (A (f) 2) = 10log (1+ (f / fc) 2n),

unde fc este frecvența de întrerupere a filtrului, n este ordinea filtrului.

Diferența de atenuare între cea mai mică frecvență și cea mai mare frecvență a fiecărui grup nu poate fi mai mare de 3 dB, prin urmare:

A (fHIGHER) [dB] - A (fLOWER) [dB]> 3dB.

Având în vedere valorile absolute:

A (fHIGHER) 2 / A (fLOWER) 2> 2.

În plus, așa cum am spus mai devreme, atenuarea armonică trebuie să fie de 20 dB sau mai mult. În acest caz, cel mai rău caz va fi cea mai mică frecvență din grup, deoarece cea de-a treia armonică a acestuia este cea mai mică frecvență și este cea mai apropiată de frecvența de întrerupere a filtrului. Având în vedere că a treia armonică este de 3 ori mai mică decât cea fundamentală, filtrul trebuie să îndeplinească condiția (valori absolute):

A (3fLOWER) 2 / A (fLOWER) 2> 10/3.

Dacă aceste ecuații se aplică ambelor grupuri, atunci filtrele utilizate trebuie să fie filtre de ordinul doi. Aceasta înseamnă că vor avea două rezistențe și doi condensatori dacă sunt implementați folosind amplificatoare operaționale. Cu filtrele de ordinul trei, sensibilitatea la toleranțele componentelor ar fi mai mică. Frecvențele de întrerupere selectate ale filtrelor sunt 977 Hz pentru grupul trece-jos și 1695 Hz pentru grupul trece-sus. La aceste valori, diferențele în nivelurile semnalului în grupurile de frecvență sunt în concordanță cu cerințele de mai sus, iar sensibilitatea la modificările frecvenței de tăiere datorită toleranțelor componentelor este minimă.

Diagramele schematice ale filtrelor implementate folosind SLG88104V sunt prezentate în Figura 5. Evaluările primelor Perechi R-C selectat în așa fel încât să limiteze curentul de ieșire al microcircuitului SLG46620V. A doua secțiune a filtrului determină câștigul, care este 0,2. Amplitudinea semnalelor cu undă pătrată setează punctul de funcționare al amplificatorului operațional la 2,5 V. Tensiunile nedorite sunt blocate de condensatorii filtrelor de ieșire.

Orez. 5. Diagrame schematice ale filtrelor de ieșire

La ieșire, semnalele filtrelor sunt însumate, iar semnalul rezultat este suma armonicelor selectate din grupul de frecvențe joase și înalte. Pentru a compensa atenuarea filtrului, amplitudinea semnalului de ieșire poate fi reglată folosind două rezistențe R9 și R10. Figura 6 prezintă circuitul sumatorului. Figura 7 prezintă întreaga porțiune analogică a circuitului.

Orez. 6. Diagramă schematică sumator

Orez. 7. Partea analogică a circuitului

Parte digitală a circuitului generatorului de ton DTMF

Porțiunea digitală a circuitului generatorului de ton DTMF include o varietate de generatoare de unde pătrate, câte unul pentru fiecare frecvență DTMF. Deoarece sunt necesare opt contoare pentru a crea aceste generatoare, microcircuitul GreenPAK SLG46620V a fost ales pentru implementarea lor. La ieșiri circuit digital sunt generate două semnale dreptunghiulare, unul pentru fiecare grup de frecvență.

Semnalele de undă pătrată sunt generate de contoare și flip-flopuri D și au un ciclu de funcționare de 50%. Din acest motiv, frecvența de comutare a contoarelor este de două ori mai mare decât frecvența DTMF necesară, iar flip-flop-ul DFF împarte semnalul de ieșire la două.

Sursa de ceas pentru contoare este un generator RC încorporat de 2 MHz, a cărui frecvență este divizibilă suplimentar cu 4 sau 12. Divizorul este selectat luând în considerare lățimea de biți și valoarea maximă a fiecărui contor necesare pentru a obține o frecvență specifică .

Sunt necesare mai puține numărări pentru a genera frecvențe înalte, deci sunt utilizate contoare de 8 biți pentru a le genera, tactate de la un oscilator RC intern, al cărui semnal este împărțit la 4. Din același motiv, frecvențele mai mici sunt implementate folosind contoare de 14 biți .

SLG46620V are doar trei contoare standard de 14 biți, astfel încât una dintre frecvențele inferioare a fost implementată cu un contor CNT8 pe 8 biți. Pentru ca numărul eșantioanelor să se încadreze în intervalul 0 ... 255, pentru a urmări acest CNT8, a trebuit să folosim semnalul generatorului RC împărțit la 12. Pentru acest circuit, frecvența cu cel mai mare număr de eșantioane a fost aleasă, adică cea mai mică frecvență. Acest lucru ne-a permis să reducem la minimum eroarea.

Tabelul 3 prezintă parametrii fiecărei unde pătrate.

Tabelul 3. Parametrii generatoarelor de impulsuri dreptunghiulare

Pontaj

Eroare de frecvență [%]

Grup de bas

Grup de înalte

După cum puteți vedea din tabel, toate frecvențele au o eroare mai mică de 1,8%, deci sunt conforme cu standardul DTMF. Aceste caracteristici calculate, bazate pe frecvența ideală a oscilatorului RC, pot fi ajustate prin măsurarea frecvenței de ieșire a oscilatorului RC.

Deși în schema propusă, toate generatoarele funcționează în paralel, dar semnalul unui singur generator din fiecare grup va merge la ieșirea microcircuitului. Alegerea semnalelor specifice revine utilizatorului. Pentru aceasta, patru intrări GPIO (doi biți pentru fiecare grup) sunt utilizate cu tabelul de adevăr prezentat în Tabelul 4.

Tabelul 4. Tabel de selectare a frecvenței grupului de bas

Grup de bas

Tabelul 5. Tabel de selecție a frecvenței grupului de înalte

Grup de înalte

Figura 8 prezintă diagrama logică a unui generator de unde pătrate de 852 Hz. Acest model se repetă pentru fiecare frecvență cu setările corespunzătoare ale contorului și configurația LUT.

Orez. 8. Generator de impulsuri dreptunghiulare

Contorul generează o frecvență de ieșire determinată de setările sale. Această frecvență este egală cu dublul frecvenței tonului DTMF corespunzător. Parametrii de configurare a contorului sunt prezentați în Figura 9.

Orez. 9. Exemplu de setare a contorului generatorului de impulsuri dreptunghiulare

Ieșirea contorului este conectată la intrarea ceasului declanșatorului D-Flip Flop. Deoarece ieșirea DFF este configurată ca inversată, dacă conectați ieșirea DFF la intrarea sa, D-flip-flop-ul este convertit într-un T-flip-flop. Parametrii de configurare DFF pot fi văzuți în Figura 10.

Orez. 10. Exemplu de setare a declanșatorului unui generator de unde pătrate

Semnalul de la ieșirea DFF merge la intrarea tabelului adevăr LUT. Tabelele de adevăr LUT sunt utilizate pentru a selecta un semnal pentru fiecare combinație specifică R1-R0. Un exemplu de configurație LUT este prezentat în Figura 11. B acest exemplu dacă „1” este furnizat la R1, iar „0” este furnizat la R0, semnalul de intrare este transmis la ieșire. În alte cazuri, ieșirea este „0”.

Orez. 11. Exemplu de setare a tabelului de adevăr al unui generator de unde pătrate

Așa cum s-a menționat mai sus, schema propusă are o intrare Activare. Dacă o unitate logică „1” este prezentă la intrarea Activare, atunci semnalele generate de unde pătrate sunt alimentate către o pereche de ieșiri de microcircuit. Durata transmisiei este egală cu lățimea impulsului la intrarea de activare. Au fost necesare mai multe blocuri de tabele de adevăr LUT pentru a implementa această caracteristică.

Grupul de înalte utilizează un LUT de 4 biți și un LUT de 2 biți, așa cum se arată în Figura 12.

Orez. 12. Circuit de ieșire grup înalte

LUT1 pe 4 biți este configurat ca o poartă SAU, deci generează o valoare logică ridicată „1” dacă un „1” este prezent la oricare dintre intrările sale. Tabelele de adevăr C1 / C0 permit doar selectarea unuia dintre oscilatoare, astfel încât LUT1 pe 4 biți determină ce semnal este emis. Ieșirea acestui LUT se conectează la LUT4 pe 2 biți, care transmite un semnal numai dacă la intrarea de activare este prezent un „1” logic. Figurile 13 și 14 prezintă configurațiile pentru LUT1 pe 4 biți și LUT4 pe 2 biți.

Orez. 13. Configurarea LUT1 pe 4 biți

Orez. Configurare LUT4 de 14,2 biți

Deoarece nu mai existau tabele de adevăr LUT pe 4 biți, au fost utilizate două LUT de 3 biți pentru grupul de frecvență joasă.

Orez. 15. Circuit de ieșire grup de frecvență redusă

Diagrama internă completă a GreenPAK SLG46620V este prezentată în Figura 16. Figura 17 este diagrama schematică finală a generatorului DTMF.

Orez. 16. Schema bloc a generatorului de ton DTMF

Orez. 17. Diagrama schematică a generatorului de ton DTMF

Testarea circuitului generatorului DTMF

La prima etapă de testare a generatorului DTMF propus, s-a decis verificarea frecvențelor tuturor semnalelor generate de unde pătrate folosind un osciloscop. De exemplu, figurile 18 și 19 prezintă ieșiri cu unde pătrate pentru frecvențe de 852 Hz și 1477 Hz.

Orez. 18. Semnal de undă pătrată 852 Hz

Orez. 19. Semnal de undă pătrată 1477 Hz

Odată verificate frecvențele tuturor semnalelor de undă pătrată, a început testarea părții analogice a circuitului. Au fost examinate semnalele de ieșire pentru toate combinațiile din grupul de frecvență joasă și înaltă. De exemplu, Figura 20 prezintă suma semnalelor de 770 Hz și 1209 Hz, iar Figura 21 prezintă suma semnalelor de 941 Hz și 1633 Hz.

Orez. 20. Ton DTMF 770 Hz și 1209 Hz

Orez. 21. Tonul DTMF 941 Hz și 1633 Hz

Concluzie

În acest articol, am propus un circuit generator de ton DTMF bazat pe microcircuitul Silego GreenPAK SLG46620V și amplificatoarele operaționale Silego SLG88104V. Generatorul permite utilizatorului să selecteze combinații ale frecvențelor necesare folosind patru intrări și să controleze intrarea de activare, care determină durata de generare a semnalelor de ieșire.

Caracteristicile cipului SLG46620V:

  • Tip: microcircuit semnal mixt programabil;
  • Blocuri analogice: ADC pe 8 biți, două DAC-uri, șase comparatoare, două filtre, ION, patru oscilatoare integrate;
  • Blocuri digitale: până la 18 porturi I / O, matrice de conectare și logică combinatorie, circuite de întârziere programabile, generator de funcții programabile, șase contoare de 8 biți, trei contoare de 14 biți, trei generatoare / comparatoare PWM;
  • Interfață de comunicare: SPI;
  • Gama de tensiune de alimentare: 1,8 ... 5 V;
  • Interval de temperatură de funcționare: -40 ... 85 ° C;
  • Versiune carcasă: 2 x 3 x 0,55 mm 20-pini STQFN.

Trăsături distinctive:

  • Generarea de semnale sinusoidale utilizând modulația lățimii pulsului (PWM)
  • Combinând diferite semnale sinusoidale într-un singur semnal DTMF
  • Coduri sursăîn limbaj de asamblare și C
  • Proiectat pentru a lucra cu STK500
  • Cod program program dimensiune 260 octeți / dimensiune constantă tabel 128 octeți
  • Folosind metoda de conversie a tabelelor

Introducere

Acest document descrie o metodologie de generare a semnalelor DTMF (Dual Tone Multi-Frequency) utilizând orice microcontroler AVR care conține un bloc PWM (Pulse Width Modulation) și SRAM. Aceste semnale sunt utilizate pe scară largă în telefonie, unde sunt redate când apăsați butoanele de apelare ale setului de telefon. Pentru generarea corectă a semnalului DTMF, două frecvențe trebuie suprapuse împreună: frecventa joasa(fb) și de înaltă frecvență (fa). Tabelul 1 arată cum se amestecă diferite frecvențe pentru a produce tonuri DTMF atunci când sunt apăsate diferite taste.

Figura 1 - Circuitul generatorului de semnal DTMF

Tabelul 1 - Matricea de modelare a tonurilor

fb / fa 1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

Rândurile din Tabelul 1 arată valorile frecvenței joase, iar coloanele arată valorile frecvenței înalte. De exemplu, matricea arată că atunci când apăsați butonul „5”, frecvențele fb = 770 Hz și fa = 1336 Hz trebuie amestecate. Ca urmare a adăugării a două semnale sinusoidale de frecvențe diferite, se formează un semnal DTMF

unde raportul amplitudinii K = A b / A a semnalele originale trebuie să îndeplinească condiția

Principiul de funcționare

Pe lângă Informații generale Utilizarea modulației lățimii impulsurilor va fi arătată mai jos cum modularea lățimii impulsurilor poate genera semnale sinusoidale. Următorul paragraf descrie modul de utilizare frecvența de bază PWM obține frecvențe diferite. După luarea în considerare a fundamentelor teoretice, va fi dată o descriere a generatorului de semnal DTMF în sine. Generarea de semnale sinusoidale

În funcție de raportul dintre durata nivelurilor de tensiune VH ridicat și VL scăzut, valoarea medie la ieșirea PWM se schimbă. Dacă raportul dintre duratele ambelor niveluri este menținut constant, rezultatul va fi un nivel constant de tensiune VAV. Figura 2 prezintă un semnal modulat pe lățimea impulsului.


Figura 2 - Generarea nivelului tensiune constantă

Nivelul de tensiune este determinat de expresia:

(3)

Un semnal sinusoidal poate fi generat cu condiția ca valoarea medie a tensiunii generate de modulația lățimii impulsului să se schimbe la fiecare perioadă PWM. Raportul dintre nivelurile ridicat și cel scăzut trebuie stabilit în funcție de nivelul de tensiune al semnalului sinusoidal la momentul potrivit. Figura 3 ilustrează acest proces. Datele inițiale pentru PWM sunt calculate pentru fiecare dintre perioadele sale și sunt scrise în tabelul de conversie (TP).

Figura 3 ilustrează, de asemenea, relația dintre frecvența undei sinusoidale principale și numărul de probe. Cu cât numărul de probe (Nc) este mai mare, cu atât precizia de simulare a semnalului rezultat este mai mare:

(4)

Frecvența PWM depinde de rezoluția PWM. La rezoluția de 8 biți, valoarea finală (partea de sus a numărului) a temporizatorului este 0xFF (255). pentru că cronometrul numără în sus și în jos, această valoare trebuie dublată. Prin urmare, frecvența PWM poate fi calculată prin împărțirea frecvenței ceasului temporizatorului f CK la 510. Astfel, cu o rată de ceas a temporizatorului de 8 MHz, frecvența PWM rezultată este de 15,6 kHz.


Figura 3 - Generarea unui semnal sinusoidal utilizând PWM

Schimbarea frecvenței unui semnal sinusoidal

Să presupunem că probele sinusoidale sunt citite din tabelul de căutare nu secvențial, ci unul după altul. În acest caz, la aceeași rată de eșantionare, va fi generat un semnal cu o frecvență dublată (vezi Figura 4).


Figura 4 - Dublarea frecvenței rezultate (XSW = 2)

Prin analogie, dacă citiți nu fiecare a doua valoare, ci fiecare a treia, a patra, a cincea (respectiv, lățimea treptelor 3, 4, 5 ...) etc. poate genera frecvențe Nc în interval. Rețineți că pentru frecvențe înalte, forma de undă rezultată nu va fi sinusoidală. Lățimea pasului conform tabelului de conversie este notată ca X SW, Unde

(5)

Calculul poziției curente în TP pentru următoarea perioadă PWM (când temporizatorul se revarsă) se efectuează folosind expresia (6). Nouă valoare în poziție X LUT depinde de starea sa anterioară în poziție X "LUT cu creșterea lățimii treptelor X SW

(6)

Adăugarea de frecvențe diferite pentru a obține un semnal DTMF

Semnalul DTMF poate fi generat folosind expresiile (1) și (2). Pentru simplitatea operațiilor aritmetice, valoarea coeficientului K este luată egală cu 0,75 pentru a înlocui operația aritmetică cu deplasări logice. Luând în considerare expresia (6), valoarea curentă pentru controlul PWM poate fi calculată prin expresia:

și ținând cont de faptul că X LUTa=X "LUTa + X SWa ,X LUTb=X "LUTb + X SWb, în cele din urmă scriem

Implementarea generatorului DTMF

V această anexă Luați în considerare construirea unui generator de ton DTMF utilizând o ieșire PWM pe 8 biți (OC1A) și un tabel cu 128 de eșantioane de valori ale funcției sinusoidale (Nc), fiecare dintre acestea fiind setat cu 7 biți (n). Următoarele expresii arată această relație și arată, de asemenea, cum se calculează elementele tabelului de căutare:

(9)

Avantajul utilizării a 7 biți este că suma valorilor frecvenței înalte și joase este de un octet. Pentru suport set complet Pentru tonurile DTMF, este necesar să calculați 8 valori pentru fiecare frecvență DTMF din Tabelul 1 și să le introduceți în tabelul de conversie.

Pentru a obține o precizie mai mare, se efectuează următoarea soluție: valorile calculate prin expresia 5 necesită doar 5 octeți. Pentru a utiliza toți cei 8 octeți, ceea ce va reduce eroarea de rotunjire, această valoare este înmulțită cu 8. Pointerul către tabelul de conversie este scris în același mod. Dar, în acest caz, este nevoie de doi octeți pentru a stoca valoarea 8x. Aceasta înseamnă că trebuie să efectuați 3 schimbări în partea dreaptă și o operație modulo în baza Nc (înmulțire logică cu Nc-1) înainte de a utiliza acești octeți ca pointer la valorile sinusoidului din


Figura 5 - Diagrama modulului pentru conectarea la STK500

Semnalul PWM este generat la pinul OC1A (PD5). Un filtru de ieșire suplimentar vă va ajuta să se potrivească mai bine cu forma de undă sinusoidală. Pe măsură ce frecvența PWM scade, poate fi necesar să se aplice un filtru cu un răspuns de frecvență mai abrupt pentru a obține un rezultat bun.

Conexiunea de la tastatură este prezentată în Figura 1. Operația de la tastatură trebuie organizată în așa fel încât să fie posibilă determinarea tastei apăsate. Acest lucru se poate face în conformitate cu următorul algoritm:

  1. Determinarea șirului tastei apăsate
    • configurați tetradul junior al portului B la ieșire și setați jurnalul. „0”
    • configurați tetradul superior al portului B la intrare cu conexiunea de rezistențe pull-up
    • linia cu butonul apăsat este definită ca categoria notebook-ului senior cu jurnal. „0”
  2. Definirea coloanei tastei apăsate
    • configurați nibble-ul senior al portului B la ieșire și setați jurnalul. „0”
    • configurați tetrad junior al portului B la intrare cu conexiunea de rezistențe pull-up
    • coloana cu butonul apăsat este definită drept categoria celui mai jos ronțăit cu jurnal. „0”

Notă: În STK200, rezistențele sunt conectate în serie între pinii PORTB și pinii microcontrolerului BP5, PB6 și PB7 (vezi diagrama STK200). Acest lucru va cauza probleme dacă tastatura este conectată la conectorul PORTB.

Figura 6 ilustrează funcționarea subrutinei pentru a determina tasta apăsată. Durata intervalului este determinată în funcție de tasta apăsată. Rutina de întrerupere folosește această valoare pentru a calcula setările PWM pentru cele două tonuri sinusoidale DTM. Procedura de manipulare a întreruperilor este prezentată în Figurile 7 și 8.

Această rutină calculează o valoare pentru a compara cu ieșirea temporizatorului pentru următoarea perioadă PWM. Rutina de întrerupere calculează mai întâi poziția următoarei valori de preluare în tabelul de căutare și citește valoarea stocată acolo.

Poziția eșantionului în tabelul de căutare este determinată de lățimea impulsului, iar lățimea reală a impulsului este determinată de frecvența generată.

Valoarea finală care este scrisă în registrul de comparare a temporizatorului este determinată folosind formula (7), care ia în considerare valorile eșantionului ambelor frecvențe DTMF.


Figura 6 - Schema bloc a programului principal

Trăsături distinctive

  • Generarea de semnale sinusoidale utilizând modulația lățimii pulsului (PWM)
  • Combinând diferite semnale sinusoidale într-un singur semnal DTMF
  • Asamblare și coduri sursă C.
  • Proiectat pentru a lucra cu STK500
  • Cod program program dimensiune 260 octeți / dimensiune constantă tabel 128 octeți
  • Folosind metoda de conversie a tabelelor

Introducere

Acest document descrie o metodologie pentru generarea semnalelor DTMF (Dual Tone Multi-Frequency) utilizând orice microcontroler AVR care conține un bloc PWM (Modularea lățimii pulsului) și SRAM. Aceste semnale sunt utilizate pe scară largă în telefonie, unde sunt redate atunci când apăsați butoanele de apelare ale setului de telefon. Pentru a genera corect semnalul DTMF, două frecvențe trebuie suprapuse împreună: frecvență joasă (fb) și frecvență înaltă (fa). Tabelul 1 arată cum se amestecă diferite frecvențe pentru a produce tonuri DTMF atunci când sunt apăsate diferite taste.


Figura 1. Circuitul generatorului de semnal DTMF

Tabelul 1. Matricea de modelare a tonurilor

fb / fa 1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

Rândurile din Tabelul 1 arată valorile frecvenței joase, iar coloanele arată valorile frecvenței înalte. De exemplu, matricea arată că atunci când apăsați butonul „5”, frecvențele fb = 770 Hz și fa = 1336 Hz trebuie amestecate. Ca urmare a adăugării a două semnale sinusoidale de frecvențe diferite, se formează un semnal DTMF

unde raportul amplitudinilor K = A b / A a semnalelor originale trebuie să îndeplinească condiția

Principiul de funcționare

În plus față de informațiile generale despre utilizarea modulației lățimii impulsurilor, se va arăta mai jos modul în care modulația lățimii impulsurilor poate genera semnale sinusoidale. Următorul paragraf descrie cum să obțineți diferite frecvențe utilizând frecvența de bază PWM. După luarea în considerare a fundamentelor teoretice, va fi dată o descriere a generatorului de semnal DTMF în sine. Generarea de semnale sinusoidale

În funcție de raportul dintre durata nivelurilor de tensiune VH ridicat și VL scăzut, valoarea medie la ieșirea PWM se schimbă. Dacă raportul dintre duratele ambelor niveluri este menținut constant, rezultatul va fi un nivel constant de tensiune VAV. Figura 2 prezintă un semnal modulat pe lățimea impulsului.


Figura 2. Generarea nivelului constant de tensiune

Nivelul de tensiune este determinat de expresia:

(3)

Un semnal sinusoidal poate fi generat cu condiția ca valoarea medie a tensiunii generate de modulația lățimii impulsului să se schimbe la fiecare perioadă PWM. Raportul dintre nivelurile ridicat și cel scăzut trebuie stabilit în funcție de nivelul de tensiune al semnalului sinusoidal la momentul potrivit. Figura 3 ilustrează acest proces. Datele inițiale pentru PWM sunt calculate pentru fiecare dintre perioadele sale și sunt scrise în tabelul de conversie (TP).

Figura 3 ilustrează, de asemenea, relația dintre frecvența undei sinusoidale principale și numărul de probe. Cu cât numărul de probe (Nc) este mai mare, cu atât precizia de simulare a semnalului rezultat este mai mare:

(4)

Frecvența PWM depinde de rezoluția PWM. La rezoluția de 8 biți, valoarea finală (partea de sus a numărului) a temporizatorului este 0xFF (255). pentru că cronometrul numără în sus și în jos, această valoare trebuie dublată. Prin urmare, frecvența PWM poate fi calculată prin împărțirea frecvenței ceasului temporizatorului f CK la 510. Astfel, cu o rată a ceasului temporizator de 8 MHz, frecvența PWM rezultată este de 15,6 kHz.


Figura 3. Generarea unui semnal sinusoidal utilizând PWM

Schimbarea frecvenței unui semnal sinusoidal

Să presupunem că probele sinusoidale sunt citite din tabelul de căutare nu secvențial, ci unul după altul. În acest caz, la aceeași rată de eșantionare, va fi generat un semnal cu o frecvență dublată (vezi Figura 4).


Figura 4. Dublarea frecvenței rezultate (XSW = 2)

Prin analogie, dacă citiți nu fiecare a doua valoare, ci fiecare a treia, a patra, a cincea (respectiv, lățimea treptelor 3, 4, 5 ...) etc. poate genera frecvențe Nc în interval. Rețineți că pentru frecvențe înalte, forma de undă rezultată nu va fi sinusoidală. Lățimea pasului în conformitate cu tabelul de conversie este notată ca X SW, unde

(5)

Calculul poziției curente în TP pentru următoarea perioadă PWM (când temporizatorul se revarsă) se efectuează folosind expresia (6). Noua valoare la poziția X LUT depinde de starea sa anterioară la poziția X "LUT cu adăugarea lățimii treptei X SW

(6)

Adăugarea de frecvențe diferite pentru a obține un semnal DTMF

Semnalul DTMF poate fi generat folosind expresiile (1) și (2). Pentru simplitatea operațiilor aritmetice, valoarea coeficientului K este luată egală cu 0,75 pentru a înlocui operația aritmetică cu deplasări logice. Luând în considerare expresia (6), valoarea curentă pentru controlul PWM poate fi calculată prin expresia:

și ținând cont de faptul că X LUTa = X "LUTa + X SWa, X LUTb = X" LUTb + X SWb, în ​​sfârșit scriem

Implementarea generatorului DTMF

Această anexă arată cum să construiți un generator de ton DTMF utilizând o ieșire PWM pe 8 biți (OC1A) și o tabelă de eșantionare cu funcție sinusoidală (Nc) de 128 de eșantioane, fiecare specificat de 7 biți (n). Următoarele expresii arată această relație și arată, de asemenea, cum se calculează elementele tabelului de căutare:

(9)

Avantajul utilizării a 7 biți este că suma valorilor frecvenței înalte și joase este de un octet. Pentru a suporta un set complet de tonuri DTMF, este necesar să calculați 8 valori pentru fiecare frecvență DTMF din Tabelul 1 și să le introduceți în tabelul de conversie.

Pentru a obține o precizie mai mare, se efectuează următoarea soluție: valorile calculate prin expresia 5 necesită doar 5 octeți. Pentru a utiliza toți cei 8 octeți, ceea ce va reduce eroarea de rotunjire, această valoare este înmulțită cu 8. Pointerul către tabelul de conversie este scris în același mod. Dar, în acest caz, este nevoie de doi octeți pentru a stoca valoarea 8x. Aceasta înseamnă că trebuie să efectuați 3 schimbări în partea dreaptă și o operație modulo în baza Nc (înmulțire logică cu Nc-1) înainte de a utiliza acești octeți ca pointer la valorile sinusoidale din


Figura 5. Diagrama modulului pentru conectarea la STK500

Semnalul PWM este generat la pinul OC1A (PD5). Un filtru de ieșire suplimentar vă va ajuta să se potrivească mai bine cu forma de undă sinusoidală. Pe măsură ce frecvența PWM scade, poate fi necesar să se aplice un filtru cu un răspuns de frecvență mai abrupt pentru a obține un rezultat bun.

Conexiunea de la tastatură este prezentată în Figura 1. Operația de la tastatură trebuie organizată în așa fel încât să fie posibilă determinarea tastei apăsate. Acest lucru se poate face în conformitate cu următorul algoritm:

  1. Determinarea șirului tastei apăsate
    • configurați tetradul junior al portului B la ieșire și setați jurnalul. „0”
    • configurați tetradul superior al portului B la intrare cu conexiunea de rezistențe pull-up
    • linia cu butonul apăsat este definită ca categoria notebook-ului senior cu jurnal. „0”
  2. Definirea coloanei tastei apăsate
    • configurați nibble-ul senior al portului B la ieșire și setați jurnalul. „0”
    • configurați tetrad junior al portului B la intrare cu conexiunea de rezistențe pull-up
    • coloana cu butonul apăsat este definită ca categoria celei mai mici note cu un jurnal. „0”

Notă: În STK200, rezistențele sunt conectate în serie între pinii PORTB și pinii microcontrolerului BP5, PB6 și PB7 (vezi diagrama STK200). Acest lucru va cauza probleme dacă tastatura este conectată la conectorul PORTB.

Figura 6 ilustrează funcționarea subrutinei pentru a determina tasta apăsată. Durata intervalului este determinată în funcție de tasta apăsată. Rutina de întrerupere folosește această valoare pentru a calcula setările PWM pentru cele două tonuri sinusoidale DTM. Procedura de manipulare a întreruperilor este prezentată în Figurile 7 și 8.

Această rutină calculează o valoare pentru a compara cu ieșirea temporizatorului pentru următoarea perioadă PWM. Rutina de întrerupere calculează mai întâi poziția următoarei valori de preluare în tabelul de căutare și citește valoarea stocată acolo.

Poziția eșantionului în tabelul de căutare este determinată de lățimea impulsului, iar lățimea reală a impulsului este determinată de frecvența generată.

Valoarea finală care este scrisă în registrul de comparare a temporizatorului este determinată folosind formula (7), care ia în considerare valorile eșantionului ambelor frecvențe DTMF.


Figura 6. Schema bloc a programului principal


Figura 7. Schema bloc a rutinei de manipulare a întreruperilor de revărsare a temporizatorului


Figura 8. Diagrama bloc a procedurii de citire a eșantionului "GetSample"

Publicație: www.cxem.net

Vezi alte articole secțiune.



Ti-a placut articolul? Împărtășește-l