Sunteți pe pagina 1din 31

Microcontrolere

Curs 2

Ș.l. dr. ing. Mihai Niculescu


Cuprins

 Alimentarea microcontrolerelor
 Dezvoltarea aplicațiilor cu microcontrolere
 Programarea unui microcontroler
 Prezentare generală ATmega32
 Accesarea memoriei la ATmega32

2
Alimentarea uC

3
Alimentarea uC

 Se mai oferă uneori ca facilitate o


protecţie la scăderea accidentală (în
anumite limite) a tensiunii de
alimentare ("brownout protection").
La scăderea tensiunii de alimentare
sub o anumită limită ("brownout
voltage") microcontrolerul este
iniţializat (resetat) şi ţinut în
această stare atâta timp cât
condiţia respectivă persistă.
4
Controlul puterii consumate

 Majoritatea microcontrolerelor pot fi trecute sub control


soft în stări speciale cum ar fi: în aşteptare (STAND-BY),
inactiv ("IDLE") sau oprit ("HALT", "POWER DOWN"),
denumirile acestor stări diferind şi funcţie de fabricant.

 În aceste moduri starea CPU, conţinutul RAM-ului intern,


starea I/O-urilor poate fi conservată în condiţiile unei
tensiuni de alimentare reduse (faţă de cea nominală) şi
deci al unui consum mult redus.
5
Dezvoltarea şi testarea aplicaţiilor
 Simulatoarele
 Un simulator este un program care rulează programul
microcontrolerului - implementează un microcontroler virtual -
folosind un sistem de calcul gazdă - host (cum ar fi un PC).
Programul se poate executa pas cu pas iar conţinutul variabilelor şi
regiștrilor poate fi vizualizat şi modificat.

 Programele de depanare ("debbugers") rezidente


 Sunt programe care rulează –sunt rezidente- pe maşina ţintă
(microcontrolerul) oferind facilităţi de depanare similare
simulatorului. Interacțiunea cu utilizatorul este realizată pe un
sistem gazdă (PC) conectat cu uC prin intermediul unei interfețe
de comunicații standard (de ex. JTAG). 6
Dezvoltarea şi testarea aplicaţiilor
 Emulatoarele In Circuit (ICE-In Circuit Emulators)
 Presupun existenţa unui hardware dedicat (şi complicat !) care
înlocuieşte practic microcontrolerul (se conectează în locul acestuia în
sistemul pentru care se dezvoltă aplicaţia), în acelaşi timp fiind
disponibile toate facilităţile descrise anterior şi altele suplimentare.
Permit un control total al maşinii ţintă în timp real

 Simulatoarele de sistem
 Reprezintă o categorie aparte de simulatoare destinate simulării cât mai
exacte a sistemului şi a aplicaţiei în ansamblu, cu alte cuvinte a
microcontrolerului împreună cu dispozitivele hardware externe. Ele
integrează de regulă şi un simulator SPICE.
 Cel mai cunoscut este Proteus VSM (Virtual System Modelling) al firmei
7

Labcenter Electronics (http://www.labcenter.co.uk/)


Programarea unui microcontroler

 Limbaje utilizate: Asamblare, C (diverse variante), Basic


 Limbajul de asamblare:
 Implementare ușoară pentru programe de mici dimensiuni
 Cea mai rapidă execuție a codului
 Cel mai compact cod
 Implementare complicată pentru programe de mari
dimensiuni
 Analiza completă a resurselor utilizate
 Portare mai dificilă a codului

8
Programarea unui microcontroler

 Limbajul C:
 Execuție rapidă a codului
 Relativ ușor de portat
 Multe compilatoare disponibile
 Dificil
de utilizat fără experiență în
programare

9
Programarea unui microcontroler

 Etape

Sistem gazdă Loader HW+SW Sistem cu uC

Cross toolchain:
compilare,
debugging,
integrare

10
Programarea unui microcontroler

 Programele sunt scrise în asamblare sau limbaje


de nivel înalt
 Codul trebuie ”tradus” în limbaj-mașină
 Traducerea în cod-mașină se face în mai multe
etape - toolchain
 Arhitectura sistemului gazdă este diferită de
arhitectura sistemului cu uC – cross toolchain

11
Programarea unui microcontroler

 Etape în (cross) toolchain


Preprocessor
Code generator
Optimisation ?
Assembler
Linker
12
Programarea unui microcontroler

 Preprocessor
Eliminare comentarii
Explicitare macro
Adăugare biblioteci

13
Programarea unui microcontroler

 Code generator: generează codul în asamblare


 Criterii de optimizare:
 Dimensiune executabil
 Viteză de execuție
 Utilizarea memoriei
 Consumul de energie
 Assembler: generează codul-mașină
 Linker: Lipește porțiunile separate de cod
14
Programarea unui microcontroler
Limbaj C Limbaj asamblare
#include <avr/io.h> CLR R1
OUT 0x3F,R1
int main(void) LDI R28,0x5F
{ LDI R29,0x08
OUT 0x3E,R29
uint8_t a=1;
OUT 0x3D,R28
while (1) CALL 0x00000036
{ a=a+3; JMP 0x0000003A
PORTA=a; JMP 0x00000000
}} LDI R24,0x01
Fișier .hex SUBI R24,0xFD
:100000000C942A000C9434000C9434000C943400AA OUT 0x1B,R24
:100010000C9434000C9434000C9434000C94340090 RJMP PC-0x0002
:100020000C9434000C9434000C9434000C94340080
:100030000C9434000C9434000C9434000C94340070
:100040000C9434000C9434000C9434000C94340060
:100050000C94340011241FBECFE5D8E0DEBFCDBF25
:100060000E9436000C943A000C94000081E08D5FF1
15
:080070008BBBFDCFF894FFCF1C
:00000001FF
Programarea unui microcontroler

16
Programarea unui microcontroler

17
Familia de microcontrolere
Microchip/Atmel AVR
 Structură RISC
 Execuție 1 instrucțiune / ciclu
 32 regiștri de uz general
 Arhitectură Harvard
 Tensiune de alimentare1,8 – 5,5V
 Gamă largă de dispozitive
 Număr de pini variat

18
Familia de microcontrolere
Microchip/Atmel AVR
 tinyAVR
 1–8kB memorie program
 număr redus de pini
 megaAVR
 4–256kB memorie program
 set extins de instrucțiuni (înmulțire)
 XMEGA
 16–384kB memorie program
 DMA, suport pentru criptografie
 AVR specific pentru aplicații
 megaAVR cu interfețe particulare: LCD,USB, CAN etc. 19
Microcontrolerul ATmega32
 32KB de memorie Flash reinscriptibilă pentru stocarea
programelor
 2KB de memorie RAM
 1KB de memorie EEPROM
 două numărătoare/temporizatoare de 8 biţi
 un numărător/temporizator de 16 biţi
 convertor analog – digital de 10 biți, cu intrări multiple
 un comparator analogic
 un modul USART pentru comunicaţie serială (port serial)
 32 de linii I/O organizate în patru porturi (PA, PB, PC, PD)20
Microcontrolerul ATmega32
 Dispunerea pinilor

21
Microcontrolerul ATmega32
 Pipeline instrucțiuni

22
Microcontrolerul ATmega32
 Structura internă

23
Microcontrolerul ATmega32
 Structura CPU

24
Microcontrolerul ATmega32
 Secvența de execuție a instrucțiunilor de către ALU

25
Registrul de stare

I Global Interrupt Enable


 Exemple de instrucțiuni
T T-bit (can be used for bit copy)
dedicate SREG:
H Half Carry Flag
 sec, clc
S Sign Bit (N XOR V)
V Two's Complement Overflow Flag
 set, clt

N Negative Flag  sei, cli


Z Zero Flag  brcc, brcs
26
C Carry Flag
Memoria Flash
 Instrucțiunile au 16 sau 32 biți
 Organizată în 16 K x 16 biți = 32 KB
 Program Counter pe 14 biți

27
Memoria EEPROM

 1KB organizat ca spațiu de memorie separat


 Regiștri dedicați pentru configurare și scriere/citire

28
Memoria RAM
 32 regiștri de uz general și
64 regiștri I/O sunt mapați
ca locații RAM
 5 moduri de acces la
memorie:
 Direct
 Indirect cu offset
 Indirect
 Indirect cu pre-
decrementare
 Indirect cu post-
decrementare 29
Regiștri de uz general

30
Întrebări ?

31

S-ar putea să vă placă și