Monday, 8 November 2010
Proiecte de an orientate spre Automotive Engineering
Proiecte de an orientate spre Automotive Engineering
Tuesday, 13 July 2010
Indrumar MP Laborator
Lucrare de laborator Nr. 1
Tema: Iniţierea în programa Assembler, porturi de I/O.
Scopul lucrării:
Să se studieze instrumentele de proiectare pentru programarea microcontrolerelor (AVR Studio, Proteus) şi să se creeze deprinderea scrierii programei în assembler. Să se studieze iterfeţa de comunicare cu mediul extern, I/O Port.
Expunerea problemei: În cadrul acestui laborator ne propunem sa realizăm un program cu ajutorul AVR Studio care ar permite dirijarea unui led prin intermediul unui buton. Ledul se va aprinde la apăsarea butonului. Simularea acestei instalaţii va fi realizată cu ajutorul programului Proteus 7.1. În cadrul construcţiei vom folosi controllerul Atmega16, ce lucrează pe 8 biţi, care va dirija procesul de aprindere / stingere a ledului la acţiunea butonului.
Consideraţii teoretice:
Arhitectura ATmega16
ATmega 16 este un microcontroler CMOS de 8 – biţi de mică putere bazat pe arhitectura RISC AVR imbunatăţită.
Dispune de un set de 131 instructiuni si 32 de registre de uz general. Cele 32 de registre sunt direct adresabile de Unitatea Logica Aritmetica (ALU), permitand accesarea a doua registre independente intr-o singura instructiune. Se obtine astfel o eficienta sporita in executie (de pana la zece ori mai rapide decat microcontrorelerele convetionale CISC).
ATmega16 este un microcontroler RISC pe 8 biţi realizat de firma Atmel. Caracteristicile principale ale acestuia sunt:
- 16KB de memorie Flash reinscriptibilă pentru stocarea programelor
- 1KB de memorie RAM
- 512B de memorie EEPROM
- două numărătoare/temporizatoare de 8 biţi
- un numărător/temporizator de 16 biţi
- conţine un convertor analog – digital de 10 biti, cu intrări multiple
- conţine un comparator analogic
- conţine un modul USART pentru comunicaţie serială (port serial)
- dispune de un cronometru cu oscilator intern
- oferă 32 de linii I/O organizate în patru porturi (PA, PB, PC, PD).
Structura internă generală a controlerului este prezentată în Figura 1. Se poate observa că există o magistrală generală de date la care sunt conectate mai multe module:
- unitatea aritmetică si logică (ALU)
- registrele generale
- memoria RAM si memoria EEPROM
- liniile de intrare (porturile – I/O Lines) si celelalte blocuri de intrare/iesire. Aceste ultime module sunt controlate de un set special de registre, fiecare modul având asociat un număr de registre specifice.
Fig. 1 Diagrama generală a MCU
ATmega16 conţine 32 de registre de uz general si 64 de registre speciale pentru modulele I/O. Aceste registre sunt mapate la adrese din memoria RAM cuprinse între 0000h si 005Fh.
Descrierea pinilor: VCC – Sursa de curent
GND – Masa
Port A (PA7 .. PA0)
Port-ul A serveşte drept port de intrări analogice pentru Convertorul A/D. Port-ul A serveşte de asemenea şi ca un port bidirecţional I/O de 8 biţi, în cazul în care Convertorul A/D nu este folosit. Pinii de port pot fi conectaţi opţional
Port B (PB7.. PB0)
Portul B este un port I/O de 8 biţi bidirecţional cu rezistori interni (opţionali). Buffer-ele de ieşire ale Port-ului B au caracteristici de amplificare. Port-ul B îndeplineşte de asemenea funcţii speciale ale microcontrolerului ATmega 16.
Port C (PC7…PC0)
Portul C este un port I/O de 8 biţi bidirecţional cu rezistori interni (opţionali).Buffer-ele de ieşire ale Port-ului C au caracteristici de amplificare. Dacă interfaţa JTAG (de depanare) este activată , rezistorii pinilor PC5(TDI), PC3(TMS) si PC2(TCK) vor fi activaţi, chiar dacă are loc o resetare. Port-ul C îndeplineşte de asemenea funcţii ale interfeţei JTAG şi alte funcţii speciale ale ATmega 16.
Port D (PD7…PD0)
Portul D este un port I/O de 8 biţi bidirecţional cu rezistori interni conectaţi opţional
Reset
Un nivel scăzut la acest pin mai mare ca durata decât o valoare prestabilita, va genera o iniţializare.
XTAL 1: Intrare pentru amplificatorul inversor al Oscilatorului;
XTAL 2: Ieşire pentru amplificatorul inversor al Oscilatorului.
AVCC: AVCC este pin de alimentare pentru Port-ul A si Convertorului A/D. Trebuie conectat extern
AREF :AREF este pinul de referinţă analogica pentru Convertorul A/D
PORTURILE I/O
ATmega16 dispune de 32 de linii de I/O grupate în patru porturi de 8 biţi. Porturile sunt denumite cu literele A, B, C si D. Fiecare pin al oricărui port se poate seta individual ca intrare sau ieşire fără să afecteze ceilalţi pini. In plus, anumiţi pini se pot utiliza pentru funcţii speciale ale microcontrolerului. In Figura 3 este prezentată structura generală a unui pin.Toţi cei 32 de pini au fiecare câte o rezistenţă „pull-up” care poate fi activată sau dezactivată.

