Professional Documents
Culture Documents
Curs PSM
Curs PSM
Von Neuman
Caracteristici:
Magistrala comuna
pentru memoria de
program si de date
Exemplu tipic:
Motorola HC11
Arhitectura Harvard
Caracteristici:
magistrale distincte
pentru program si date
Exemplu tipic
Atmel AVR
Harta memoriei in
cazul unui
microcontroller HC11
Harta memoriei
pentru un
microcontroller
din seria Atmel
AVR
Se observa ca aici
exista 3 spatii de
adrese
HC11
AVR
32 acumulatori R0-R31
R26-R27, R28-R29, R30-R31
can be concatenated to form the
X, Y, Z , registers
Stack pointer SP
registrul de stare CPU denumit
SREG
Numaratorul de program
Interfetele periferice
Any peripheral
interface contains
one or more
control and status
registers, and one
or more data
registers
These registers are,
normally, located
in the address
space of the data
memory, and are
accessed as RAM
locations
Sistemul de intreruperi
Definitie:
.The
The stack is essential for the interrupt system. Both the PC and the
CPU status are saved in the stack when handling interrupts.
Therefore, the SP must be initialized by software before enabling
the interrupts.
The interrupt service routine must save the CPU status and restore
it before returning to the main program.
Conditionarea intreruperilor
MAIN
.......
;Program
;RESET
.......
ORG
$FFFE
DW
MAIN
entry
point
at
;store
the
value
of
the
;label MAIN at $FFFE-$FFFF
.......
.ORG
RJMP
.......
ANA_COMP:
.......
RETI
$000C
ANA_COMP
LDAA
STAA
#$30
DDRD
Particularitati la AVR
Registrul de date al unui port
I/O la AVR este divizat in
doua parti.
La scriere se scrie in PORTx
La citire, se citeste PINx
O operatie de scriere intr-un
port configurat ca intrare, are ca
efect conectarea unor rezistente
interne de pull-up la pin.
LDI
R16, $F0
OUT
LDI
OUT
DDRB,R16
R16,$0F
PORTB,R16
IN
R0,PINB
LDI
R16,$F0
OUT
LDI
OUT
IN
SWAP
SBR
OUT
DDRC,R16
R16,$0F
PORTC,R16
R16,PINC
R16
R16,$0F
PORTC,R16
;configure port
;enable pull-ups
Proiectarea sistemelor cu
microprocesoare
Interfete de comunicatie asincrona ale
microcontrollerelor
Definitii
O transmisie de date
este seriala atunci
cand bitii de
informatie sunt
transmisi bit dupa bit,
in serie.
Exemplu: transferul
datelor intre doua
registre de deplasare
Transmisii sincrone/asincrone
O transmisie de date este
sincrona daca transmitatorul
genereaza si transmite un clock
de sincronizare.
In cazul transmisiei asincrone,
transmitatorul si receptorul au
fiecare cate un ceas propriu.
Este insa necesar ca frecventele
ceasurilor de la transmitator si
receptor sa fie egale.
Simplex/Duplex
O transmisie unidirectionala se numeste simplex.
O transmisie bidirectionala se numeste duplex
O transmisie este full duplex daca fiecare dispozitiv de
comunicatie poate emite si receptiona in acelasi timp. Intro astfel de comunicatie exista de fapt doua canale - unul
pentru emisie si altul pentru receptie.
O transmisie este half duplex daca fiecare dispozitiv de
comunicatie poate emite si receptiona date succesiv.
UART/USART
UART=Universal
Asynchronous Receiver
Transmitter
USART=Universal
Synchronous Asynchronous
Receiver Transmitter
SCI - denumirea generica a
UART-urilor implementate in
majoritatea microcontrollerelor
(Serial Communication
Interface)
BAUD
RESET
TCLR
0
SCP1
0
SCP0
0
RCKB
0
SCR2
0
SCR1
0
SCR0
0
SCP1
0
0
1
1
SCR2
SCR1
SCR0
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
Prescaller output is
divided by:
1
2
4
8
16
32
64
128
SCSR 7
TDRE
RESET 0
TC
RDRF
IDLE
OR
NF
FE
Registrul SCCR1
SCCR1
RESET
R8
T8
WAKE
Registrul SCCR2
SCCR2
RESET
TIE
TCIE
RIE
ILIE
TE
RE
RWU
0
SBK
4
FE
3
OR
2
-
1
-
0
-
RXCIE
TXCIE
UDRIE
RXEN
TXEN
CHR9
RXB8 TXB8
LDAA
STAA
CLR
LDAA
STAA
.
#$30
BAUD ;9600 baud
SCCR1;clear M
#$0C ;TE=1, RE=1
SCCR2;no interrupts
O rutina de receptie
SCI_REC
SRET
FRET
LDAA
ANDA
BEQ
LDAA
STAA
SEC
RTS
CLC
RTS
TAB
LDAA
ANDA
BEQ
STAB
RTS
;save character to B
SCSR
#$80 ;isolate TDRE
SSLOOP
SCDR ;send character
;and return
LDAA
LDAA
STAA
INC
RTI
SCSR
SCDR ;get character
SCIRB ;save it in a buffer
QSCI ;true QSCI
Standardul RS232
Codificarea electrica a informatiei
este de tip single ended, adica
informatia este transmisa pe un
singur fir, iar bitii 1 si 0 sunt
definiti prin nivele de tensiune
fata de o referinta comuna.
La emisie:
0L=+12V
1L=-12V
Circuitele de receptie trebuie sa fie
capabile sa discearna nivele de
tensiune intre +3V si 3V pentru
0 si 1.
Dezavantajele RS232
Lungimea maxima a liniei de comunicatie este
limitata la 15m,
Viteza de comunicatie (pentru un cablu de 15m) este
limitata la 19200 baud,
Topologie stricta point to point,
Vulnerabilitate mare la perturbatii elecromagnetice.
Standardul RS422
Cu acest mod de codare
electrica a semnalelor pe linia
de comunicatie, standardul
RS422 asigura urmatoarele
performante:
Viteza maxima de comunicatie
de pana la 10Mbps
Lungimea liniei de pana la
1200m, dar nu la viteza maxima
Topologii multidrop cu pana la
10 receptoare conectate la un
driver
Topologii cu RS422
Point to point duplex
Necesita 4 fire
Topologii cu RS422
Multidrop simplex
Sunt admise pana la 10
receptoare conectate la
acelasi transmitator.
RS422 nu permite realizarea
unor topologii multipoint, cu
alte cuvinte, pe o linie de
comunicatie poate fi
conectat un singur circuit
driver. Acest neajuns a fost
rezolvat prin introducerea
standardului de interfata
RS485.
Standardul RS485
Transmisia este tot diferentiala
ca la RS422.
Diferenta esentiala este ca la
RS485 driverul poate trece intro stare de inalta impedanta
Aceasta permite topologii
multidrop in care un numar de
pana la 32 de drivere se pot
conecta pe acelasi bus.
Conditia este ca UN SIGUR
DRIVER sa fie activ la un
moment dat (transmisie halfduplex).
Body
CRC
Tail
SPIF
WCOL
MODF
SPIE
SPE
CPHA SPR1
0
SPR0
SPSR la AVR
7
6
5
SPIF WCOL -
4
-
3
-
2
-
1
-
0
-
SPCR la AVR
7
SPIE
SPE
0
SPR0
sbi
sbi
sbi
ldi
out
ret
init_spiS:
cbi
cbi
cbi
cbi
ldi
out
ret
ddrb,5
ddrb,7
ddrb,4
r16,0x54
spcr,r16
;SLAVE initialization
ddrb,5 ;
DDRB,6
ddrb,7
ddrb,4
r16,0xC4
spcr,r16
la MASTER
SPSR ;wait for SPIF
#$80
SPI_SENDCH ;wait
XSPI
SPDR ;send it
SPSR ;wait for end of
;transmission
#$80
SPS05
SPDR ;read the byte
RSPI
LDAA
LDAA
STAA
INC
LDAA
STAA
RTI
BSET
JSR
BCLR
JSR
RTS
PORTA,SCL
DELAY ;wait a few microseconds
PORTA,SDA
;HIGH to LOW
DELAY
I2CSTOP
BSET
JSR
BSET
JSR
RTS
PORTA,SCL
DELAY
PORTA,SDA
DELAY
Protocolul 1 Wire
Figura alaturata
prezinta structura
generala ca stiva de
7 layer-e a oricarui
protocol de
comunicatie.
Notati faptul ca nu
este obligatoriu ca
TOATE layerele sa fie
implementate.
Layer-ul fizic
La nivelul fizic,
protocolul 1 wire se
deruleaza pe un bus
open collector/open
drain.
Intrebari recapitulative
Unde am mai intalnit bus-uri open
collector?
Comunicatia pe un bus 1-Wire este
sincrona sau asincrona?
Dar la I2C? Dar la SPI? Dar la UART?
O definitie a timerului
Un timer este un circuit (subsistem) destinat sa
rezolve una sau mai multe din urmatoarele
probleme:
Generarea unor intervale precise de timp
Masurarea duratei unor procese interne sau externe
Numararea unor evenimente externe
Generarea unor impulsuri modulate in durata
Watchdog
PA7
IC2F
IC3F
RESET 0
OC2I
OC3I
OC4I
I4/O5I IC1I
IC2I IC3I
Registrul TCTL1
Controleaza efectul evenimentelor de tip output compare
asupra liniilor I/O asociate cu timerul.
TCTL1 7
OMx
0
0
1
1
OM2
OL2
OM3
OL3
OM4
OL4
OM5 OL5
OLx
0
1
0
1
EDGxB
0
0
1
EDGxA
0
1
0
Type of capture
capture disabled
capture on rising edge
capture on falling edge
6
5
4
3
2
OC1M6 OC1M5 OC1M4 OC1M3 -
1
-
0
-
6
5
4
3
2
OC1D6 OC1D5 OC1D4 OC1D3 -
1
-
0
-
Semnale PWM
PWM este un acronim de
la Pulse Width
Modulator Modulator
de impulsuri in durata,
mai precis e vorba de un
generator de semnale
dreptunghiulare cu
frecventa fixa, dar cu
factor de umplere
modificat dinamic.
Exemple de utilizare
.Folosind
timer1
al
ATMega16
sa
se
genereze
la
iesirile
OC1A si OC1B doua
ceasuri, unul cu factor
de umplere iar celalat
cu factor de umplere .
Programul se reduce la
initializarea timerului.
Watchdog-ul la HC11
Se numeste COP Timer (Computer Operating Properly)
Validarea watchdog-ului se face cu ajutorul bitului
NOCOP din registrul CONFIG.
Reamintim ca registrul CONFIG este nevolatil.
Selectia ceasului de intrare se face cu bitii CR1:CR0 (COP
Rate Select) din registrul OPTION
Stergerea numaratorului se face scriind, aceasta ordine $55
si $AA in registrul special COPRST
Timpul pana la RESET poate fi programat in 4 cuante intre
16ms si 1 sec. (aproximativ)
Watchdog-ul la AVR
Registrul de control al Watchdog, WDCTR
WDCTR 7
WDTOE
WDE
Registrul ACSR
ACSR 7
ACD -
ACO
ACI
ACIE
ACIC
ACIS1 ACIS0
Convertorul A/D
Singurul mod in care un
sistem digital cum este un
microcontroller poate urmari
evolutia in timp a unui
semnal analogic, este sa
masoare la intervale discrete
de timp valorile succesive ale
semnalului.
Treaba asta o face
convertorul A/D.
Rezolutie: 8 biti
Timp de conversie: 128 perioade ale ceasului E
Alimentare separata AVDD, AGND
Referinte separate VRL, VRH
In fiecare ciclu de conversie se executa 4 conversii rezultatele se se stocheaza in ADR1-ADR4, fie asupra
aceleiasi intrari fie asupra unui grup de intrari. (Bitul
MULT din ADCTL)
Nu exista intrerupere asociata cu convertorul A/D.
Registrul ADCTL
ADCTL 7
CCF
RESET 1
SCAN MULT CD
x
x
x
CC
x
CB
x
0
CA
x
Registrul ADCSR
ADCSR7
ADIE
ADPS2
ADPS1
0
ADPS0
Registrul ADMUX
ADMUX 7
PROIECTAREA SISTEMELOR CU
MICROPROCESOARE
Cursul nr. 10
EXEMPLE DE PROIECTARE A UNOR
AUTOMATE SIMPLE
Conectarea motorului
Sunt necesare doua relee
K1 si K2 conectate ca in
figura.
K1 comanda miscarea K2
determina sensul de
miscare.
Curentul de sarcina al
releelor este
In=100W/24V
Se aleg relee cu curent
nominal de 8A.
Inventar intrari-iesiri
Sistemul se prezinta ca
o cutie neagra cu 3
intrari si 3 iesiri
digitale.
Pe baza acestui
inventar, alegem
microcontrollerul
Conectarea intrarilor
In figura alaturata este
prezentata schema de
conectare a unei intrari de
tip contact la
microcontroller
Valori tipice pentru
rezistente R1=2k2,
R2=10k
Optocuplorul este de tip
CNY74-4
Programul
timer();
switch(status)
{
case 0: // asteptare cu usa inchisa
if(PINC.0==0)
{
PORTB.0=1; //comanda deschidere
PORTB.1=0;
TTAB[8]=50;
status=1;
}
break;
Programul - continuare
case 1: // miscare pentru deschidere
if(TTAB[8]==0)
{
PORTB.0=0;
PORTB.1=0;
status=4;
break;
}
Programul - continuare
if(PINC.1==0) //s-a atins limitatorul
{
PORTB.0=0;
PORTB.1=0;
TTAB[9]=40;
status=2;
}
break; // sfarsitul starii 1
Programul - Starea 2
case 2: // asteptare cu usa deschisa
if(PINC.0==0) TTAB[9]=40;
//repornire timer
if(TTAB[9]==0)
{
PORTB=0x03;
status=3;
TTAB[8]=50;
}
break;
Programul - starea 3
case 3: // miscare pentru inchiderea usii
if(TTAB[8]==0)
{
PORTB=0;
status=4;
break;
}
if(PINC.2==0)
{
PORTB=0;
status=0;
}
break;
Programul - starea 4
case 4: //avarie
PORTB.2=1; //semnalizare avarie
if(PINC.1==0)
{
status=0;
PORTB=0;
break;
}
if(PINC.2==0)
{
status=2;
PORTB=0;
TTAB[9]=40;
}
break;
Inventar intrari-iesiri
PINC.0 intrarea de
armare/dezarmare
PINC.1 - zona 1 - delayed
Z2-Z4 zone instant
conectate la PINC.2PINC.4
PORB.0 - LED
semnalizare starea de
armat
PORTB.1 releu de alrma
Starea 4 - alarma.
Se activeaza releul pentru comanda sirenei
se testeaza timerul asociat cu sirena
Daca a expirat timerul, sirena este oprita dar
sistemul ramane armat si se revine in starea 2.
Se testeaza si intarea de dezarmare. Daca aceasta
se activeaza pe durata cat sirena este ON, se
opreste sirena si se revine in starea 0.
PROIECTAREA SISTEMELOR CU
MICROPROCESOARE
Cursul nr. 11
EXEMPLE DE PROIECTARE A UNOR
SISTEME DE REGLARE IN BUCLA
INCHISA
Analiza problemei
Schema echivalenta a motorului de cc;
di
L
dt
di
dt
Ri V
0
Regim
stationar
Tp
T
T
Vout
1
y(t )dt
T0
y(t )
Vmax t [ DT ,T ]
0 t [0, DT ]
DT
Vout
1
DT
Vmax dt Vmax
T 0
T
DVmax
Solutia software
Se porneste de la proiectul template
Se creaza un nou proiect dc_motor1, care
contine modulele analog, timer si pwm
Se definesc variabilele (de tip octet) Vp,
Vm
Se defineste o variabila (int) error (e(t))
Se defineste o variabila (int) Kp si se
initializeaza Kp=50
Solutia software
Kp=50;
while (1)
{
if(TTAB[0]==0)
{
TTAB[0]=2; //20ms interval intre doua actualizari
Vp=read_adc(0);
Vm=read_adc(1);
compute_error();
OCR2=reglaj();
}
};
}
Functiile folosite
void compute_error(void)
{
error=(int)Vp-(int)Vm;
}
unsigned char reglaj(void)
{
Vout=Kp*error;
if(Vout<0) return(0);
if(Vout>255) return(255);
return(Vout&0xFF);
}
Analiza rezultatelor
Calculul integralei
Integrala se reduce la media e(t) pentru
ultimele N esantioane calculate la intervale
de timp t0 (Ti=N*t0)
N
Ti
Vi
1
e(t )dt
Ti 0
1
N * t0
ei
t 0 * ei
i 0
i 0
f ' (t )
df (t )
dt
tn
f ' (t )
f (t n ) f (t n 1 )
tn tn 1
f
t
tn
f (t n )
1
f (t n 1 )
Programul complet
while (1)
{
if(TTAB[0]==0)
{
TTAB[0]=1;
Vp=read_adc(0);
Vm=read_adc(1);
error=(int)Vp-(int)Vm;
IBUF[ibptr++]=error;
if(ibptr>=Ti) ibptr=0;
OCR2=reglaj(); //executia propriu-zisa
}
if(TTAB[1]==0)
{
TTAB[1]=Td;
calc_deriv();
}
}; //end while
Principalele functii
unsigned char reglaj(void)
{
calc_medie();
Vout=Kp*error;
Vout=Vout+Ki*medie;
Vout=Vout+Kd*derivata;
if(Vout<0) return(0);
if(Vout>255) return(255);
return(Vout&0xFF);
}
void calc_medie(void)
{
int i;
medie=0;
for(i=0;i<Ti;i++) medie=medie+IBUF[i];
medie =medie/Ti;
}
void calc_deriv(void)
{
Vp=read_adc(0);
Vm=read_adc(1);
error=(int)Vp-(int)Vm;
derivata=error-prev_error;
prev_error=error;
}
Proiectarea sistemelor cu
microprocesoare
Curs 12
Alte familii de microcontrollere
Intel 80C51
Primul si cel mai popular microcontroller, dar nu
si cel mai performant
Magistrala de date de 8 biti, 16 biti pentru
magistrala de adrese
Arhitectura este Von Neumann, cu pagini distincte
si spatii de adrese distincte pentru memoria de
program si de date.
128 octeti RAM, 4K ROM, fara EEPROM
Doua timere, UART
Produs initial de Intel, dar preluat si imbunatatit de
Atmel, Philips, TI, ST Microelectronics etc.
I80C51 - pinout
PIC17Fxxx pinout
PIC18Fxxx pinout
PIC32
Microcontrollerele DSP
ARM (2)
Versiunile utilizate n prezent: ARM7 ..
ARM11
ARM Ltd. NU produce chipuri ARM:
Proiecteaz arhitectura procesoarelor ARM
Liceniaz proiectele ctre partenerii care
fabric procesoarele
Dezvolt tehnologii pentru asistarea proiectrii
Magistrale, periferice, instrumente software, plci de
dezvoltare, debuggers
ARM (3)
Arhitectur HARVARD
Spatiu de adrese unic desi au bus-uri diferite
pentru ROM, RAM si periferice
31 registre generale
16 registre vizibile n orice moment
R14: LR (Link Register)
R15: PC (Program Counter)
De obicei, R13 este stack pointer-ul SP
ARM(4)
Au doua seturi de instructiuni: unul
normal pe 32 de biti si unul thumb pe
16 biti.
Se pot combina cele dou seturi
Comutarea ntre starea ARM i starea
Thumb: cu instruciunea BX (Branch and
eXchange)
Rolul thumb este sa reduca necesarul de
memorii externe
LPC2103 minimal
Avantajele ARM
Viteza mare si putere redusa asta le recomanda
pentru numeroase aplicatii (telefoane, tablete etc.)
Tind sa depaseasca in performante DSP-urile, la
putere mai redusa
Sunt variatii relativ mici de la o serie la alta
compilatoarele suporta de obicei majoritatea
modelelor
Seriile high end (ARM9-11) sunt compatibile cu
cerintele Linux, WinCE, Android