Documente Academic
Documente Profesional
Documente Cultură
comutatoare
1. Introducere
Masa (Gnd)
1
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
de limitare a curentului, către masă, urmând să fie aprinse când pinul din portul respectiv este in
„1”.
Schema este „complicată” intenţionat, de exemplu prin conectarea LED-urilor la pini din
porturi diferite, pentru a ilustra câteva tehnici elementare software de manipulare a „biţilor”.
Se va lansa aplicaţia ISIS 7 care este de fapt editorul de scheme si mediul integrat de
simulare cu : Start -> All Programs -> Proteus 7 Professional -> ISIS 7 sau prin dublu Click pe
Icon-ul de pe desktop. După lansare răspundeţi cu No la cele 2 ferestre interogative (exemple si
terminarea subscripţiei). In meniul File se alege opţiunea New Design si se alege formatul
Default.
2
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
spaţiul de lucru
3
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Pentru a alege/încărca componentele (piesele) de care avem nevoie utilizăm butonul Pick
Component (P) sau alegem din meniul Library-> Pick Device/Symbol
4
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Alegeţi componenta si selectaţi OK. Se va observa cum componenta este adăugată in lista
curentă de componente:
Odată componentele plasate in lista curentă ele pot fi reutilizate (luate direct de aici).
5
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Atenţie, obiectele plasate pe spaţiul de lucru si selectate (Click, simbolul trece in culoarea roşie)
pot fi editate (rotire, oglindire si multe altele), cu Click Dreapta care va deschide un meniu de
editare (vezi L_1_2..).
Comutatorul SW1 îl alegeţi din biblioteca „Switches & Relays”, categoria „Switches” si
tipul „SW-SPST-MOM”; este un comutator interactiv, monopolar, cu acţiune momentană (gen
tastă sau push - buton) .
După ce aţi plasat si orientat corespunzător piesele in spaţiul de lucru, urmează legarea
lor. Ducând pointerul mouse-ului pe un terminal de componenta, pointer-ul (indicatorul) se
transformă intr-un creion. Asta înseamnă că am trecut in modul de trasare legături (fire intre
componente). Se poate trece in acest mod si folosind din Toolbar (Junction Mode Dot)
ATENTIE: Dacă aţi făcut vreo greşeală de editare dramatică, gen şters 3 componente si 7
fire cu un singur Click, nu uitaţi că puteţi reveni la starea anterioară, dacă apăsaţi imediat
CTRL-Z !
6
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Deschideţi AVR STUDIO 4 si creaţi un proiect de tip Win AVR (AVR GCC). Atenţie la
setările proiectului!
7
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Codul C prezentat ca exemplu, unul elementar, va „plimba” un LED aprins sau stins
(funcţie de starea lui SW1), de la L1 către L8 si apoi invers, procesul reluându-se intr-o buclă
infinită. Introduceţi (editaţi) codul sursa următor:
/*------------------------------------------------------------------------
;configuratie hard sistem (conexiuni)
;------------------------------------------------------------------------
;Intrari:
;SW1 - PD2
;Iesiri:
;LED1 - PD4 LED2 - PD5 LED3 - PD6
;LED4 - PB0 LED5 - PB1 LED6 - PB2 LED7 - PB3 LED8 - PB4
*/
// Un blinky mai complicat...
//plimba un LED stanga/dreapta!!
//LED plimbat este aprins/stins, functie de starea lui SW1!!
#include <avr/io.h>
//o functie de intarziere software, care executa doar un NOP
//3.5usec la fosc=4mhz
void wait (void)
{
asm volatile ("nop"::); //volatile pt a nu fi eliminata de compilator!
}
//progr. principal
int main (void)
{
unsigned char i;
unsigned long j;
// initializare porturi
// PD4, PD5, PD6 definiti ca iesiri
DDRD |= ( 1 << DDD4 | 1 << DDD5 | 1 << DDD6);
//pini PB0, PB1,PB2,PB3,PB4 definiti ca iesiri
DDRB |= (1 << DDB0 | 1 << DDB1 | 1 << DDB2 | 1 << DDB3 | 1 << DDB4);
/* iesiri in 1 LED-uri initial aprinse */
8
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
//apoi invers de la L8 la L1
for (i=0x80; i>0x01; i>>=1)
{
asm volatile("nop");
if((PIND & (1 << PD2))) // asa testam daca pinul e in "1"
{ //pinul e in "1" SW1 ne apasat (deschis)
PORTD = ~i<<4;
PORTB = ~i>>3;
}
else //pinul e in "0" , SW1 apasat
{
PORTD = i<<4;
PORTB = i>>3;
}
//intarziere intre 2 deplasari L8 ->L1
for (j=0; j<30000; j++) wait();
}
}
}
9
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Atenţie, in urma compilării si link- editării cu succes a codului sursa (Build, Build sau
Rebuild All) ne va interesa fişierul rezultat de tip (cu extensia) .elf , executable and linkable
file, nu fişierul .hex. In exemplul nostru el se va numi blinkyX.elf si se va găsi in acelaşi
subdirector al proiectului AVR Studio/WinAVR: .../default.
4. Simularea propriu-zisă
10
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
11
L 2 - AVR Studio, WinAVR, AVR ATiny 2313, Proteus VSM (ISIS 7): intrări si ieşiri numerice, LED-uri si
comutatoare
Markerii pătraţi indică starea logică (nivelul logic) pentru terminalele respective:
albastru („0”, L) si roşu („1”, H), fie că este vorba de pini ai microcontrolerului sau borne
dispozitive, fiind utili pentru depanarea simulării. De exemplu, putem avea situaţia in care
observăm că starea logică a pinului evoluează corect dar LED-ul nu se aprinde, dacă in loc de o
rezistenţă de 220 Ohmi am pus una de 220KOhmi !
In final, încercaţi să puneţi in evidenţă efectul modificării întârzierii intre două deplasări
succesive ale LED-ului.
Opriţi simularea.
In codul C sursă (proiectul AVR Studio/WinAVR), pentru cele 2 linii:
for (j=0; j<20000; j++) wait(); modificaţi valoarea de 20000 in 100000, si apoi
reconstruiţi aplicaţia (Build, Re Build All)
Porniţi din nou simularea, observând creşterea de 5 ori a întârzierii.
TEMA L2 Modificaţi ambele proiecte (AVR Studio/WinAVR si Proteus VSM) astfel încât să
fiţi capabili să repetaţi o simulare in Proteus VSM in care:
- Cele 8 LED-uri să fie conectate pe pinii microcontrolerului astfel: D1-PB0, D2-PB1, …,
D7-PB6, D8- PB7
- Comutatorul SW1 să fie conectat pe PD0
- Când SW1 este închis (acţionat/apăsat) „plimbă” un LED stins, când SW este deschis (nu
este acţionat/apăsat) „plimbă” un LED aprins
12