Regiştrii DDRx stabilesc dacă un pin este intrare sau ieşire. Astfel, un bit cu valoarea „1” în registrul DDRx face ca pinul corespunzător să fie considerat ieşire; altfel pinul va fi intrare.
Regiştrii PORTx sunt utilizaţi pentru a scrie o valoare în portul corespunzător iar regiştrii PINx se folosesc pentru a citi valoarea prezentă pe pinii unui port.
Activarea sau dezactivarea rezistenţelor „pull-up” este determinată de bitul PUD din registrul SFIOR si de valorile regiştrilor PORTx si DDRx aşa cum se poate observa în tabelul următor.

Toate porturile AVR au funcţia Citeşte – Modifică – Scrie atunci când sunt folosite ca porturi I/O digitale generale. Asta înseamnă ca direcţia unui pin port poate fi schimbata fără a schimbă în mod intenţionat direcţia oricărui alt pin cu comenzile SBI si CBI. Aceeaşi regula se aplica când se schimba valoarea dive-ului (dacă este configurat ca output) sau a activării / dezactivării rezistorilor ( dacă sunt configuraţi ca input). Fiecare buffer de input are caracteristici similare de drive atât cu capacitatea sursei cât şi cu sincronizarea. Driver-ul pinului este îndeajuns de puternic ca sa activeze displayul LED direct. Toţi pinii port au rezistori care pot fi selectaţi individual cu o sursa suplimentara de tensiune cu rezistentă invariabilă.
Toţi pinii I/O au diode de protecţie atât
Toţi regşitrii şi referinţele de bit din aceasta secţiune sunt scrişi în formă generală. Un “x” mic reprezintă litera care denumeşte portul şi un “n” mic reprezintă numărul bitului. Când se utilizează registrul sau biţii intr-un program , trebuie sa fie folosita forma exacta. Adică, PORTB3 pentru bitul numărul 3 în Portul B, prezentat general ca PORTxn.
Trei locaţii de adrese de memorie I/O sunt alocate pentru fiecare port;
- una pentru fiecare registru de date - PORTx,
- Registrul direcţiei datelor – DDRx,
- port de intrare – PINx. Locaţia pinilor port intrare este read only, in timp ce Registru de Date si DDR sunt read si write. In plus, bitul PUD (dezactivare pull-up) din SFIOR dezactivează funcţia pull-up pentru toţi pinii din toate porturile când este setat.
Majoritatea pinilor au funcţii alternative pentru caracteristicile periferice ale dispozitivului.
Este de remarcat faptul ca activarea funcţiilor alternante ale unor pini port nu afectează utilizarea altor pini din port ca I/O general digital.
Iniţializarea în AVRStudio
AVRStudio este un mediu de software dezvoltat de Atmel pentru înscrierea în limbaj de asamblare, compilarea şi simularea de programe destinate microcontrolerelor produse de această companie. Orice program scris în AVRStudio este conţinut într-o structură de tip proiect. Paşii care trebuie urmaţi pentru a crea un proiect nou sunt:1)după lansarea programulu apare o fereastră similară cu cea din figura se va alege opţiunea „New Project” :


În acest moment se va afişa o fereastră asemănătoare cu cea din figura 3. Se bifează opţiunile „Create Initial File” şi „Create Folder”, se completează câmpurile „Project Name” şi „Location” iar apoi se apasă butonul „Next”

