Documente Academic
Documente Profesional
Documente Cultură
Curs 7
Când tensiunea
pe AIN0 este
mai mare decât
cea de pe AIN1, PB2
ieșirea
comparatorului
devine 1 logic PB3
3
Modulul comparator analogic
4
Modulul comparator analogic
pentru V+
Modulul comparator analogic
1 activează întreruperea
6
Caracteristici principale modul SPI
SCLK SCLK
SPI MOSI MOSI SPI
Master MISO MISO Slave
8
SS SS
Principiul de funcționare modul SPI
10
PB6
REGISTRU DEPLASARE
Modulul SPI PB5
11
Controlul pinilor pentru modulul SPI
12
Registrul de date SPDR
15
Regiștrii modulului SPI
Registrul
SPSR
16
Regiștrii modulului SPI
devine 1 la finalizarea
unui transfer
18
Exemplu transmitere date master
19
Exemplu configurare SPI ca slave
20
Exemplu recepție date slave
21
Caracteristici principale modul TWI
23
Caracteristici principale modul TWI
25
Microcontrolere
Curs 8
2
Caracteristici principale modul TWI
4
Caracteristici principale modul TWI
Stări hardware:
Start - o tranziție a SDA din 1 în 0 cu SCL menținut pe 1
Transfer biți – valoarea bitului în SDA se schimbă când SCL e 0 și
este menținută stabilă pentru preluare când SCL e 1
Stop – o tranziție a SDA din 0 în 1 când SCL e 1
Start repetat – Start generat fără a fi precedat de Stop
6
Caracteristici principale modul TWI
Arbitrare multi-master:
Fiecare master monitorizează semnalele de Start și Stop și nu
inițiază un mesaj cât timp alt master ține bus-ul ocupat (nu a
generat Stop)
Dacă doi master inițiază transmisie în același timp, se produce
arbitrarea, pe baza liniei SDA
Fiecare master verifică linia SDA și dacă nivelul acesteia nu este cel
așteptat (cel scris), acel master pierde arbitrarea
Primul master care pune pe linie 1, când altul pune 0, pierde
Master-ul care pierde așteaptă un nou semnal de stop, apoi încearcă
din nou
7
Caracteristici principale modul TWI
8
Caracteristici principale modul TWI
Transmiterea datelor:
Master transmite un octet
Slave răspunde cu ACK sau NACK prin comanda liniei SDA
9
PC0 PC1
Modul TWI
CEAS
10
Stabilirea vitezei de comunicație
11
Registrul de date TWDR
12
Regiștrii modulului TWI
16
Memoria EEPROM
19
Regiștrii pentru acces la memoria
EEPROM
1 declanșează scrierea;
devine automat 0 la 1 declanșează citirea
finalizarea scrierii
21
Procedura de scriere în memoria
EEPROM
1. Se așteaptă ca EEWE să devină 0
2. Opțional, se așteaptă ca bitul SPMEN din SPCR să
devină zero
3. Se scrie adresa în regiștrii EEAR
4. Se scrie valoarea în registrul EEDR
5. Se scrie 1 în bitul EEMWE simultan cu 0 în bitul EEWE
6. În mai puțin de 4 perioade de tact se scrie 1 în EEWE
22
Procedura de citire din memoria
EEPROM
1. Se așteaptă ca EEWE să devină 0
2. Opțional, se așteaptă ca bitul SPMEN din SPCR să
devină zero
3. Se scrie adresa în regiștrii EEAR
4. Se scrie 1 în bitul EERE
5. Se citește valoarea din registrul EEDR
23
Exemplu scriere în memoria EEPROM
29
Microcontrolere
Curs 9
2
Gestiunea consumului de energie
4
Gestiunea consumului de energie
5
Modul Idle
9
Modul
Power-down
Aproape toate
generatoarele de
semnal de ceas sunt
oprite, mai puțin
Watchdog dacă a fost
activat
Trezirea durează mai
mult comparativ cu
alte moduri deoarece
necesită stabilizarea
generatoarele de
semnal de ceas
10
Modul Power-down
11
Modul
Power-save
Aproape toate
generatoarele de
semnal de ceas sunt
oprite, mai puțin
Watchdog dacă a fost
activat și Timer 2
asincron
Permite funcționarea
Timer 2 dacă acesta a
fost configurat cu
semnal de ceas
asincron
12
Modul Power-save
13
Modul
Standby
Poate fi activat doar
dacă a fost configurat
generator de tact cu
cristal de cuarț
Are aceleași
caracteristici ca modul
Power-down, dar
trezirea durează mai
puțin comparativ cu
acesta – doar șase
perioade de tact
14
Modul Standby
15
Modul Extended
Standby
Poate fi activat doar
dacă a fost configurat
generator de tact cu
cristal de cuarț
Are aceleași
caracteristici ca modul
Power-save, dar
trezirea durează mai
puțin comparativ cu
acesta – doar șase
perioade de tact
16
Modul Extended Standby
17
Alți factori care contribuie la consumul
de energie
Modulul ADC nu este dezactivat de nici unul
dintre modurile sleep și astfel poate consuma
energie. Utilizatorul ar trebui să îl dezactiveze
dacă nu îl folosește
Comparatorul analogic
În modul Idle ar trebui dezactivat dacă nu este folosit
În modul ADC Noise Reduction ar trebui dezactivat
Înafară de modurile Idle și ADC Noise Reduction, în
toate celelalte este dezactivat automat
18
Alți factori care contribuie la consumul
de energie
Modulele Brown-out Detector și Watchdog ar
trebui dezactivate de utilizator dacă nu sunt
folosite
Sursa internă de tensiune de referință este
menținută în funcționare dacă a fost selectată
pentru unul din modulele Brown-out Detector,
Comparator analogic sau ADC, chiar dacă aceste
module sunt dezactivate automat în anumite
moduri sleep
Este
recomandabil ca utilizatorul să dezactiveze
manual aceste module 19
Caracteristici tipice privind consumul de
energie
25
Caracteristici principale ARDUINO
26
Caracteristici principale ARDUINO
Majoritatea implementează pe
interfața de programare USB o
funcționalitate de tip serial-monitor:
codul poate trimite și recepționa
date către/de la PC folosind un
modul dedicat al mediului de
programare și interfața serială USART
Transferul codului se face cu ajutorul
unui bootloader care comunică cu PC
prin interfața serială USART 27
ARDUINO Uno
Bazată pe microcontrolerul ATMega Memorie Flash 32KB
328P, pe 8 biți Memorie EEPROM 1KB
14 pini de I/O digitali Memorie SRAM 2 KB
6 pini de I/O digitali cu PWM Frecvența procesorului: 16 MHz
6 pini de intrare pentru semnale Alimentare și programare prin cablu
analogice USB
1 port de comunicare serială UART
28
ATmega 328p
29
ATmega 328p
31
ARDUINO Mega 2560
Bazată pe uC ATMega2560, pe 8 biți Memorie Flash 256 KB
54 pini de I/O digitali Memorie EEPROM 4KB
15 pini de I/O digitali cu PWM Memorie SRAM 8 KB
16 pini de intrare pentru semnale Frecvența procesorului: 16 MHz
analogice Alimentare si programare prin cablu
4 porturi de comunicare serială USB
UART
32
ATmega 2560
33
ATmega 2560
35
Structura codului în ARDUINO
// put your main code here, to run Codul din loop() se repetă
repeatedly: continuu
40
Intrare/ieșire la ARDUINO
uC PLACĂ
41
Intrare/ieșire la ARDUINO
47
Intrare/ieșire la ARDUINO
50
Microcontrolere
Curs 10
2
Caracteristici principale ARDUINO
3
Tratarea întreruperilor externe la
ARDUINO
Pentru utilizarea unei întreruperi, acestei întreruperi trebuie să i se atașeze o funcție
de tratare (Interrupt Service Routine - ISR). În acest scop se folosește funcția
attachInterrupt()
Funcția digitalPinToInterrupt(pin) returnează codul intern al întreruperii disponibile pe
pinul pin al ARDUINO
ISR(ADC_vect)
{
//cod intrerupere
}
9
Generarea de semnale PWM
11
Generarea de semnale cu o anumită
frecvență
Funcția tone() produce pulsuri cu factor de umplere 50% și
frecvență variabilă
tone(pin, frequency) – produce un semnal de frecvența
‘frequency’ pe pinul ‘pin’, de durată nedefinită
tone(pin, frequency, duration) – produce un semnal de
frecvența ‘frequency’, pe pinul ‘pin’, cu durata de timp
‘duration’ în milisecunde
Funcția noTone(pin) oprește generarea semnalului pentru pinul
‘pin’. Doar un singur pin poate genera ton la un moment dat.
Dacă se dorește generarea de ton pe alt pin, în timp ce un ton
este activ, trebuie apelată funcția noTone() pentru oprirea
tonului activ
12
Folosirea ADC la ARDUINO
13
Folosirea ADC la ARDUINO
analogReference(tip)
tip poate fi
DEFAULT – tensiunea de alimentare
INTERNAL – referința internă de tensiune (nu este
valabil pentru ARDUINO Mega)
INTERNAL1V1 – referință internă 1,1V (doar pentru
ARDUINO Mega)
INTERNAL2V56 - referință internă 2,56V (doar pentru
ARDUINO Mega)
EXTERNAL – tensiunea de pe pinul AREF 14
Folosirea ADC la ARDUINO
16
Folosirea USART la ARDUINO
17
Folosirea USART la ARDUINO
void setup(){
Serial1.begin(38400);
Serial2.begin(19200);
25
Folosirea SPI la ARDUINO
30
Microcontrolere
Curs 11
2
Definirea caracteristicilor avansate
Se consideră că un uC are caracteristici avansate ale arhitecturii AVR 8 bit
dacă implementează cel puțin unul dintre următoarele elemente:
4
ATmega 2561
6
ATXmega 64A1U
7
ATXmega 64A1U
9
Spațiu extins pentru regiștri I/O
10
Spațiu extins pentru regiștri I/O
12
Spațiu extins pentru regiștri I/O
Instrucțiunile LD / ST
citește (LD) de la o locație de memorie cu adresa
indicată de pointerii X, Y sau Z într-un registru de uz
general
scrie(ST) la o locație de memorie cu adresa indicată
de pointerii X, Y sau Z dintr-un registru de uz general
accesul la un spațiu de memorie mai mare de 64KB
necesită utilizarea regiștrilor de tip I/O RAMPX, RAMPY
și RAMPZ
13
Spațiu extins pentru regiștri I/O
Instrucțiunile LD / ST
regiștri de tip I/O RAMPX, RAMPY și RAMPZ sunt automat concatenați cu
regiștri X, Y sau Z pentru a forma pointeri de 24 biți
Instrucțiunile pot folosi post incrementare sau pre decrementare, inclusiv pe
24 biți
14
Spațiu extins pentru regiștri I/O
Instrucțiunile LD / ST
clr r27
ldi r26,0x63
ldi r17,0x4A
st -X,r17 ; se scrie valoarea 0x4A la adresa RAM 0x62 15
Spațiu extins pentru regiștri I/O
17
Spațiu extins pentru regiștri I/O
20
Spațiu extins pentru regiștri I/O
REGISTER LOCATIONS
22
Exercițiu
ASM C
ldi r16,0b00001111 unsigned char *r_port=(unsigned char*)0x010B;
unsigned char *r_ddr=(unsigned char*)0x010A;
sts 0x010A,r16
ldi r16,0b11110000 *r_port = 0b00001111;
sts 0x010B,r16 *r_ddr = 0b11110000;
23
Memorii externe RAM/SDRAM
A15 A12 A8 A4 A0
0x8000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0x0000
27
Memorii externe RAM/SDRAM
A15 A12 A8 A4 A0
0xA1FF 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 1
0x21FF
28
Memorii externe RAM/SDRAM
0x0000 0x0000
Exemplu de
0x21FF
implementare 0x2200
0x21FF
0x2200
specială pentru
o memorie
externă RAM de
32KB
0x7FFF
0x7FFF
0x8000
0xA1FF
29
0xFFFF
Memorii externe RAM/SDRAM
30
Memorii externe RAM/SDRAM
Exemplu de utilizare a multiplexării
magistralelor de date/adrese pentru
ATmega2561:
uC pune biții de adresă A15:8 pe
magistrala de adrese dedicată
semnalul ALE comandă latchul în modul
transparent
uC pune biții de adresă A7:0 pe
magistrala de adrese comună cu
magistrala de date
semnalul ALE comandă latchul în modul
memorare
pentru scriere, uC pune biții de date D7:0
pe magistrala de date comună cu
magistrala de adrese
uC comandă citire sau scriere folosind 31
semnalul RD sau WR
Memorii externe RAM/SDRAM
32
Memorii externe RAM/SDRAM
33
Întrebări ?
34
Microcontrolere
Curs 12
2
Controler de întreruperi multinivel la
ATXmega
Caracteristici principale:
pentru fiecare sursă de întrerupere se poate aloca unul din
cele 3 niveluri de prioritate: redus, mediu, înalt. O
întrerupere de nivel superior va întrerupe execuția unei
rutine de întrerupere asociată cu o întrerupere pe niveluri
inferioare
sursele de întrerupere sunt definite într-o tabelă de
întreruperi, la fel ca în cazul ATmega32
implementează 2 variante de algoritmi pentru managementul
întreruperilor: static sau dinamic (round-robin)
producătorul uC poate defini Non-Maskable Interrupts – 3NMI
Controler de întreruperi multinivel la
ATXmega
Caracteristici principale:
NMI sunt surse de întrerupere care au prioritate absolută și se
execută chiar dacă bitul I din SREG are valoarea 0
NMI nu pot fi întrerupte de alte sursele de întrerupere
dacă apar mai multe NMI simultan, prioritizarea se face
întotdeauna în funcție de poziția din tabela de întreruperi, în
ordine descrescătoare începând de la prima poziție (la fel ca
la ATmega32)
4
Controler de întreruperi multinivel la
ATXmega
Schema bloc a controlerului de întreruperi
5
Controler de întreruperi multinivel la
ATXmega
Algoritmul de management
static:
este aplicabil pentru toate
nivelurile de prioritate
întreruperile cu același nivel sunt
prioritizate în funcție de poziția
din tabela de întreruperi, în
ordine descrescătoare începând
de la prima poziție (la fel ca la
ATmega32) 6
Controler de întreruperi multinivel la
ATXmega
Algoritmul de management
round-robin:
esteaplicabil doar pentru nivelul
redus de prioritate
vectorul de întrerupere cel mai
recent deservit primește cel mai
mic nivel de prioritate
7
Controler de întreruperi multinivel la
ATXmega
Exemplu de configurare a nivelului de întrerupere pentru modulul SPI
INTCTRL
8
Controler de întreruperi multinivel la
ATXmega
STATUS
CTRL
Caracteristici principale:
permite transferul de date între diferite zone de RAM
(inclusiv locații de RAM extern și spațiul de regiștri) cu
un consum minim de resurse ale CPU
4 canale independente care pot funcționa în paralel
se pot transfera până la 16 MB într-o singură tranzacție
posibilitate de resetare automată a adresei pentru
sursă și destinație
se pot genera întreruperi, separat pentru fiecare canal,
în caz de eroare și la finalizarea unui transfer
11
DMAC – Direct Memory Access Controller
Schema bloc:
12
DMAC – Direct Memory Access Controller
Organizarea transferului:
unitatea de bază a unui transfer se numește rafală
(burst)
dimensiunea unei rafale poate fi configurată la 1, 2, 4
sau 8 bytes
pe durata unei rafale DMAC are acces exclusiv la
magistrala de date a uC
magistrala de date este partajată cu CPU iar acesta are
prioritate în cazul unei solicitări de acces simultane cu
DMAC
13
DMAC – Direct Memory Access Controller
Organizarea transferului:
mai multe rafale sunt grupate în pachete (blocks) cu
dimensiune configurabilă de până la 64 KB
unul sau mai multe pachete succesive formează o tranzacție
(transaction) DMA
14
DMAC – Direct Memory Access Controller
Declanșarea transferului:
pentru fiecare canal poate fi definită o sursă de declanșare
(trigger)
în funcție de configurare, apariția unui trigger determină
inițierea unei tranzacții sau doar a unei rafale
canalul DMA este dezactivat automat la finalizarea unei
tranzacții și trebuie reactivat pentru a răspunde din nou la
trigger
primul trigger care apare în timpul unui transfer în derulare
este memorat, dar alte apariții ulterioare se vor pierde
15
DMAC – Direct Memory Access Controller
17
DMAC – Direct Memory Access Controller
Exemple de trigger:
lafinalizarea unei operații de criptare/decriptare
a modulului AES
lafinalizarea unei conversii a modulului DAC sau
ADC
la recepția datelor pe un modul USART
la atingerea valorii de prag de către un modul
timer
18
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Caracteristici principale:
permite comunicarea directă și semnalizarea între
periferice fără intervenția CPU sau folosirea de
întreruperi
timpi de semnalizare garantați
8 canale de semnalizare care pot opera în paralel
ceea ce permite transmiterea de 8 evenimente
simultan
19
Sistem de comunicare directă și semnalizare a
evenimentelor între periferice
Schema bloc:
20
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Definirea termenilor:
Event = schimbarea stării unui periferic (în
majoritatea cazurilor este echivalent cu o
întrerupere)
Eventgenerator = perifericul care generează un
eveniment
Event user = perifericul care folosește evenimentul
generat
21
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Definirea termenilor:
Event source = schimbarea de stare care generează
un eveniment
Event action = reacția unui event user la primirea
unui eveniment
Signalling event = eveniment care indică doar o
schimbare de stare
Data event = un eveniment care conține informații
suplimentare în afară de schimbarea de stare
22
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Definirea
termenilor:
23
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Evenimente software:
Generate în funcție de perechea de biți de pe
aceeași poziție din regiștri DATA și STROBE
Pozițiaperechii de biți corespunde canalului pe
care se generează evenimentul
Scrierea
în registrul STROBE declanșează
evenimentul
mai întâi se scrie în DATA și apoi în STROBE
24
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
Evenimente software:
25
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
26
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
EVCTRL
27
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
28
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
EVCTRL
29
Sistem de comunicare directă și semnalizare
a evenimentelor între periferice
30
Caracteristici principale ale arhitecturii AVR 32 bit
31
Caracteristici principale ale arhitecturii
AVR 32 bit
Regiștrii cu dimensiunea de 32 biți
15 regiștri de uz general
Stack Pointer, Program Counter și Link Register sunt
implementați ca regiștri de uz general
Multiple niveluri de prioritate la întreruperi
Contexte de execuție privilegiate și neprivilegiate
Instrucțiuni DSP
Modul Memory Protection Unit – MPU sau Memory
Management Unit - MMU
32
Regiștri folosiți frecvent AVR 32 bit
Denumire Descriere
R0 ... R14 Folosiți ca operanzi în instrucțiuni
PC Program Counter, echivalent cu R15
SP Stack Pointer, echivalent cu R13
LR Link Register, echivalent cu R14. Memorează adresa de
retur din subrutină
SR Status Register
RSR Return Status Register. Memorează SR al contextului
curent la comutarea de context
RAR Return Address Register. Memorează SP al contextului
33
curent la comutarea de context
Microarhitecturi ale arhitecturii AVR 32 bit
35
Contexte de execuție AVR 32 bit
36
Registrul de stare AVR 32 bit
37
Registrul de stare AVR 32 bit
38
Registrul de stare AVR 32 bit
39
Implementarea regiștrilor de uz general
pentru AVR 32A
40
Implementarea regiștrilor de uz general
pentru AVR 32B
41
Exemple de instrucțiuni AVR 32 bit
43
Exemple de instrucțiuni AVR 32 bit
44
Exemple de instrucțiuni AVR 32 bit
45
Întrebări ?
46