Documente Academic
Documente Profesional
Documente Cultură
- Arhitectura RISC
- 32 registre d elucru de 8 biti
- Miltiplicator hardware
- Arhitectura Hardvard a spaiului (memorie intern: 16 koctei program
flash, 1 koctet data SRAM, 512 octei data EPROM)
- Frecvena de lucru poate fi controlat prin software de la 0 la 16 MHz
- Procesoarele sunt prevzute cu o gam larg de dispositive I/O i de
periferice incorporate
- Timer programabil cu circuit de prescalare
- Surse de ntrerupere interne i externe
- Timer de urmrire (watchdog) cu oscillator independent
- Interfaa JTAG (standrdul IEE1149.1 Compliant)
- 6 moduri de operare Sleep i Power Down pentru economisirea energiei
- Oscilator integrat RC
- Densitate mare acodului i compatibilitate integral a codului ntre membrii
familiei
- Procesoarele sunt disponibile n capsule variate, de la circuite cu 8 pini la
procesoare cu 68 de pini
- Familia AVR beneficiaz de existena unui set unitar de instrumente
software pentru dezvoltarea aplicaiilor.
-Memoria microcontrolerului.
Structura unui program scris pentru un microcontroler este puin diferit de structura programelor
scrise pentru un calculator de uz general.Primele linii dintr-un program vor reprezenta bibliotecile pe
care le utilizm n cadrul aplicaiei.Urmtoarea seciune va fi reprezentat de declararea variabilelor
globale i de declararea/definirea funciilor program.Apoi urmeaz funcia main, funcia principal din
program, cea care este prima executat la rularea programului.n aceast funcie mai nti se
declar variabilele locale, dac este nevoie ,apoi se fac setrile diferitelor funcii ale
microcontrolerului.n ultima parte a funciei main se va crea o bucl infinit lucru care n mod normal
nu ar fi dorit n programele scrise pentru calculatoarele personale.n aceast bucl are loc ntreaga
parte de prelucrare a datelor, restul fiind partea de setare.Atenie mare, funciile microcontrolerului
nu nsemn acela lucru cu funciile programului.De exempu pentru chipul ATMega8 programul ar
trebui s urmeze modelul:
Cnd microcontrolerul este pornit mai nti se va realiza setrile funciilor chip-ului prin regitrii de
setare apoi el va cicla codul din bucla while pn cnd apare un eveniment neateptat cum ar fi
oprirea sursei de alimentare sau apariia unei ntreruperi.
Avatajul folosirii wizardului din CodeVision AVR este c el genereaz cod pentru structura de mai
sus ,setrile micorcontrolerului putnd fi fcute vizual.De asemenea wizardul ofer i explicaii
referitoare la setrile pe care le-a realizat.
Dup ce ai fcut toate conexiunile urmeaz s conectm placa la portul serial.Acest lucru se face
printr-un cablu de legtur serial.Portul COM1 l gsii n spatele calculatorului el artnd cam aa:
http://invataelectronica.blogspot.md/2011/08/convertorul-analog-digitalad.html
Dac ne uitm pe schema general avem urmtoarea configuraie:
Dac totul a decurs bine pn aici putei simula aplicaia fr nici o problem.La
apsarea butoanelor ar trebui s se aprind LED-urile corespunztoare.Fizic
aplicaia o putei vedea aici:
Urmtoarea aplicaie este ceva mai complex, ea avnd rolul simulrii unei
instalaii luminoase pentru pomii de crciun la care vom avea posibilitatea alegerii
unui program de funcionare prin apsarea unor butoane.De data asta vom folosi
tot portul B ca port de intrare la care vom lega la primii 4 pini, 4 butoane cu care
vom alege modul de funcionare iar ca port de ieire vom folosi portul D la pinii
cruia vom lega 8 LED-uri.Dac se apas primul buton, adic bitul 0 al registrului
PINB este 1 logic, vom avea modul 1 de funcionare,dac se apas butonul 2, adic
bitul 1 al registrului PINB este 1 logic,vom avea modul 2 de funcionare i tot aa
pn la butonul 4.Dac nu este apsat nici un buton se vor activa pe rnd toate cele
4 moduri.Dac se apas dou sau mai multe butoane nu se va ntmpla
nimic.Programul i schema electric le putei downloada de la seciunea
Download-Porturi-Aplicaie 2
Pentru scrierea codului setai de data aceasta toi pinii portului D ca fiind pini de
ieire.
Pentru o lizibilitate mai buna a codului am ales s am cte o funcie pentru fiecare
mod de funcionare,funcii care sunt plasate naintea funciei main.Pentru modul 1
codul este urmtorulul:
void mod1(void)
{
PORTD = 0b00000001;
while(PORTD)
{
delay_ms(100);
PORTD = PORTD<<1;
}
}
void mod2(void)
{
PORTD = 0b10000000;
while(PORTD)
{
delay_ms(100);
PORTD = PORTD>>1;
}
}
n modul 3 vom aprinde mai nti led-urile din mijloc (pinii 3 i 4), apoi vom
stinge led-urile din mijloc aprinznd led-urile urmtoare( pinii 2 i 5) i tot aa
pn la aprinderea led-urilor 1 i 8(pinii 0 i 7).
void mod3(void)
{
PORTD = 0b00011000;
delay_ms(100);
PORTD = 0b00100100;
delay_ms(100);
PORTD = 0b01000010;
delay_ms(100);
PORTD = 0b10000001;
delay_ms(100);
}
Modul 4 se va comporta exact invers modului 3,aprinznd ledurile din exterior spre
interior.
void mod4(void)
{
PORTD = 0b10000001;
delay_ms(100);
PORTD = 0b01000010;
delay_ms(100);
PORTD = 0b00100100;
delay_ms(100);
PORTD = 0b00011000;
delay_ms(100);
}
while(1)
{
switch(PINB)
{
//se apasa primul buton si se seteaza modul 1 de functionare
case 0b00000001:
mod1();
break;
//se apasa al doilea buton si se seteaza modul 2 de functionare
case 0b00000010:
mod2();
break;
//se apasa al treilea buton si se seteaza modul 3 de functionare
case 0b00000100:
mod3();
break;
//se apasa al patrulea buton si se seteaza modul 4 de functionare
case 0b00001000:
mod4();
break;
//daca nu s-a apasat nici un buton se vor parcurge toate cele 4 moduri
case 0b00000000:
mod1();
mod2();
mod3();
mod4();
//daca s-a apasat mai multe butoane nici un mod va fi activ
default:
PORTD = 0x00;
}
};