Înainte de a scrie programul propriu-zis, se introduce următoarea linie: .include”m16def.inc”Această linie este o directivă de compilare care indică numele fişierului ce conţine descrierea regiştrilor şi caracteristicilor microcontrolerului.
După scrierea programului, se aleg opţiunile „Save Project” şi „Built” din meniul „Project”. Orice erori de sintaxă vor fi semnalate de compilator .Pentru a scrie un nou program, din meniul „Project” se va alege opţiunea „Project Wizard”. După ce se apasă butonul „OK” din fereastra de dialog apărută, se vor repeta paşii prezentaţi mai sus .
Mersul lucrării:

2) Următorul pas este crearea ciruitului în programul de simulare PROTEUS, unde se demonstrează cum funţionează porturile de I/O şi respectiv programul microcontrolerului.
Apăsarea unei taste va duce la aprinderea LED-ului corespunzător tastei.

3) Scrierea programului propriu-zis, conform schemei bloc create.
Listingul Programului:
--------------directive de procesare-------------
.include "m16def.inc" ; accesarea bibliotecii ”m16def.inc”
.cseg ; se alege segmentul codului de program
.org 0 ; se seteaza originea programului la la adresa o
.list ; activarea listingului
-------------- partea de iniaţilizare------------------
; setarea portului A ca port de intrare
LDI R16, 0x00 ; incarca in registrul r16 valoarea 0x00
OUT DDRA, R16 ; incarca in registrul DDRA valoarea
; registrului R16
; activarea rezitenţelor „pull-up”
LDI R16, 0xFF ; incarca in registrul r16 valoarea 0xFF
OUT PORTA, R16 ; incarca in registrul PORTA valoarea
; registrului R16
; setarea portului B ca port de iesire
LDI R16, 0xFF ; incarca in registrul r16 valoarea 0xFF
OUT DDRB, R16 ; incarca in registrul DDRB valoarea
; registrului R16
; dezactivarea rezitenţelor „pull-up”
LDI R16, 0x00 ; incarca in registrul r16 valoarea 0x00
OUT PORTB, R16 ; incarca in registrul PORTB valoarea
; registrului R16
---------------------partea de procesare-------------
main: ; eticheta procedurii principale
IN R16, PINA ; incarca in registrul r16 datele de intrare
; din portul A
OUT PORTB, R16 ; incarca in registrul PORTB datele din
; registrul R16
rjmp main ; setează PC la adresa etichetei „main”
4) Compilarea programului, şi verificarea funcţionării sale (executării) pas cu pas cu scopul de a găsi şi elimina erorile.
6) Prezentarea şi descrierea instrucţiunilor utilizate
LD R1, R2 – încarcă datele din registrul R2 în registrul R1
LDI R1, K - încarcă în registrul R1 o constantă
IN R1, PINx – citeşte în registrul R1 datele de intrare de
OUT PORTx, R1 – încarcă în registrul de ieşire a potului x datele din registrul R1
Friday, 2 July 2010
Prima intilnire cu participantii la proiect
Prima intilnire cu participantii la proiect
Wednesday, 23 June 2010
Super Automobilul asteapta sa fie supus experimentelor
Super Automobilul asteapta sa fie supus experimentelor
Tuesday, 8 June 2010
Am nevoie de ajutorul Vostru
Apelez ajutorul vostru, si in special al celor care sunt interesati de proiectul "AUTOMOTIVE"
(http://zaz-to-fly.blogspot.com/)
Rog sa ma ajutati in cautatrea obiectului de lucru la un pret accesibil,
adica, un automobil ZAZ in stare normala la pretul de 1500 - 2000 lei
Automobilul trebuie achizitionat (termen limita) pina la inceputul practicii de vara
daca aveti informatie unde poate fi gasit, rog sa ma anuntati
cu un mail la adresa:
a.bragarenco@gmail.com
sau la telefonul:
079 99 32 55
Rog sa faceti public acest anunt si pentru colegii care nu au primit acest email
Reamintesc:
Ideea proiectului consta in dotarea automobilului cu sisteme electronice/programe
proiectate de catre participantii la proiect.
Proiectul ca obiectiv principal acumularea experientei practice in domeniul sistemelor cu microcontrolelor
cei care mai sunt interesati sunt bineveniti la participarea in acest proiect.
Participarea in proiect poate fi, dupa dorinta, inregistrata ca loc pentru practica de vara.
deci chiar daca aveti practica in alta parte, oricum puteti participa in proiect.
inregistrarea pentru participare se poate face prin raspunderea la email si prin adaugarea unui comentariu in blog http://zaz-to-fly.blogspot.com/
se accepta participanti de la orice an de studii.
Am nevoie de ajutorul Vostru
Apelez ajutorul vostru, si in special al celor care sunt interesati de proiectul "AUTOMOTIVE"
(http://zaz-to-fly.blogspot.com/)
Rog sa ma ajutati in cautatrea obiectului de lucru la un pret accesibil,
adica, un automobil ZAZ in stare normala la pretul de 1500 - 2000 lei
Automobilul trebuie achizitionat (termen limita) pina la inceputul practicii de vara
daca aveti informatie unde poate fi gasit, rog sa ma anuntati
cu un mail la adresa:
a.bragarenco@gmail.com
sau la telefonul:
079 99 32 55
Rog sa faceti public acest anunt si pentru colegii care nu au primit acest email
Reamintesc:
Ideea proiectului consta in dotarea automobilului cu sisteme electronice/programe
proiectate de catre participantii la proiect.
Proiectul ca obiectiv principal acumularea experientei practice in domeniul sistemelor cu microcontrolelor
cei care mai sunt interesati sunt bineveniti la participarea in acest proiect.
Participarea in proiect poate fi, dupa dorinta, inregistrata ca loc pentru practica de vara.
deci chiar daca aveti practica in alta parte, oricum puteti participa in proiect.
inregistrarea pentru participare se poate face prin raspunderea la email si prin adaugarea unui comentariu in blog http://zaz-to-fly.blogspot.com/
se accepta participanti de la orice an de studii.
Friday, 4 June 2010
Idei pentru siteme in Proiect
Daca aveti ceva interesant , putei sa supliniti aceasta lista
1. Sistem adaptiv de iluminare
2. Airbag
3. Keylock alarma
4. Clima
5. Determinarea distantei
6. Reglarea oglinzilor
7. Reglarea farurilor
8. Monitorizarea consumului
9. Monitorizarea cauciucurilor
10.Monitorizarea calitatii drumurilor
11.Sistem de frinare
12.Sistem de directie
13.Inchiderea geamurilor
14.Detectia puterii
15.Schimbarea vitezei
16.Parcare automata
17.Comanda la distanta
18.Camere video
19.GPS
20.Sistem de detectie in caz de ploaie
Idei pentru siteme in Proiect
Daca aveti ceva interesant , putei sa supliniti aceasta lista
1. Sistem adaptiv de iluminare
2. Airbag
3. Keylock alarma
4. Clima
5. Determinarea distantei
6. Reglarea oglinzilor
7. Reglarea farurilor
8. Monitorizarea consumului
9. Monitorizarea cauciucurilor
10.Monitorizarea calitatii drumurilor
11.Sistem de frinare
12.Sistem de directie
13.Inchiderea geamurilor
14.Detectia puterii
15.Schimbarea vitezei
16.Parcare automata
17.Comanda la distanta
18.Camere video
19.GPS
20.Sistem de detectie in caz de ploaie
Tuesday, 1 June 2010
Vreau sa initiez o tema noua de practica pe directia "AUTOMOTIVE"
(sisteme elecrice pt automobil)
1. "Automobil propulsat electric" - Dotarea unui automobil de tip ZAZ cu motor electric.
2. Elaborarea sistemelor electronice pentru automobil
- Electrical steering (mecanism de directionare electric)
- iluminare
- inchiderea deschiderea ferestrelor,
- calculator de bord
- comanda la distanta
- altele
disciplinele imlicate:
microprocesoare, microsisteme, electronica, electronica de putere, traductoare si senzori
cunostinte necesare: (le puteti acumula pe parcurs)
electronica (bazic)
procramare C (bazic).
Cei interesati sa participe rog sa lasati un comentariu.
Vreau sa initiez o tema noua de practica pe directia "AUTOMOTIVE"
(sisteme elecrice pt automobil)
1. "Automobil propulsat electric" - Dotarea unui automobil de tip ZAZ cu motor electric.
2. Elaborarea sistemelor electronice pentru automobil
- Electrical steering (mecanism de directionare electric)
- iluminare
- inchiderea deschiderea ferestrelor,
- calculator de bord
- comanda la distanta
- altele
disciplinele imlicate:
microprocesoare, microsisteme, electronica, electronica de putere, traductoare si senzori
cunostinte necesare: (le puteti acumula pe parcurs)
electronica (bazic)
procramare C (bazic).
Cei interesati sa participe rog sa lasati un comentariu.