Professional Documents
Culture Documents
SISTEMUL CU
MICROPROCESOR PE 32
DE BIŢI (modul Z3/EV)
Teorie şi exerciţii
Volumul 2/4 şi Appendix
INDEX.....................................................................................................................................................2
LECŢIA 13: INTERFAŢA SERIALĂ..............................................................................................................3
LECŢIA 14: CONVERTORUL DIGITAL/ANALOGIC...................................................................................17
LECŢIA 15: CONVERSIA ANALOG/DIGITALĂ..........................................................................................24
A. MONITORUL DE COMANDĂ AL MODULUI EV/Z3.........................................................................32
B. RESURSELE MONITORULUI...........................................................................................................38
C. COMUNICAREA CU COMPUTERUL PERSONAL..............................................................................45
D. ELEMENTE DE ELECTRONICA ......................................................................................................48
LECŢIA 13: INTERFAŢA SERIALĂ
OBIECTIVE
Principiile comunicării seriale
Interfaţa serială a modului Z3/EV
Controlerul 8250
Regiştrii controlerului 8250
Programarea interfeţei seriale
Realizarea unor aplicaţii şi exerciţii
MATERIALE
Unitatea de bază pentru sistemele IPES (sursă de curent mod.PS1-PSU/, priză
mod.MU/EV, unitate de management individual mod.SIS1/SIS2/SIS3)
Modul experimental mod.Z3/EV
Osciloscop
Deoarece procesoarele utilizează o magistrală de date de tip paralel, iar în mod normal
cantitatea minimă de informaţii trimisă la un moment dat este un octet, avem nevoie de
conversie din paralel în serial.
Regiştrii de shiftare sunt utilizaţi ca în figura următoare:
Formatul datelor în comunicarea serială asincronă
Pentru a transmite datele în modul asincron, fără utilizarea unui ceas intermediar care
să se ocupe de sincronizarea transmisiei şi recepţiei, într-o linie serială este nevoie de
informaţie suplimentară adaugată biţilor de dată trimişi.
Astfel s-a dezvoltat un nou standard de transmisie:
Starea liniei de transmisie este în mod normal setată la „1” logic.
Transmisia începe cu bitul de start (Start Bit) setat la nivelul „0” logic.
Apoi, sunt transmişi biţi de date (Character Bits) în linie, începând cu cel mai
puţin semnificativ (numărul de biţi este de 7 sau 8 şi se păstrează polaritatea).
După biţii de date se poate adăuga un bit de paritate (Parity Bit), care poate fi:
Par: se setează 0 sau 1 pentru a face ca suma biţilor 1 sa dea un
număr par
Impar: se setează 0 sau 1 pentru a face ca suma biţilor 1 sa dea
un număr impar
La sfârşitul transmisiei sunt adăugaţi unul sau doi biţi de stop (Stop Bit).
Durata de transmisie a unui bit depinde de viteza transmisiei (baud-rate) care
poate avea în mod normal una dintre următoarele valori: 300, 600, 1200, 2400,
4800, 9600, 19200, 38400,..
Toate aceste reguli sunt definite sub standardul RS-232 pentru transmisia serială
asincronă.
Controlerul 8250 funcţionează cu semnale de nivel logic TTL, iar pentru semnalele de
ieşire se foloseşte standardul RS-232 ce utilizează nivele de +/-12V. Pentru conversia
nivelelor se utilizează IC14 (1488) şi IC15 (489).
Semnale de ieşire.
DTR#(Terminal Ready)(Terminalul e pregătit): Atunci când este activ indică
faptul că controlerul 8250 este pregătit de comunicaţie.
RTS#(Request To Send)(Cerere de transmisie): Atunci când este activ indică
faptul ca controlerul 8250 este pregătit pentru transmisia unui octet.
OUT1# (Output1)(Ieşire 1): neutilizat
OUT2# (Output2)(Ieşire 2): neutilizat
BAUDOUT# (Baud Out): ceas de transmisie
TXD (Transmitted Data)(Date transmise): ieşire serială pentru tranmisie a
datelor prin liniile de comunicaţie.
Semnale de intrare/ieşire.
D0 – D7(Magistrala de date): magistrala de date a conexiunii
microprocesorului
XTAL (Intrare de ceas): intrare pentru ceas
Programarea interfeţei seriale
Pentru scrierea programelor de comunicaţie se pot folosi direct regiştrii controlerului
8250.
Acest mod de scriere a programelor este foarte complex deoarece cantitatea de
informaţii este foarte mare.
Pentru simplificarea programării interfeţei seriale, monitorul sistemului a fost prevăzut
cu o întrerupere software specială (INT 14H) şi toate funcţiile necesare realizării unei
comunicaţii seriale.
INTRARE AH = 0 : Iniţializare
AH = 1 : Trimiterea unui caracter
AH = 2 : Recepţia unui caracter
AH = 3 : Citirea stării
AH = 4 : Controlul modemului
Registrul Programare
AL
AH = 3 : Citirea stării
Conţinutul registrului AH reprezintă starea curentă a liniei de transmisie şi a
modemului.
Bitul 7 Time-out
Bitul 6 Registru de shiftare transmiţător gol
Bitul 5 Registru de reţinere a transmisiei gol
Bitul 4 Detecţia breakului
Bitul 3 Eroare de cadru
Bitul 2 Eroare de paritate
Bitul 1 Eroare de depăşire
Bitul 0 Datele sunt disponibile
AH = 4 : Controlul modemului
Conţinutul registrului AL determină starea curentă a modemului ce va fi programat.
Bitul 7 0
Bitul 6 0
Bitul 5 0
Bitul 4 Loop
Bitul 3 Ieşire 2
Bitul 2 Ieşire 1
Bitul 1 Cerere de trimitere (RTS)
Bitul 0 Terminal de date pregătit
(DTR)
Liniile DTR (Data Terminal Ready) şi DSR (Data Set Ready) sunt folosite
pentru a face conexiunea între cele două componente. Ele sunt activate la
începutul sesiunii de comunicaţie şi dezactivate la finalul ei.
Liniile RST (Request To Send) şi CTS (Clear To Send) sunt utilizate pentru
controlul transmisiei unui singur octet.
QUIZ
1 PAGE 70,166
2 ;----------------------- PRG_TX -----------------------
3 ; transmisia datelor pe portul serial
4 ;parametrii TX: 1200, N, 8, 1
5 ;aşteptarea semnalului DSR la începutul conexiunii
6 ; aşteptarea semnalului CTS la fiecare nou octet transmis
7 = 0800 MEM_POS = 0800H
8 = 0080 DS_SEG = 0080H
9 = 01F4 DELAY = 500 ;întârziere în ms
10 = 000B IDIS_STR = 0BH ; întrerupere de afişare a unui şir de caractere
11 = 000D IWAIT_MS = 0DH ; întrerupere de aşteptare
12 = 0014 ISERIAL = 14H ; întrerupere serială
13 = 000F IDA = 0FH
14
15 ;---------------------------------------- CODE
16 ;Programul este încărcat la adresa 0000:MEM_POS
17 0000 CODE SEGMENT
18 ASSUME CS:CODE, DS:CODE
19 0000 ORG 00H
20 0000 B8 0080 START: MOV AX,DS_SEG
21 0003 B8 0080 MOV AX,DS_SEG
22 0006 8E D8 MOV DS,AX ;încarcă segmentul de date
23 0008 BE 0042 R MOV SI,OFFSET MW_DSR
24 000B CD 0B INT IDIS_STR ;afişează mesajul MSG
25 000D B4 00 MOV AH,00H
26 000F B0 63 MOV AL,01100011B
27 0011 CD 14 INT ISERIAL ; programare serială
28 0013 B4 04 MOV AH,04H
29 0015 B0 01 MOV AL,00000001B ;activare DTR
30 0017 CD 14 INT ISERIAL
31 0019 B4 03 W_DSR: MOV AH,03H
32 001B CD 14 INT ISERIAL
33 001D 80 E4 20 AND AH,00100000B ;verifică DSR
34 0020 74 F7 JZ W_DSR ;salt dacă nu e activ
35
36 0022 BE 0053 R TLOOP: MOV SI,OFFSET MW_CTS
37 0025 CD 0B INT IDIS_STR ;afişează mesajul MSG
38 0027 B4 03 W_CTS: MOV AH,03H
39 0029 CD 14 INT ISERIAL
40 002B 80 E4 10 AND AH,00010000B ;verifică CTS
41 002E 74 F7 JZ W_CTS ;salt dacă nu e activ
42
43 0030 B4 01 MOV AH,01H
44 0032 B0 55 MOV AL,01010101B
45 0034 CD 14 INT ISERIAL ;transmisia datelor
46 0036 BE 0064 R MOV SI,OFFSET MS_BYTE
47 0039 CD 0B INT IDIS_STR ;afişează mesajul MSG
48 003B B8 07D0 MOV AX,2000
49 003E CD 0D INT IWAIT_MS
50 0040 EB E0 JMP TLOOP
51
52 0042 57 61 69 74 20 66 MW_DSR DB 'Wait for DSR ',00H
53 6F 72 20 44 53 52
54 20 20 20 20 00
55 0053 57 61 69 74 20 66 MW_CTS DB 'Wait for CTS ',00H
56 6F 72 20 43 54 53
57 20 20 20 20 00
58 0064 42 79 74 65 20 74 MS_BYTE DB 'Byte transmitted ',00H
59 72 61 73 6D 65 73
60 73 6F 20 20 00
61
62 0075 CODE ENDS
63 END START
SET
A B
1 2 A
2 5 a
3 1 G
4 3 U
5 4 u
Q2 Se poate observa cum transmisia s-a oprit. Care este motivul acestei opriri?
SET
A B
Q3 Transmisia datelor încă nu funcţionează. Care este cauza acestei noi erori?
SET
A B
SET
A B
1 3 00
2 5 FF
3 4 32
4 2 68
5 1 41
Setaţi comutatorul S9 în poziţia ON.
SET
A B
OBIECTIVE
Utilizarea principiilor conversiei digitale/analogice
Utilizarea converterului DAC0800
Aplicaţii ale converterului DAC0800 pe modulul Z3
Realizarea unor aplicaţii şi exerciţii
MATERIALE
Unitatea de bază pentru sistemele IPES (sursă de curent mod.PS1-PSU/, priză
mod.MU/EV, unitate de management individual mod.SIS1/SIS2/SIS3)
Modul experimental mod.Z3/EV
Osciloscop
Caracteristici Valori
Cost redus
;---------------------------------------- CODE
;program încărcat la adresa 0000:MEM_POS
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 0H
START:
MOV AL,0FFH
TLOOP:
INC AL
INT IDA_WRITE ;trimitere pe portul conv.
MOV AH,00H
MOV AL,00H
INT 12H;semnal de enable
MOV BX,10
MOV CX,100
INT 10H;beep
INT 08H;citire tasta in AL
JMP TLOOP
CODE ENDS
END START
1 PAGE 70,166
2 ;--------------------- PRG_DA -----------------------
3 ; generarea unui semanl de forma dinţi de fierăstrău
4 ; ieşire a convertorului D/A
5 = 0800 MEM_POS = 0800H
6 = 000F IDA_WRITE = 0FH ;întrerupere a conv D/A
7
8 ;---------------------------------------- CODE
9 ;program încărcat la adresa 0000:MEM_POS
10 0000 CODE SEGMENT
11 ASSUME CS:CODE, DS:CODE
12 0000 ORG 0H
13 0000 B0 FF START: MOV AL,0FFH
14 0002 FE C0 TLOOP: INC AL
15 0004 CD 0F INT IDA_WRITE ;trimitere pe portul conv.
16 0006 EB FA JMP TLOOP
17 0008 CODE ENDS
18 END START
SET
A B
1 3 0 – 8V
2 4 0 – 5V
3 1 -8 – 8V
4 5 -5 – 5V
5 2 Compatibil TTL
SET
A B
SET
A B
SET
A B
1 5 Curent
2 4 Tensiune
3 2 Frecvenţă
4 3 TTL
5 1 CMOS
Q5 Ce semnal de intrare este folosit pentru convertorul DAC 0800 pentru a adapta
convertorul la diferite familii logice?
SET
A B
1 2 VREF+
2 1 COM
3 4 B8
4 5 VLC
5 3 IOUT+
SET
A B
1 4 1A
2 5 0.5 A
3 1 50 mA
4 2 2 mA
5 3 1 mA
LECŢIA 15: CONVERSIA ANALOG/DIGITALĂ
OBIECTIVE
Utilizarea principiilor conversiei analogic/digitale
Utilizarea converterului ADC0804
Configuraţia pinilor convertorului
Secţiunea analogică
Secţiunea digitală şi temporizările
Conexiunile din interiorul modului EV/Z3
Realizarea unor aplicaţii şi exerciţii
MATERIALE
Unitatea de bază pentru sistemele IPES (sursă de curent mod.PS1-PSU/, priză
mod.MU/EV, unitate de management individual mod.SIS1/SIS2/SIS3)
Modul experimental mod.Z3/EV
Osciloscop
Există mai multe tehnici pentru obţinerea acestui tip de conversie. Una dintre cele mai
utilizate poartă numele de „conversie cu aproximare succesivă” şi este ilustrată în
figura de mai jos:
Convertorul ADC0804
ADC0804 este un convertor analogic/digital pe 8 biţi ce se bazează pe tehnica
aproximărilor succesive.
Acest convertor a fost proiectat să poată fi legat direct la magistrala microprocesorului
prin intermediul porţilor tri-state.
Acest convertor se comportă ca un port de intrare, nefiind nevoie de utilizarea unor
unităţi logice de interfaţare.
Prezenţa intrărilor diferenţiale pentru tensiunile analogice furnizează o rată de rejecţie
ridicată a semnalelor.
Caracteristici Valori
Rezoluţie 8 biţi
Alimentare 5V
Ceas
Semnalul de ceas pentru funcţionarea convertorului ADC0804 poate fi preluat de la
microprocesor şi apoi trimis pe pinul CLK-IN al convertorului.
Altfel, putem utiliza ceasul intern al convetorului, adăugând un circuit RC extern.
Utilizând o rezistenţă externă de aproximativ 10 Kohmi, putem calcula frecvenţa după
următoarea formulă:
F = 1/(1.1*R*C)
Intervalul de variaţie al frecvenţei este de: 100 – 1460 kHz
Valoarea normală utilizată este de 640 KHz.
Intrările analogice
Convertorul are o intrare de tensiune analogică diferenţială.
Intrarea VIN- poate fi utilizată pentru a scădea automat o valoare fixă a tensiunii de
intrare citită.
În mod normal, atunci când tensiunea de intrare ia valori între 0 şi 5 V, conexiunile ce
trebuiesc realizate sunt următoarele:
PAGE 70,166
;------------------------ PRG_AD ----------------------
;Citeşte de la convertorul A/D
;şi afişează rezultatul dorit
MEM_POS = 0800H
DS_SEG = 0080H
IAD_READ = 0EH ;întrerupere de citire A/D
IDIS_BYTE = 09H ;afişarea unui octet
IDIS_STR = 0BH ;afişarea unui şir de caractere
IWAIT_MS = 0DH ;întrerupere de aşteptare
;---------------------------------------- CODE
;programul este încărcat la adresa 0000:MEM_POS
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 0H
START:
MOV AX,DS_SEG
MOV DS,AX ;încarcă segmentul de date
MOV SI,OFFSET MSG
INT IDIS_STR ;afişează mesajul MSG
TLOOP:
INT IAD_READ ;citeşte A/D
;resultatul este in AL pe 8 biti
CMP AL,0
JE valoarena
MOV CL,13
INT IDIS_BYTE ;afişează codul caracterului
MOV AX,200
INT IWAIT_MS
JMP TLOOP
valoarena:
;valoare neasteptata
MOV SI,OFFSET MSGNA
INT IDIS_STR ;afişează mesajul MSGNA
MOV AX,3000
INT IWAIT_MS;delay de 3 secunde
JMP START
CODE ENDS
END START
Introduceţi programul în modulul EV/Z3 de la tastatură (în cazul utilizării unui PC
folosiţi aplicaţia MODZ3 pentru transferul programului PRG_AD prin interfaţa serială
sau paralelă, utilizând cablurile adecvate).
1 PAGE 70,166
2 ;------------------------ PRG_AD ----------------------
3 ;Citeşte de la convertorul A/D
4 ;şi afişează rezultatul dorit
5 = 0800 MEM_POS = 0800H
6 = 0080 DS_SEG = 0080H
7 = 000E IAD_READ = 0EH ;întrerupere de citire A/D
8 = 0009 IDIS_BYTE = 09H ;afişarea unui octet
9 = 000B IDIS_STR = 0BH ;afişarea unui şir de caractere
10 = 000D IWAIT_MS = 0DH ;întrerupere de aşteptare
11 ;---------------------------------------- CODE
12 ;programul este încărcat la adresa 0000:MEM_POS
13 0000 CODE SEGMENT
14 ASSUME CS:CODE, DS:CODE
15 0000 ORG 0H
16 0000 B8 0080 START: MOV AX,DS_SEG
17 0003 8E D8 MOV DS,AX ;încarcă segmentul de date
18 0005 BE 0017 R MOV SI,OFFSET MSG
19 0008 CD 0B INT IDIS_STR ;afişează mesajul MSG
20 000A CD 0E TLOOP: INT IAD_READ ;citeşte A/D
21 000C B1 0D MOV CL,13
22 000E CD 09 INT IDIS_BYTE ;afişează codul caracterului
23 0010 B8 00C8 MOV AX,200
24 0013 CD 0D INT IWAIT_MS
25 0015 EB F3 JMP TLOOP
26
27 0017 20 41 2F 44 20 76 MSG DB ' A/D value : xx ',00H
28 61 6C 75 65 20 3A
29 20 78 78 20 00
30
31 0028 CODE ENDS
32 END START
SET
A B
1 4 20
2 3 7F
3 5 BF
4 2 CF
5 1 DF
SET
A B
SET
A B
1 2 Curent
2 1 Tensiune
3 5 Frecvenţă
4 3 TTL
5 4 CMOS
Q4 Ce semnal al convertorului DAC 0800 este utilizat pentru adaptarea
convertorului la diferite familii logice?
SET
A B
1 5 VREF+
2 1 COM
3 4 B8
4 3 VLC
5 2 IOUT+
SET
A B
1 4 400 KHz
2 5 500 KHz
3 1 700 KHz
4 2 800 KHz
5 3 1 MHz
A. MONITORUL DE COMANDĂ AL MODULUI EV/Z3
INTRODUCERE
MONITOR este un program aflat în interiorul sistemului EPROM, care furnizează
managementul sistemului şi permite utilizatorului să lucreze cu el. Are umătoarele
funcţii de bază:
Afişează şi modifică memoria şi regiştrii
Execuţie continuă, pas cu pas, cu întreruperi de program
Încărcarea programelor în PC de la tastatură
Interacţiunea cu utilizatorul se face prin intermediul tastaturii şi a displayului.
TASTATURA
Tastatura este de forma celei din figură:
RESET
Această tastă este conectată la linia de reset a microprocesorului. Este întotdeauna
activă şi realizează resetarea microprocesorului şi iniţializarea programului Monitor în
memoria EPROM a sistemului.
CHG/RE
Această tastă are funcţie dublă. Funcţia CHG (Change) iniţializează secţiunea de
modificare a unei valori afişată pe display (conţinutul unui registru, adresă de
memorie, ...). Funcţia RET (Return) încheie secţiunea de modificare. Se poate observa
când sistemul este în secţiunea de modificare atunci când cursorul se poate vizualiza
pe display.
→ ←
Tastele reprezentate de săgeţi permit mutarea cursorului în timpul sesiunii de
modificare.
COMENZILE MONITORULUI
În ceea ce urmează sunt prezentate comenzile Monitorului care fac referinţă la
descrierea tastelor, iar fiecare dintre taste corespunde unei comenzi.
MEM
Această comandă permite examinarea conţinutului memoriei. Se poate afişa câte un
octet o dată.
O dată ce a fost apăsată o tastă, se cere introducerea adresei de memorie a cărui
conţinut urmează să fie reprezentat pe ecran (Sistemul trece automat în sesiunea de
modificare).
A d d r . s s s s : i i i i
O dată ce a fost introdusă adresa dorită, este necesar să se apese tasta CHG/RET
pentru încheierea sesiunii de modificare. Pe ecran va apărea adresa specificată şi datele
corespunzătoare, în următoarea formă:
s s s s : i i i i a x h x x
REG
Această comandă permite vizualizarea/modificarea conţinutului regiştrilor
microprocesorului: EAX, ECX, EDX, ESI, EDI, EBP, ESP,EIP, EFLAGS
După apăsarea tastei este vizualizat pe ecran primul registru.
R e g . E A X x x x x x x x x
S e g R e g . C S : x x x x
LD_KB
Această comandă permite încărcarea unui program în memorie de la tastatură
introducând codurile instrucţiunilor.
O dată ce tasta a fost apăsată, este cerută introducerea adresei de început a programului
sub forma segment:adresă (sistemul trece direct în sesiunea de modificare).
A d d r . s s s s : i i i i
O dată cu introducerea adresei dorite trebuie apăsată tasta CHG/RET pentru a încheia
sesiunea de modificare. Pe display va apărea de această dată adresa specificată şi
datele corespunzătoare, în următoarea formă:
s s s s : i i i i a x h x x
Sesiunea de modificare este iniţializată, iar cursorul este poziţionat pe prima căsuţă de
date hexazecimale.
O dată ce datele au fost introduse se apasă tasta CHG/RET ce memorează datele,
incrementează adresa de memorie şi pregăteşte sistemul de o nouă inserare de date.
Operaţiile de inserare se finalizează apăsând tasta RESET.
LD_PAR
Această comandă permite încărcarea unui program direct din calculator, prin
intermediul unei interfeţe paralelă.
O dată ce tasta a fost apăsată, sistemul aşteaptă răspunsul de la interfaţa paralelă şi
memorează toţi octeţii primiţi, începând de la adresa de memorie 0000:0800H.
O dată cu încheierea transferului, sistemul vizualizează octeţii primiţi şi trece în starea
de comandă.
Puteţi găsi mai multe detalii legate referitor la mijlocele de comunicaţie cu calculatorul
personal în capitolul 6.
LD_SER
Această comandă permite încărcarea unui program direct din calculator, prin
intermediul unei interfeţe paralelă.
O dată ce tasta a fost apăsată, sistemul aşteaptă răspunsul de la interfaţa serială şi
memorează toţi octeţii primiţi, începând de la adresa de memorie 0000:0800H.
O dată cu încheierea transferului, sistemul vizualizează octeţii primiţi şi trece în starea
de comandă.
Puteţi găsi mai multe detalii legate referitor la mijlocele de comunicaţie cu calculatorul
personal în capitolul 6.
RUN
Această comandă se utilizează pentru rularea unui program începând cu adresa
0000:0800H.
Se utilizează pentru a rula rapid programele încărcate de pe PC, ce vor începe automat
cu această adresă.
GO
Această comandă permite executarea unui program de la o adresă de memorie
specificată. Această adresă de memorie trebuie să fie introdusă sub următoarea formă
CS:IP (sistemul trece direct în sesiunea de modificare):
G O f r o m s s s s : i i i i
O dată ce a fost introdusă adresa de plecare, trebuie apăsată tasta CHG/RET. Execuţia
programului începe de la această adresă.
SS
Această comandă permite realizarea unui pas dintr-un program activ al utilizatorului
începând de la adresa curentă conţinută în regiştrii CS şi IP. Apăsând succesiv această
tastă permite rularea programului pas cu pas.
După fiecare pas programul se opreşte afişând adresa de memorie la care a ajuns.
S t o p A t s s s s : i i i i
BR
Această comandă permite vizualizarea şi modificarea valorilor punctelor de
întrerupere (breakpoint) inserate în program (se admite un maxim de 5 puncte de
întrerupere).
O dată ce tasta a fost apăsată, se afişează adresa primului punct de întrerupere sub
forma segment:adresă.
B r n . x s s s s : i i i i
CB
Această comandă permite anularea breakpointului afişat în mod curent pe ecran (un
breakpoint este considerat ca fiind anulat, aşadar inactiv, atunci când este poziţionat la
adresa FFFF:FFFF).
INC(+)
Incrementează adresa din memorie, din registru, din registrul de segmente sau a
breakpointului vizualizat în mod curent.
DEC(-)
Decrementează adresa din memorie, din registru, din registrul de segmente sau a
breakpointului vizualizat în mod curent.
FIRST
Poziţionează indicatorul de adresă la prima adresă din memorie, registru, registru de
segment sau întrerupere.
LAST
Poziţionează indicatorul de adresă la ultima adresă din memorie, registru, registru de
segment sau întrerupere.
GEN
Tastă de uz general, este neprogramată.
B. RESURSELE MONITORULUI
INTRODUCERE
Monitorul sistemului realizează managementul software al diferitelor periferice ale
modulului EV/Z3.
Acest soft permite manipularea într-un mod cât mai simplu al acestor periferice prin
intermediul întreruperilor software ale microprocesorului.
În acest capitol vor fi prezentate mai multe tipuri de întreruperi împreună cu funcţiile
şi parametrii necesari.
Toate întreruperile software din exemplele localizate în acest manual sunt
implementate pentru managementul perifericelor sistemului.
INT 07H
Sfârşitul programului
Această întrerupere este utilizată pentru finalizarea execuţiei programului şi transferul
controlului către programul Monitor.
Trebuie apelată la sfârşitul fiecărui program pentru a ceda controlul programului
Monitor.
INTRĂRI Nu
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 08H
Citirea unei taste de la tastatură.
Această întrerupere permite atenţionarea la apăsarea unei taste. Realizează scanarea
tastaturii şi aşteaptă până când o tastă este apăsată. Codul tastei (0 – 18) este încărcat
în registrul AL.
INTRĂRI Nu
INT 09H
Trimite un caracter hexazecimal către afişaj.
Această întrerupere permite scrierea unui octet în formă hexazecimală în orice poziţie
a afişajului.
Poziţia se poate identifica prin utilizarea registrului CL, iar octetul prin intermediul
registrului AL.
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 0AH
Trimite un caracter ASCII pe afişaj.
Această întrerupere permite scrierea unui caracter ASCII în orice poziţie a afişajului.
Poziţia se poate identifica prin utilizarea registrului CL, iar octetul prin intermediul
registrului AL.
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 0BH
Trimite un şir de caractere pe afişaj.
Această întrerupere permite trimiterea unui şir de caractere pe afişaj. Şirul de caractere
constă într-un şir de octeţi, ce corespund unor caractere diferite. Sfârşitul şirului este
semnalat prin prezenţa codului 00H.
Şirul de caractere este localizat în regiştrii DS:SI.
Şirul de caractere este afişat începând cu prima căsuţă de pe afişaj.
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 0CH
Trimite comenzi către afişaj.
Această întrerupere trimite comenzi de control către afişaj.
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 0DH
Aşteaptă x milisecunde.
Această întrerupere realizează o pauză a programului. Lungimea acestei pauze (în
milisecunde) este specificată de conţinutul registrului AX.
INTRĂRI AX = Numărul de milisecunde
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 0EH
Citeşte date de la convertorul analogic/digital.
Această întrerupere realizează următoarele operaţii:
Trimite semnalul de începere a conversiei către convertorul A/D
Aşteaptă semnalul de sfârşit de conversie
Citeşte rezultatul conversiei şi îl returnează în registrul AL.
INTRĂRI Nu
Regiştrii Nu
modificaţi
INT 0FH
Comandă convertorul digital/analogic.
Această întrerupere trimite date (un octet) către convertorul digital/analogic, care le
transformă apoi în valoarea analogică.
INTRĂRI AL = date
IEŞIRI Nu
Regiştrii Nu
modificaţi
INTRĂRI BX = durata
CX = frecvenţa
IEŞIRI Nu
Regiştrii Nu
modificaţi
INT 12H
Managementul interfeţei paralele.
Această întrerupere se ocupă de manipularea interfeţei paralele. Controlerul 8255 se va
utiliza doar în Modul 0 (Modul standard I/O).
Funcţiile acestei întreruperi pot fi identificate în funcţie de conţinutul registrului AH.
Regiştrii Nu
modificaţi
AH = 0: Porturile programabile
Conţinutul registrului AL determină direcţia de transmitere a datelor pe porturi:
Registrul AL Programare
INT 14H
Managementul interfeţei seriale.
Această întrerupere se ocupă de funcţionarea interfeţei seriale asincrone RS-232. Se
utilizează controlerul 8250.
Funcţiile specifice acestei interfeţe sunt determinate în funcţie de conţinutul registrului
AH.
INTRARE AH = 0 Iniţializare
AH = 1 Trimite un caracter
AH = 2 Primeşte un caracter
AH = 3 Citeşte starea
AH = 4 Controlează modemul
Registrul AL Programare
Biţii 4, 3 Paritate
=00 : nu
=01 : impar
=10 : no
=11 : par
AH = 3 : Citirea stării
Conţinutul registrului AH conţine starea liniei curente şi a modemului.
Bitul 7 Time-out
Bitul 6 Golirea registrului de shiftare a transmisiei
Bitul 5 Golirea registrului de menţinere a transmisiei
Bitul 4 Detectarea întreruperii
Bitul 3 Eroare de cadru
Bitul 2 Eroare de paritate
Bitul 1 Eroare de depăşire
Bitul 0 Datele sunt pregătite
AH = 4 : Controlul modemului
Conţinutul registrului AH conţine starea curentă a modemului, ce urmează a fi
modificată.
Registrul AL Starea modemului
Bitul 7 0
Bitul 6 0
Bitul 5 0
Bitul 4 Salt
Bitul 3 Ieşire 2
Bitul 2 Ieşire 1
Bitul 1 Necesitate de trimitere (RTS)
Bitul 0 Terminal de date pregătit
(DTR)
Procedura de instalare este simplă. Această comandă instalează în mod automat toate
aplicaţiile necesare (EV: 32 bit Microprocessor).
Împreună cu aplicaţia de bază sunt instalate şi exemple de aplicaţii. Pentru detalii
consultaţi fişierul README.TXT.
Meniul EDIT: Undo, Cut, Copy, Paste, Delete, Find, Find Next,
Replace
Aceste comenzi permit scrierea programelor, având disponibile toate funcţiile
programelor standard de editare din Windows, precum Notepad, WordPad, etc.
Meniul COMM
Această secţiune permite transferul programului în cod maşină (programul
corespunzator codului sursă activ) către modulul EV/Z3.
Dacă de exemplu se deschide programul PROVA.ASM, se vor transfera către modulul
EV/Z3 programele PROVA.BIN sau PROVA.EXE.
MASM PROVA;
LINK PROVA;
EXE2BIN PROVA.EXE PROVA.BIN
Aceste comenzi pot fi realizate în mod automat utilizând opţiunea din meniul de
utilităţi.
Înainte de transmisie, apare o fereastră de dialog unde se pot seta parametrii necesari.
Această fereastră permite setarea:
Interfeţei utilizate: LPT1, LPT2, ...
Directorul unde a fost salvat programul ce urmează a fi trimis
Extensia fişierului ce urmează a fi trimis. Poate fi .BIN, în cazul în care
programul folosit pentru conversie a fost EXE2BIN, sau poate fi .EXE dacă se
utilizează direct fişierul generat de Linker.
Numărul de octeţi ce trebuie sărit. Acest lucru este important în cazul utilizării
fişierelor .EXE, care conţin în mod normal în primii 200H octeţi informaţii ce
servesc doar în modul de operare MS-DOS.
Întârzierea TX, care controlează transmiterea datelor: nu permite calculatorului
să transmită datele mai rapid decât este capabil modulul EV/Z3 să le
primească. Se foloseşte datorită faptului că nu există linii de sincronizare în
cadrul transmisiei paralele. În cazul în care apar probleme de transmisie,
încercaţi să creşteţi acest timp.
Meniul UTILITY
Acest meniu conţine comenzile pentru execuţia directă a operaţiilor de asamblare din
aplicaţia MODZ3, precum Linkerul şi conversia binară a programului.
În acest caz, conversia binară este abandonată, iar fişierul .EXE este utilizat în mod
direct (nu uitaţi ca în acest caz să săriţi peste primii 512 octeţi ai fişierului).
Tranzistorul
+
Re
u M u
Le
e
-
Figura D.2
Ultima relaţie indică o dependenţă neliniară pronunţată a vitezei în raport cu fluxul,
deci curentul de excitaţie. Această neliniaritate complică legea de control şi face ca
reglajul turaţiei prin controlul curentului de excitaţie să fie rar utilizat în sistemele de
acţionare, în general, şi a roboţilor, în particular.
Regimul tranzitoriu al motorului ce operează sub flux constant se obţine imediat din
figura D.2.
di(t )
u(t )=R⋅i(t )+L +k⋅ω(t )
dt (D.12)
iar cuplul motor va fi:
dω( t )
M =J + k f⋅ω + M f + M s
dt (D.13)
≠
M
0
M
=
U2>U
M
0
1
M
U1
M U
Figura D.3
Aplicând transformarea Laplace relaţiilor (D.12) şi (D.13), considerând condiţii
iniţiale nule, rezultă :
U ( s)=( R+L⋅s )⋅I (s )+k⋅ω( s ) (D.15)
k⋅I ( s )=( J s +k f )⋅ω (s)+M f ( s )+M s ( s ) (D.16)
Ecuaţiile acestea definesc schema bloc echivalentă a motorului (figura D.4).
Din (D.15) si (D.16) rezultă ,
k⋅U (s ) ( M f (s )+ M s (s ) )⋅( R+ Ls )
ω( s )= 2
− 2
k +( R+ L⋅s )( k f + J⋅s ) k +( R+ L⋅s )( k f + J⋅s ) (D.17)
Dacă
k f se consideră suficient de mic, atunci funcţia de transfer (D.19) poate fi
rescrisă sub forma:
A
Y (s)=
(1+τ e s)⋅(1+τ m s) (D.21)
Unde
τ e defineşte constanta de timp electrică ,
L
τe=
R
M f MS
U s 1 J s 1 s k
k
R Ls Js k f
Figura D.4
iar,
τ m constanta de timp electro-mecanică
R⋅J
τm=
k2 (D.22)
Ecuaţiile de mai sus sunt, în principiu, specifice motoarelor disc, dar pot fi aplicate la
toate motoarele utilizate în sistemele de acţionare ale roboţilor, diferenţierile fiind de
ordin tehnologic. Aceste ecuaţii indică reglajul preferenţial al turaţiei prin reglarea
tensiunii de alimentare u . Controlulde tensiune al turaţiei este utilizat practic în
peste 85% din sistemele de acţionare al roboţilor (cu acţionare prin motor de c.c. ) şi
numai o mică parte utilizează controlul prin curent, această ultimă procedură fiind
avantajoasă datorită funcţiei de transfer mai simple între cuplu şi curent.
Id t
a) b)
Figura D.5
Controlul redresării este obţinut printr-o punte, în circuitul exterior al
redresorului fiind montat motorul de c.c. Se remarcă conducţia, pe fiecare alternanţă a
tensiunii din secundar, a două tiristoare opuse. De exemplu într-o semialternanţă
conduc tiristoarele Th 2 şi Th 3 (linie neântreruptă), iar în cealaltă semialternanţă
grupul Th 1, Th 4 (linie punctată). Controlul valorii curentului redresat se obţine prin
controlul unghiului de aprindere al tiristoarelor. Pentru atenuarea componentelor
alternative ce apar în această redresare, în circuitul motorului se introduce o bobină de
netezire L.
Redresoare trifazate în puncte. Circuitele de acest tip reprezintă stuctura cea mai
eficientă pentru alimentarea motoarelor de c.c. sub raportul puterii şi randamentului.
Configuraţia de bază a unui astfel de circuit este prezentată în figura D.6, iar formele
de undă ale semnalelor se pot urmări în figura D.7.
Variatoare de tensiune continuă. Aceste dispozitive trasformă o tensiune continuă
aplicată la intrare, în impulsuri dreptunghiulare de tensiune, la ieşire, astfel încât
valoarea medie a tensiunii de ieşire se poate modifica în funcţie de factorul de
umplere al impulsurilor. Schema de principiu a unei astfel de valori este prezentată în
figura D.8.
L L
i
L L
Figura D.6
Elementul principal al dispozitivului este un comutator static CS realizat, de obicei,
dintr-un tiristor comandat. Închiderea comutatorului înseamnă aplicarea semnalului
de tensiune de amplitudine U pe bornele motorului, regim menţionat pe o durata de
timp Ti. Prezenţa inductiei L determină o creştere a curentului, presupusă idealizat ca
o creştere liniara (figura D.8b),
di E
=
dt L (D.24)
Deschiderea întrerupatorului înseamnă decuplarea alimentării E şi închiderea
curentului de autoinducţie prin dioda D. Valoarea medie a tensiunii la bornele
motorului va fi:
Ti
U cc =E
T (D.25)
Această relaţie indică doua modalităţi de control a componentei continue: a) prin
ajustarea duratei impulsului T i în cadrul unei perioade T de comutare constantă ; b)
prin menţinerea duratei T i constanta şi varierea perioadei T. Ambele metode
determină funcţionarea motorului într-un singur regim, regimul de motor. O soluţie
înbunataţită este oferită de funcţionarea motorului în două regimuri în cadrul unei
perioade de lucru, regim de motor popriu-zis şi regimul de frână.
t
2
Figura D.7
Figura D.8
În al doilea regim se blochează CS1 şi se deschide CS2 motorul trecând în regim de frână
prin scurtcircuitarea indusului, energia cinetică transformându-se în energie mecanică.
Când se deschide CS2 tensiunea electromotoare a maşinii împreună cu cea de
autoinducţie determină deschiderea diodei D2 şi trecerea curentului spre sursa E, deci
energia magnetică acumulată se transformă în energie electrică. Cele două zone
funcţionale corespund cadranelor I şi II a curenţilor şi tensiunilor de alimentare. O
structură funcţională mai complexă corespunde operării în patru cadrane(figura D.10).
Sistemul cuprinde patru comutatoare statice CS1-CS4 a căror comutare după o anumită
ordine determină funcţionarea în regim de motor şi frână pentru ambele polarităţi de
alimentare a le motorului.
Motoarele pas cu pas sunt sisteme sincrone care realizează o corelaţie directă între
mărimea comandată şi poziţia obţinută. Aceste motoare asigură conversia directă a
semnalului de intrare, dat sub formă numerică, într-o mişcare de poziţionare
unghiulară prin cumulări incrementale. Această proprietate determină o utilizare largă
a motoarelor pas cu pas în toate sistemele de poziţionare în bucla deschisă. Conversia
intrinsecă a comenzii în poziţie asigură scheme de control simle, eficiente atât sub
aspect tehnic, cât şi economic.
CS1
D2
+ L i
E U
+
D1 CS2
M
Frînă Motor I
a.) b.)
Figura D.9
E
u2 u2 L L L
+
d2 D
CS2 CS4
+
M
Figura D.10
N 2
4 S
Figura D.11
Motoarele pas cu pas polistatorice sunt realizate sub forma unor multistructuri statoric-
rotorice, fixate mecanic în aceeaşi carcasă dar independente din punct de vedere
electric şi magnetic. Statorul şi rotorul au acelaşi număr de dinţi. Subsistemele rotorice
sunt montate pe acelaşi ax , dar sunt separate din punct de vedere magnetic.
a.) b.)
Figura D.12
Pentru a realiza rotaţia este necesar decalarea subsistemelor rotorice sau statorice,
radial unele faţa de altele. În figura D.12 este prezentat un motor cu trei faze, cu
statorul aliniat şi un decalaj de o treime din pasul dentar realizat prin cele trei
subsisteme rotorice.
Indiferent de principiul de funcţionare al motorului, comanda acestuia se realizează prin
comutarea succesivă a fazelor înfăşurarilor. În figura D.14 se pot urmării diagramele
tensiunilor de alimentare în câteva variante funcţionale aplicate unui motor cu patru
faze.
În figura D.14, a este reprezentată aşa numita comandă simetrică simpla în care
alimentarea fazelor este comutată succesiv pe fiecare înfaşurare, semnalele de comanda
fiind disjuncte. În figura D.14,b sunt alimentate în permanenţă două înfăşurări, sensul de
rotaţie al motorului fiind determinat de ordinea de conectare şi deconectare a acestora
(comanda simetrică dublă). Această metoda este îmbunatăţită în figura D.14,c în sensul
că intervalul de timp asociat unei înfăşurări este defalcat în trei zone. Prima şi ultima
corespund alimentării simultane cu faza precedentă şi respectiv succesoare iar în a doua
este asigurată numai alimentarea fazei proprii.
Figura D.13
u1 u1
t t
u2 u2
t u3 t
u3
u4 t u4 t
t t
a b
u1
t
u2
t
u3
u4 t
t
c
Figura D.14
Circuit Bloc F2
Control1 MPP
distribuitor contactor
U2 static
Fn
U3 fd
U4
Generator de
Control2 tact
Figura D.15
a
A
Q0
B
N D
T Q1 C
CK D
f d
b
Figura D.16
P2
GT1
D D D D D LOAD
CK
Q Q Q Q Q
P1
ud spre distribuitor
1 1 1
u T1 Nv Nv Nv N v2
…
Ts Ts t
ud
Td1 Td1 Td 2
t
Figura D.17
+5V
Faza 1
+E
R1
T1
De la
D1
distribuito T2
R2 R3
Figura D.18
i ( t )=
E
Rm + R0
1−e ( −
τm
)
(D.26)
unde m este constanta de timp a circuitului.
L
τm=
R m+ R 0 (D.27)
i m
E
I(t) L, Rm Rm
+
E
-
K
Comutator
ideal (R=0) t
t f1
a b
Figura D.19
Timpul de front anterior la comutarea curentului Tfl (figura D.19b) se poate aprecia la
t fl≃3 τ m (D.28)
valoare ce nu satisface întotdeauna cerinţele de comutare ale fazelor motorului,
datorită valorii mari ai inductanţei L şi mici ale rezistenţelor Rm si R0.
Îmbunătăţirea timpului de front este posibilă prin tehnici bine-dezvoltate în literatura
de specialitate, cea mai simplă procedură de micşorare a constantei de timp T m
constând în introducerea în serie cu înfăşurarea motorului a unei rezistenţe R. Noua
constantă de timp va fi.
L
τ ¿m =
R m+ R 0 + R (D.29)
1 Faza 1
D1 R1
2 Faza 2
D2 R2
n Faza n
R +E
Dn Rn
T
Bloc control
Figura D.20
Releul
Releul este un dispozitiv electromecanic care transformă un semnal electric într-o
mişcare mecanică. El este alcătuit dintr-o bobină din conductori izolaţi înfăşuraţi pe un
nucleu metalic şi o armătură metalică cu unul sau mai multe contacte.
Un releu poate fi de altfel activat prin intermediul unui optocuplor care în acealşi timp
amplifică curentul provenit de la ieşirea microcontrolerului şi oferă un grad înalt de
izolare. Optocuploarele de curent înalt conţin un tranzistor cu o ieşire „Darlington”
pentru a oferi curent mare de ieşire.
Conectarea prin intermediul unui optocuplor este recomandată în mod special pentru
aplicaţiile unde motoarele sunt activate şi zgomotelele de comutaţie provenite de la
motor pot ajunge la microcontroler prin intermediul liniilor de alimentare.
Optocuplorul comandă un releu iar releul activează motorul.
Optocuplorul