Documente Academic
Documente Profesional
Documente Cultură
Operare cu semnale în impulsuri
; sau .
La un astfel de semnal electrice putem măsura:
Fig. 3
Măsurarea semnalelor în impulsuri se realizează cu interfețe specializate, acestea sunt denumite
interfețe de numărare (sau countere). O interfată de numărare este
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Fig. 5
Fig. 4
monitorizată prin regiștrii de stare. O unitare de numărare acceptă din exterior un semnal de ceas sau
de poartă de control și generează un semnal în impulsuri. Pentru a putea oferi mai multe moduri de
operare, această interfață poate fi reconfigurabilă intern în funcție de cerințele aplicației și de
metoda de achiziție folosită.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Măsurarea frecventei semnalelor în impulsuri, metoda software
În cadrul acestei metode avem nevoie de un port
paralel prin care vom prelua semnalul de achiziție
(IN0).
Pentru această metodă este necesar un semnal ceas
intern2, ceas care este aplicat unei unități de
temporizare (TIMER0). Această unitate generează un
semnal de depășire (OVF0) periodic, în funcție de o
constantă de divizare înscrisă în registrul TIMER0.
Astfel, dacă NTIMER0 este constanta înscrisă în registrul
TIMER0, iar fCLK este frecvența ceasului aplicat la
intrarea în unitatea TIMER0, atunci frecvența
semnalului de depășire (OVF0), fOVF0, se va calcula cu formula:
,
Fig. 7
Fig. 8
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Avantajul acestei metode constă în simplitatea metodei, schema electronică de
conectare determină un cost scăzut și avantajul că se poate obține direct frecvența.
Printre dezanvantejele metodei, enumerăm:
‐ măsurarea semnalelor de frecvență scăzută;
‐ necesită procesoare foarte rapide dacă frecvența măsurabilă este mai mare
de câteva sute de Hz;
‐ metoda determină erori mari de calcul, datorate procesării software a
semnalului de intrare;
‐ pentru a obține valori stabile și cât mai apropiate de realitate, trebuie ca
valorile afișate să fie filtrate;
‐ metota este utilizată dacă semnalul măsurabil are lățimea impulsului de
minimum câteva zeci de microsecunde.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Măsurarea frecventei semnalelor în impulsuri, metoda hardware3 (metoda 1)
În cadrul acestei metode avem nevoie de un
contor TIMER1 care preia semnalul de
achiziție pe intrarea(INPUT) TMR1_CLK.
Pentru această metodă este necesar un
semnal ceas intern4, ceas care este aplicat
unei unități de temporizare (TIMER0).
Această unitate generează un semnal de
depășire (OVF0) periodic, în funcție de o
constantă de divizare înscrisă în registrul
TIMER0. Astfel, dacă NTIMER0 este constanta
înscrisă în registrul TIMER0, iar fCLK este
frecvența ceasului aplicat la intrarea în
unitatea TIMER0, atunci frecvența
semnalului de depășire (OVF0), fOVF0, se va calcula cu formula:
,
Fig. 9
perioada semnalului
1 ,
3
Hardware sau electronică
4
Baza de timp internă este ceasul sistemului de calcul sau un ceas obținut din ceasul sistemului de calcul.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
și de asemeni va fi resetat, după citire.
Aplicația principală poate realiza alte funcții; adică procesorul este descărcat de
funcția de măsurare.
Algoritmul descris mai sus este
schițat sub formă de schemă logică
în Fig. 10, iar implementarea
programului în limbaj C, este descris
mai jos.
Fig. 10
float f, T;
#define k ….
void main( void) {
attach_irq( TMR0, my_irq);
timer0_constant( T); // programam timer 0
timer_mode( 0,MOD0);
timer_mode( 1, MOD1);
outportw( TIMER1, 0); // initializare contor
for(;;) {
……
}
}
// intrerupere
void my_irq( short level): interrrupt
{
N = inportw(TIMER1);
f = K *N; // calcul frecventa
T =1/f;
outportw( TIMER1, 0);
}
Avantajul acestei metode constă în simplitatea metodei, schema electronică de
conectare determină un cost scăzut, avantajul că se poate obține direct frecvența și
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
de asemenea creșterea preciziei de măsură prin metoda de măsurare hardware a
impulsurilor.
Printre dezanvantejele metodei, enumerăm:
‐ măsurarea semnalelor de frecvență medie și ridicată (între maxim 1kHz …
10MHz);
‐ necesită două unități de numărare.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Măsurarea frecventei semnalelor în impulsuri, metoda hardware (metoda 2)
În cadrul acestei metode avem
nevoie de un contor TIMER1 care
preia semnalul de achiziție pe
intrarea(/INPUT) aplicată pe
intrarea de poartă a numărătorului
TIMER1, TMR1_ENA.
Pentru această metodă este
necesar un semnal ceas intern,
ceas care este aplicat unității de
numărare (TIMER1). Această
unitate generează un semnal de
depășire (OVF1), conectat la
întreruperea TMR1_IRQ. Astfel, dacă TIMER1 își depășește valoarea maximă
(65535), atunci se generează o întrerupere prin care programul va trebui să
înregistreze aceste depășiri, ținând cont de ele, în momentul în care se realizează
calculele. Tot la întreruperi se va conecta și semnalul de intrare /INPUT, pe
întreruperea /IRQ0. Asfel la apariția unui impuls pe intrare se va genera o
întrerupere, eveniment prin care programul este anunțat că semnalul de intrare a
început un nou ciclu.
Pentru o funcționare corectă a algoritmului va trebui ca semnalul de pe intrare să
fie activ în zero logic și să fie un semnal de tip impuls de lățime cât mai mică (vezi
Fig. 11).
Fig. 11
Fig. 12
float f, T;
unsigned long CT;
#define K ….
void main( void) {
attach_irq( IRQ0, my_irq);
attach_irq( TMR1_IRQ, my_irq);
timer_mode( 0, MOD0);
for(;;) {
…..
}
}
void my_irq( short level): interrrupt {
if( level ==IRQ0) {
CT+= inportw( TIMER1);
outportw( TIMER1, 0);
T = K * CT;
f =1/T;
CT =0;
}
if( level ==TMR1_IRQ) {
CT+= 65536;
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Avantajul acestei metode constă în simplitatea metodei, schema electronică de
conectare determină un cost scăzut, avantajul că se poate obține direct perioada
semnalului și de asemenea creșterea preciziei de măsură prin metoda de măsurare
hardware a impulsurilor.
Printre dezanvantejele metodei, enumerăm:
‐ măsurarea semnalelor de frecvență joasă (între maxim 20kHz);
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Măsurarea latimii impulsurilor
În cadrul acestei metode avem
nevoie de un contor TIMER1 care
preia semnalul de achiziție pe
intrarea(INPUT) aplicată pe
intrarea de poartă a numărătorului
TIMER1, TMR1_ENA.
Pentru această metodă este
necesar un semnal ceas intern,
ceas care este aplicat unității de
numărare (TIMER1). Această
unitate generează un semnal de
depășire (OVF1), conectat la
întreruperea TMR1_IRQ. Astfel, dacă TIMER1 își depășește valoarea maximă
(65535), atunci se generează o întrerupere prin care programul va trebui să
înregistreze aceste depășiri, ținând cont de ele, în momentul în care se realizează
calculele. Contorul TIMER1 va contoriza impulsuri numai în perioada cât semnalul
INPUT este activ. Tot la întreruperi se va conecta și semnalul de intrare INPUT, pe
întreruperea +IRQ0. Asfel la apariția unui impuls pe intrare se va genera o
întrerupere, eveniment prin care programul este anunțat că semnalul de intrare a
început un nou ciclu.
Pentru o funcționare corectă a algoritmului va trebui ca semnalul de pe intrare să
fie activ în zero logic și să fie un semnal de tip impuls de lățime cât mai mică (vezi
Fig. 13).
Fig. 13
Fig. 14
float f, T;
unsigned long CT;
#define K ….
void main( void) {
attach_irq( IRQ0, my_irq);
attach_irq( TMR1_IRQ, my_irq);
timer_mode( 0, MOD0);
for(;;) {
…..
}
}
void my_irq( short level): interrrupt {
if( level ==IRQ0) {
CT+= inportw( TIMER1);
outportw( TIMER1, 0);
T = K * CT;
}
if( level ==TMR1_IRQ) {
CT+= 65536;
}
}
Avantajul acestei metode constă în simplitatea metodei, schema electronică de
conectare determină un cost scăzut, avantajul că se poate obține direct durata
pulsului și de asemenea creșterea preciziei de măsură prin metoda de măsurare
hardware a impulsurilor.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Generarea de impulsuri, prin software, metoda 1
În cadrul acestei metode de generare de
impulsuri, avem nevoie de un port paralel,
una dintre ieșiri (de exemplul ieșirea OUT0)
este conectată la semnalul de comandă.
Pentru scrierea programului, vom folosi o
funcție denumită pulse. Această funcție are
doi parametrii, primul parametru indică
lățimea primului impuls, iar al doilea parametru indică lățimea celui de‐al doilea
impuls. Funcția pulse are la bază o funcție soft pentru realizarea întârzierilor și
anume funcția delay_us sau delay_ms. Aceste funcții pot realiza o întârziere de
microsecunde sau milisecunde, în funcție de parametru precizat. Un semnal
generat pe baza acestei funcții va putea arăta ca în figura Fig. 15.
Fig. 15
Fig. 16
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
void main( void) {
for(;;) {
pulse( 20, 80);
}
}
void pulse( unsigned long up, unsigned long down)
{
outportb(PORT, 0x01);
delay_ms( up);
outportb(PORT, 0x00);
delay_ms( down);
}
Această metodă oferă avantajul unui cost scăzut în realizare, simplitate, iar metoda
poate fi aplicată pe sistemele cu preț redus (“low cost”).
Principalele dezavantaje ale metode sunt:
‐ metoda folosește resursele procesorului
‐ dacă metoda este aplicată în sistemele de operare în timp real, pot apărea
fluctuații ale semnalului, datorate funcției delay_ms și datorate erorii
introduse in paralelizarea aplicațiilor
‐ poate fi aplicată cu precizie destul de buna pentru generarea de semnale cu
frecvența destul de redusa (careva sute de Hz).
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Generarea de impulsuri, prin software, metoda 2
În cadrul acestei metode de generare
de impulsuri, avem nevoie de un port
paralel, una dintre ieșiri (de exemplul
ieșirea OUT0) este conectată la
semnalul de comandă.
Pentru scrierea programului, vom
folosi o întrerupere, generată de un
divizor al semnalului de ceas
(CLOCK), prin numărătorul (TIMER0).
Ieșirea acestuia fiind conectată la
semnalul TMR0_IRQ al controlerului
de întreruperi. Acest semnal ținând
fix perioada semnalului generat.
Fig. 17
Fig. 18
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
O variantă mai rapidă de obținere a unor impulsuri scurte este de a înlocui funcția
delay_ms de pe întrerupere cu un număr de instrucțiuni de wait().
Această metodă oferă avantajul unui cost scăzut în realizare, simplitate, iar metoda
poate fi aplicată pe sistemele cu preț redus (“low cost”). Frecvența semnalului este
fixă și este dată de constanta de timp înscrisă în TIMER0.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Principalele dezavantaje ale metode sunt:
‐ metoda folosește slab resursele procesorului
‐ aceasta metodă poate fi aplicată cu precizie destul de bună pentru generarea
de semnale cu frecvență destul de redusă (câteva sute de Hz, până la câțiva
kHz).
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Generarea de impulsuri, prin hardware, metoda 1
Acestă metodă de
generare de impulsuri,
avem nevoie de un
numărător programabil,
conectat la una dintre
ieșiri (de exemplul ieșirea
TMR0_OUT, fiind ieșirea
de depășire OVF0) este
conectată la semnalul de
comandă. Astfel perioada semnalului generat este impusă de un semnal hardware
(TMR0_OVF), iar durata impulsului (t1) va fi generată de echipamentul hardware
la dispozitivului .
Fig. 19
Algoritmul de realizare a
programului este prezentat în figura
Fig. 20, iar mai jos este prezentată
implementarea acestui algoritm în
limbajul “C”:
Fig. 20
void main( void) {
program_timer( 0, MODE0);
timer0_constant( 1/T) ;
for(;;) {
……
}
}
Metoda prezentată are avantajul că prezintă un cost redus, este o metodă simplă de
generare a impulsurilor. Ea poate fi realizată pe sisteme ieftine. Frecvența
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
semnalului de ieșire este stabilă și fixă, ea este generată de timer‐ul TIMER0.
Această metodă de generare a impulsurilor folosește slab resursele procesorului.
Dezavantajul principal îl constituie, imposibilitatea de a schimba lățimea
impulsului pe ieșire, iar lățimea pe nivel “0” este destul de îngustă.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Generarea de impulsuri, prin hardware, metoda 2
Acestă metodă de
generare de impulsuri,
avem nevoie de o
unitate specializată.
Această unitate este o
unitate denumită
generator de semnal
PWM5. Aceasta unitate
este formată dintr‐un
numărător și două
comparatoare. Cele
comparatoare, verifică dacă valoarea numărătorului față este mai mică sau mai
mare decât un prag presetat. Ieșirile celor două comparatoare atacă intrările set și
reset al unui bistabil de tip RS.
Fig. 21
Algoritmul de realizare a
programului este prezentat în figura
Fig. 20, iar mai jos este prezentată
implementarea acestui algoritm în
limbajul “C”:
Fig. 22
void main( void) {
program_counter( 1, MODE2);
timer1_constant( T);
catch1_constant( N);
for(;;) {
}
}
5
PWM = Pulse Width Modulation. Unitate care generează semnal modulat în lățime.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
Avantajul principal al acestei metode, îl constituie faptul că frecvența de bază al
semnalului generat este fixă și stabilă, fiind dată de frecvența ceasului sistemului
divizată de către un numărătorul (TIMER1). De asemeni, lățimea impulsului este
fixă, ea fiind determinată de conținutul registrului de captură (N).
Dezavantajul principal îl constituie necesitatea existenței pe platformă a unui
modul PWM.
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.
De reţinut!
Semnale în impulsuri pot fi semnale periodice sau semnale
neperiodice. Un semnal în impulsuri periodic este un semnal
numeric (de tip ON/OFF) care se repetă la intervare regulate de
timp, după o anumită perioadă. Aceste semnale sunt definite de
perioadă semnal, frecvență, pulsație, durata impulsului, factor
de umplere. La un semnal neperiodic în impulsuri urmărim
durata semnalului activ și durare semnalului inactiv si factorul
de umplere. Interfețele care operează cu semnale în impulsuri
sunt interfețe numerice paralele sau interfețe cu contoare.
Test de autoevaluare
1. Care sunt elementele definitorii ale unui semnal periodic în
impulsuri?
2. Care sunt elementele definitorii ale unui semnal neperiodic în
impulsuri?
3. Care sunt elementele măsurabile ale unui semnal periodic în
impulsuri?
4. Care sunt elementele măsurabile ale unui semnal neperiodic în
impulsuri?
5. Cu ce interfețe măsuram semnalele în impulsuri?
6. Din ce este constituită o interfață de măsurare a impulsurilor?
Bibliografie
Morgan, D. “Numerical Methods – Real Time and Embedded Systems
Programming”, M&T Books, 1992
Walls, C., “Embedded Software: The Works”, O’Relly Ed., 2006
Walls, C., “Real Time Concepts for Embedded Systems”, R&D Books,
2000
Ledin, J., “Embedded Control Systems in C/C++; An Introduction on
Software Developers Using Matlab”, CMP Books, 2004
Conectarea unui proces la sistemul de calcul. Functii de operare cu impulsuri.