Documente Academic
Documente Profesional
Documente Cultură
Facultatea de Transporturi
Catedra telecomenzi si electronica in transporturi
Proiect Microcontrolere
Simularea unui pupitru pentru o statie
Switch cu 2 macaze
Anul 2009
Cuprins 1.Tema 2.Proiectare Hardware 2.1 Schema Bloc 2.2 Descriere Blocuri si Calcul Componente 2.3 Schema electrica generala 2.4 Cablaj si consideratii de proiectare 2.5 Lista componente si Calcul economic 3.Proiectare Software 3.1 Descriere generala 3.2 Schema logica 3.3 Listing Software 4.Bibliografie
1.Tema Proiectul consta in simularea unei comenzi tip dispecer a macazului unei cai ferate , cu schema urmatoare:
Se presupune ca trenul va avea culoarea verde doar cand traseul sau va fi pe directia inainte, iar pe directia abatuta trenul nu va circula decat daca semaforul are culoarea rosie.
VCC - pinul de alimentare in curent continuu; GND - pinul de masa al alimentarii; PA7..PA0 - portul bidirectional A pe 8 biti cu rezistente interne pull- in functie de ceasul intern ales PA6 poate fi folosit ca intrare pentru amplificatorul invertor al
oscilatorului intern, iar PA7 ca iesire de la acesta; in cazul in care se foloseste oscilatorul intern RC calibrat pentru ceasul intern PA6 si PA7 pot fi folositi ca intrare pentru numaratorul asincron; PB7..PB0 - portul bidirectional B pe 8 biti cu rezistente interne pull-up (selectate pentru fiecare bit in parte); in functie de ceasul intern ales PB6 poate fi folosit ca intrare pentru amplificatorul invertor al oscilatorului intern, iar PB7 ca iesire de la acesta; in cazul in care se foloseste oscilatorul intern RC calibrat pentru ceasul intern PB6 si PB7 pot fi folositi ca intrare pentru numaratorul asincron; PC5..PC0 - portul bidirectional C pe 7 biti cu aceleasi caracteristici ca si portul B; PC6 - apartine tot portului C dar in functie de programarea sigurantei RSTDISBL fiind pin de I/O sau pin de RESET; PD7..PD0 - portul bidirectional D pe 8 biti este similar cu portul B; AVCC - pinul de alimentare pentru convertorul A/D; AREF - pinul de referinta al convertorului A/D; Dimensiunile sunt prezentate in schema urmatoare si sunt exprimate in milimetrii:
Arhitectura interna combina un bogat set de instructiuni cu 32 de registrii de uz general care sunt conectati direct la Unitatea Aritmetico-Logica (ALU), permitand ca doua registre independente sa poata fi accesate intr-o singura instructiune executata intr-un singur tact de ceas. Spre deosebire de arhitectura CISC avem o putere de lucru de pana la 10 ori mai rapida. Microcontroler-ul dispune de 5 moduri de minimizare a consumului de energie fara a afecta buna desfasurare a activitatii acestuia: Idle, ADC Noise Reduction, Power-
Down, Power-Save si Standby. De asemenea RESET-ul poate avea 4 surse: Power-On Reset - la aplicarea tensiunii de alimentare; External Reset - aplicat pe pinul Reset cu ajutorul unui semnal extern; Watchdog Reset - cand nu se valideaza semnalul watchdog; Brown-Out Reset - daca tensiunea scade sub pragul minim. Schema interna arata pozitionarea Unitatii Aritmetico Logice si a memoriei integrate in procesorul microcontroler-ului precum si pozitionarea porturilor:
Toate porturile pot in timp real sa fie citite, modificate si scrise, atunci cand sunt folosite ca porturi digitale I/O. Aceasta inseamna ca directia unui singur pin din port poate fi modificata fara a schimba directia celorlalti pini. Toti pinii au diode de protectie fata de masa cat si fata de alimentare:
Microcontroler-ul ATMEGA16 dispune de 3 numaratoare sincronizate pe ceasul intern sau pe unul extern. Dintre cele 3 il folosim pe primul numarator pe 8 biti a carui diagrama este prezentata in continuare:
un singur canal de numerotare; contine generator de frecventa; numarator de impulsuri externe; divizor de frecventa pe 10 biti;
Memoria FLASH este impartita in doua sectiuni: cea de BOOT si cea de aplicatii. Ambele sectiuni au biti de blocare rezervati pentru protectia la supra scriere. Memoria dispune de 8Kb On-Chip In-System Programmable Flash pentru stocarea programului. Deoarece toate instructiunile au minim 16 biti memoria se organizeaza in pagini de 4Kb x 16 biti. Aceasta memorie poate fi rescrisa de pana la 1000 de ori.
Registrii de stare contin informatii despre rezultatul aritmetic al instructiunilor executate in mod curent. Acesti registrii nu sunt stocati automat in subrutina de tratare a intreruperilor de aceea este necesara tratarea lor prin program. Registrii sunt in numar de 8:
bit 7 - I: Valideaza intreruperea globala. Este necesara valoarea 1 cand se doreste lucrul cu intreruperile. Automat acest bit este trecut pe 0 din hardware si nu se permite intreruperea executarii instructiunilor. Din program se folosesc instructiunile speciale SEI si CLI pentru a trece bitul pe 1 sau 0 dupa caz. bit 6 - T: Stocarea bitului de copiere. Se poate copia orice bit in si din acest bit folosind instructiunea BLD si BST. bit 5 - H: Fanionul de transport pe jumatate. Este folosit in instructiuni aritmetice cat si in BCD. bit 4 - S: Bitul de semn. Este un sau exclusiv intre fanionul N si V.
bit 3 - V: Fanionul de complement aritmetic fata de 2. bit 2 - N: Fanionul de negativ. Arata cand un rezultat este negativ. bit 1 - Z: Fanionul de zero. Indica un rezultat nul in urma unui calcul. bit 0 - C: Bitul de transport. Folosit in operatii aritmetice pentru transport.
Registrii de uz general sunt impartiti in doua parti: primii 16 si urmatorii 16. Cei 32 de registrii a cate 8 biti fiecare beneficiaza de acces rapid din partea ALU ceea ce face posibila executarea unei instructiuni care foloseste 2 operanzi diferiti din registrii si scrie rezultatul inapoi intr-o singura perioada de ceas, 6 dintre cei 32 pot fi folositi ca 3 registrii de 16 biti cu adresare indirecta prin pointeri in spatiul de adrese fiind mult mai facila accesarea lor. Se pot folositi in program pentru diferite operati pe 8 biti sau 16 biti, in plus registrii 26,..,31 au functii speciale pentru adresarea pointer-ului de lucru din memoria de date asa cum am aratat mai sus. Adresele registrilor sunt urmatoarele: R0,..,R15 cu adresa 0x00,..,0x0F si R16,..,R31 cu adresa 0x10,..,0x1F. Avantajul este accesul facil la memorie, fiind mapati direct in memoria SRAM. Memoria EEPROM de date a lui ATMEGA16 are 512 biti in care octetii pot fi rescrisi de pana la 100000 de ori. Registrii de acces EEPROM sunt accesibili direct din zona de I/O. Este necesara o precautie cand se lucreaza cu aceasta zona deoarece este sensibila la fluctuatiile de voltaj. Se foloseste o procedura speciala de scriere a registrilor pe 16 biti care altereaza timpii de executie a instructiunilor. In aplicatia aleasa lucram cu registrii generali R16, R17, R18, R19 si R20 pentru stocarea variabilelor globale: temp, secunde, clipit, control si contor. Sunt folositi la calcul, la numararea secundelor, la compararea starilor si pentru contorizarea acestora. Pentru a folosi porturile D si B ca iesire si intrare, configuram pinii respectivi folosind instructiunile DDRD si DDRB cu parametrii 1 si 0 (cu 0 setam portul D pentru iesire si cu 1 setam portul B pentru intrare, deoarece: portul D il folosim pentru semnal de iesire semnal de aprindere si stingere a becurilor, portul B il folosim pentru semnal de intrare semnal de verificare a starii becurilor). Blocul releelor face separatia galvanica intre leduri si microcontroler pentru potrectia lui
Calcul componente
R=5V /13=384
U=(Rint+Re)I
Rin
Nr. Crt.
Simbol
Date Descriere Tehnice intrerupato r ON-ON 6A 0.25W; rezistenta 390 0.25W; rezistenta 470 leduri verde+ros duble u 200W putere optocuplor disipata dioda 100V; 1A releu cupla cablu
Buca ti
Tip
3 ALM015 9 6 3 2 TLP521-4 6 1N4001 DIP05-1A726 12L 3 5x2 1 panglica circuit simplu placat cu 1 cupru
10 PLACA
placa
10
10 134.58
sbrc Rd,p: Aceasta instructiune testeaz un singur bit din registru si sare la urmtoarea instruciune dac bitul este 0. Reti :Intoarcerea din intrerupere.Adresa returnata este incarcata din stiva indicatorul de intrerupere se pune in 1
si
3.2Schema logica
start
Setare intreruperi
Verificarea intreruperilor
.include"m16def.inc" jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset
Intrerupere de o secunda
jmp prag_1sec jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset jmp reset reset:
Setare memoria stiva
ldi r16,0x00 out ddra,r16 ldi r16,0xff out porta,r16 ldi r16,0xff
ldi r16,0b00000000 out tccr1a,r16 ldi r16,0b00001000 out tccr1b,r16 in r16,timsk andi r16,0b11000011 ori r16,0b00010000
out timsk,r16 ldi r16,0x1e out ocr1ah,r16 ldi r16,0x85 out ocr1al,r16 in r16,tccr1b andi r16,0b11111000 ori r16,0b00000101 out tccr1b,r16 sei bucla: rjmp bucla
Setare intrerupere
prag_1sec:
in r20,sreg in r16,pina sbrc r16,pa0 rjmp next1 in r17,pinb andi r17,0b11111100 ori r17,0b00000010 out portb,r17 next1: rjmp next2 in r17,pinb andi r17,0b11111100 ori r17,0b00000001 out portb,r17 next2: sbrc r16,pa2 rjmp next3 in r17,pinb andi r17,0b11110011 ori r17,0b00001000 out portb,r17 next3: sbrc r16,pa3 rjmp next4 in r17,pinb andi r17,0b11110011 ori r17,0b00000100 out portb,r17 next4: sbrc r16,pa4 rjmp next5 in r17,pinb andi r17,0b11001111 ori r17,0b00100000 out portb,r17 next5: sbrc r16,pa7 rjmp end in r17,pinb andi r17,0b11001111 ori r17,0b00010000 out portb,r17 end:
4.Bibliografie
http://www.atmel.com Curs Circuite Integrate Digitale Curs Circuie Electronice Fundamentale Curs Dispozitive Electronice SGS THOMSON Microelectronics