Sunteți pe pagina 1din 68

Lucrul cu registrele la nivel de bit

n cazul ATmega 324, registrele sunt pe 8 bii. Majoritatea biilor un anumit rol,
documentat n datasheet, i pot fi folosii n urmtoarele scopuri:

bii de control: folosii pentru a controla diferite moduri de operare ale

microcontrollerului, pentru a activa anumite componente etc. Exemplu:


bitulRXENn din registrul UCSRnB permite, atunci cnd este setat, primirea de date
pe USARTn (unde n este 0 sau 1).
bii de stare: folosii pentru a verifica starea unei aciuni. Acetia sunt, n

general, read-only. Exemplu: bitul RXCn din registrul UCSRnA este setat atunci cnd
exist date de citit n bufferul de primire date pentru USARTn (unde n este 0 sau 1).
bii de date: folosii pentru a oferi microcontrollerului date pentru a fi prelucrate

sau pentru a prelua date de la acesta. Exemplu: grupul de 8 bii RXBn[7:0] sunt
folosii pentru a primi date de la USARTn, iar grupul TXBn[7:0] sunt folosii pentru a
scrie date n bufferul destinat transmisiei peUSARTn (unde n este 0 sau 1).
bii rezervai: n prezent nu sunt folosii de ctre microcontroller.

O operaie pe bii este o operaie care afecteaz unul sau mai muli bi i dintr-un cmp
de bii sau din reprezentarea binar a unui numr. Deoarece aceste ac iuni sunt
suportate direct de ctre microcontroller, ele sunt cu mult mai eficiente dect opera iile
de mprire, nmulire i chiar dect adunare.

Operaii pe bytes
Operaie
Scriere bit pe 1

Scriere bit pe 0

Toggle bit

Selectare bit

Shiftare dreapta

Form
Byte |= (1 << Bit_index)

Byte &= ~(1 << Bit_index)

Byte ^= (1 << Bit_index)

Byte & (1 << Bit_index)

Shiftarea la dreapta mut fiecare bit al operandului spre dreapta cu un numr de pozi ii.
Operandul din dreapta reprezint numrul de bii cu care se face shiftarea operandului
din stnga. Dac este nevoie, se adaug zerouri la stnga numrului pentru a i
menine dimensiunea.

Exemple:
Shiftarea la dreapta poate fi folosit pentru a mpr i un numr binar la 2 (sau puteri
ale lui 2) ntr-o singur operaie. Exemplu: 1010 >> 1 = 0101, unde:

1010(baza 2) = 10(baza 10)

0101(baza 2) = 5(baza 10)


Shiftare stnga
Shiftarea la dreapta mut fiecare bit al operandului spre stnga cu un numr de pozi ii.
Operandul din dreapta reprezint numrul de bii cu care se face shiftarea operandului
din stnga. Dac este nevoie, se adaug zerouri la dreapta numrului pentru a i
menine dimensiunea.

Exemple:
Shiftarea la stnga poate fi folosit pentru a nmuli un numr cu 2 (sau puteri ale lui 2)
ntr-o singur operaie. Exemplu: 0011 << 1 = 0110, unde:

0011(baza 2) = 3(baza 10)

0110(baza 2) = 6(baza 10)


Mti pe bii
O masc pe bii reprezint un cmp de bii folosit pentru a seta / terge mai mul i bi i
dintr-un alt cmp de bii ntr-o singur operaie.
Mascare bii pe 1 (setare multipl)

Exemplu:
Mascare bii pe 0 (tergere multipl)

Exemplu:
Verificare status bit

Exemplu:
Toggle valoare bii

Exemplu:

Greeli frecvente n lucrul cu bii

Confundarea operatorilor ! i ~.
! transform ceva fals (=0) n adevrat i vice-versa.
~ transform toate zerourile n 1 i vice-versa.
Exemplu: !1100 = 0; ~1100 = 0011
Confundarea operatorilor & i &&.
& efectueaz operaia de intersecie a doi bii.
&& returneaz starea de adevr a expresiei, evaluat cu tabelul de
adevr AND, n care 0 reprezint fals i orice altceva reprezint adevrat.
Exemple:

1101 & 1001 = 1001; 1101 && 1001 = 1

1100 & 0001 = 0000; 1100 && 0001 = 1


Confundarea operatorilor | i ||.
| efectueaz operaia de uniune a doi bii.
|| returneaz starea de adevr a expresiei, evaluat cu tabelul de
adevr OR, n care 0 reprezint fals i orice altceva reprezint adevrat.
Exemple:

1101 | 1001 = 1101; 1101 || 1001 = 1

1000 | 0001 = 1001; 1000 || 0001 = 1


Folosirea expresiei Byte = 1 << Bit_index cnd se dorete doar setarea bitului

de la indexul Bit_index din octetul Byte.

Corect: Byte |= 1 << Bit_index

De ce este greit? Pentru c terge toi ceilali bii din Byte. Practic, i

atribuie lui Byte valoarea lui 1 << Bit_index, care nu este altceva dect masca
pe care dorim s-o aplicm.
Exemplu: iniial Byte = 11001110 i Bit_index = 4.

Greit: Byte = 1 << 4; Byte devine 00010000

Corect: Byte |= 1 << 4; Byte devine 11011110


Folosirea expresiei Byte = ~(1 << Bit_index) cnd se dorete doar tergerea

bitului de la indexul Bit_index din octetul Byte.

Corect: Byte &= ~(1 << Bit_index)

De ce este greit? Pentru c terge toi ceilali bii din Byte. Practic, i

atribuie lui Byte valoarea lui ~(1 << Bit_index), care nu este altceva dect
masca pe care dorim s-o aplicm.
Exemplu: iniial Byte = 11001110 i Bit_index = 2.

Greit: Byte = ~(1 << 2); Byte devine 11111011

Corect: Byte &= ~(1 << 2); Byte devine 11001010

Ghid folosire Bootloader USB

Bootloader-ul este o bucat de software care ncarc din diverse surse programul ce
trebuie rulat de un procesor. Un bootloader USB este posibil pe plcu a de PM datorit
bibliotecii V-USB, care conine ntreaga stiv USB n firmware (n codul bootloader-ului).
Este o interfa bit-banged (se comut n mod direct de software transmisia fiecrui
bit), nu foarte rapid i care ocup mult timp de procesare. Pute i folosi V-USB i n
proiectele voastre.
V-USB are nevoie de conexiunile din figur cu mufa usb care ajunge la un host USB.
Bootloader-ul are dou componente i nu necesit niciun driver (folose te driver-ele
USB HID prezente n orice sistem de operare modern): firmware-ul de bootloader pe
microcontroller i aplicaia de pe PC.
Descrcai Arhiva:

n folder-ul firmware avei binarul i codul surs pentru bootloader.


Binarul, main.hex, trebuie scris n memoria program a microcontroller-ului
cu ajutorul unui programator dedicat (ex: AVR ISP MKII)
Codul surs este disponibil pentru cazul n care ve i folosi alt controller
n folder-ul command line este utilitarul n linie de comand pentru ncrcarea

fiierul binar pe microcontroller


n folder-ul gui este un GUI pentru Windows care face acelai lucru.

Etape necesare:

Trebuie setate fuse-urile pentru microcontroller. Fuse-urile reprezint o

configurare de baz a microcontroller-ului, persistent, alctuit n cazul


ATmega324A din 3 bytes, HIGH FUSE 0x92, LOW FUSE 0xDE, EXTENDED FUSE 0xFD,
care practic descriu urmtoarele configurri:

BOOTSZ de 1024 words (16bii) - 2K este dimensiunea maxim a

bootloader-ului
BOOTRST, pentru ca microcontroller-ul s porneasc la RESET direct n

bootloader, nu n programul obinuit


CKSEL, pentru a selecta un ceas extern de frecven mare (>8MHz)
CKDIV8 dezactivat, pentru c microcontroller-ul s nu mai divid ceasul

prin 8 nainte de a-l folosi


Arhiva original se gsete pe site-ul Bootload HID. Paii necesari configurrii V-USB
sau BootloaderHID (care au fost deja fcui n arhiva de pe aceast pagin) sunt
urmtorii:

Setare microcontroller i frecven ceas n Makefile


(doar pentru bootloader) Setat adresa de start a bootloader-ului n Makefile.
Dac la fuse bits adresa este 0x3c00 (n cuvinte), byte address este dublu, deci
0x7800
Configurarea pinilor de comunicare USB n bootloaderconfig.h, n cazul acesta
trebuie specificat portul (D) i pinii (D+ este PD2, D- este PD3)
Condiia pentru intrat n bootloader trebuie pus, tot n bootloaderconfig.h:

#define bootLoaderCondition() ((PIND & (1<<PD6)))

Folosire

Conectai plcua la calculator, apsnd n acelai timp pe butonul USER (de


pe PD6). Pe calculator va aprea dispozitivul HID-compliant device.
Folosii fie aplicaia GUI, fie utilitarul command-line pentru a ncrca noul
program
Dac folosii aplicaia GUI:

Dup ce ai conectat plcua, apsai butonul 'Find Devices'

Fig. 1: Butonul 'Find Devices'

Odat ce a fost gsit device-ul, ncrcai fiierul .hex pe care vre i s l pune i pe
plac:

Fig. 2: Butonul 'Open .hex file'

La final, nainte de a da 'Flash Device', asigurai-v c este activat checkbox-ul


numit 'Reboot AVR':

Fig. 3: Checkbox-ul 'Reboot AVR'

La orice resetare sau power-up la care nu apsai butonul, aplica ia va porni

automat, bootloader-ul nu va aprea dect atunci cnd plcua este pornit cu


butonul apsat.

Folosire pe Linux

Plcua va aprea default ca USB Voti Adapter (apelai lsusb)


Descrcai arhiva de pe aceasta pagin, mergei n folder-ul software i
rulai make
Apoi rulai

$ ./bootloadHID -r fisier.hex

Pentru instalarea toolchain-ului AVR

# apt-get install gcc-avr avr-libc libusb-dev

pe Fedora

# yum install gcc-avr avr-libc libusb-devel

Fuse-uri
Bootloader 1024 words
Fuse

valoare

Extended

0xFF

High

0x9A

Low

0xFF

> adresa pornire (in gcc) 0x7800


Pe Linux fuse-urile se vor seta cu comenzile

$ avrdude -c avrispmkii -P usb -p m324pa -U lfuse:w:0xff:m

$ avrdude -c avrispmkii -P usb -p m324pa -U hfuse:w:0xda:m

$ avrdude -c avrispmkii -P usb -p m324pa -U efuse:w:0xff:m

$ avrdude -c avrispmkii -P usb -p m324pa -U lock:w:0x2f:m

Bootloader 2048 words


Fuse

valoare

Extended

0xFF

High

0x98

Low

0xFF

> adresa pornire (in gcc) 0x7000

Alte fiiere
Bootloader 20MHz cu pornire pe buton PD6

Ghid realizare plcue cablate pentru


montaje (clorur feric)
Acest ghid nu este pentru cei care invata sa lipeasca o placuta pentru prima
oara, ci pentru cei interesati despre cum se pot realiza placute ce contin
cablaje dificil de realizat pe placute de dezvoltare sau pur si simplu doresc ca
placuta lor sa arate cat mai bine. In cadrul proiectului de PM nu se puncteaza
suplimentar realizarea unei placute in clorura ferica fata de o placuta de
dezvoltare.

1. Materiale necesare
Pentru a putea realiza placute cablate, pentru diverse montaje, aveti nevoie de
urmatoarele echipamente si consumabile:

Imprimanta laser, pentru imprimarea cablajului pe foaia lucioasa sau PnP


Foarfeca
Fier de calcat, pentru imprimarea cablajului de pe foaie pe placuta
Mini-bormasina (pentru burghie de 0.9-1mm)
Cablaj textolit
Foaie A4 lucioasa (sau folie PnP), pentru imprimarea cablajului
Clorura ferica, pentru corodarea placutei
Diluant (sau acetona), pentru curatarea tonerului de pe placuta

2. Proiectarea cablajului
Prima faza o reprezinta proiectarea cablajului ce il doriti realizat, pornind eventual de la
schema electronica a montajului. Proiectarea o puteti face in orice program ce va ajuta
in realizarea unui PCB (Printed Circuit Board). (ex Eagle, OrCad etc).
Cablajul plcuei pentru 2011 va fi publicat pe pagina Cablaj imprimat 2011.

3. Imprimarea cablajului
Veti folosi metoda transfer de toner pentru a fixa imaginea cablajului vostru pe
laminatul de cupru.
Dupa ce ati realizat cablajul, sau l-ati descarcat, il veti imprima pe o coala A4 lucioasa
(ceva mai groasa decat o coala A4 obisnuta de xerox), hartie fotografica (atentie, nu
toate tipurile de hartie foto merg; noi am avut rezultate foarte bune cu hartia foto A4
marca proprie de la magazinele Real) sau pe o folie Press'n'Peel (cel mai scump, dar are
rezultatele cele mai bune), cu ajutorul unei imprimante LASER (ATENTIE! imprimanta

trebuie sa fie LASER si sa foloseasca toner, imprimantele INKJET NU sunt bune). Daca
alegeti varianta cu folie Press'n'Peel atunci o puteti cumpara de la magazinele
specializate, ca de exemplu Virtual Electronic de pe Maica Domului (o statie cu
tramvaiul 16 de la Lizeanu spre Lacul Tei).
Taiati placa de textolit la dimensiunea dorita si curatati partea de cupru cu un glaspapir
fin ca sa inlaturati orice urma de murdarie sau grasime. Pentru asta e foarte bine daca
puteti s-o si curatati cu un tampon de vata imbibat in diluant sau acetona. Dupa ce ati
printat mai multe imagini ale cablajului pe aceeasi foaie, taiati cu o foarfeca pe contur si
aplicati aptibildul pe partea cu cupru a placii de textolit.
Calcati cu fierul incalzit la maxim placa si hartia pana cand tonerul adera la cupru.
Aceasta parte este si cea mai delicata si s-ar putea sa nu va iasa din prima. Ca sa va
iasa bine trebuie sa apasati destul de bine pe fierul de calcat, sa aveti grija ca hartia sa
nu se miste de pe placa, odata ce-ati dat cu fierul peste ea (altfel va ies trasee duble
sau miscate) si sa nu va ardeti degetele :).
Dupa ce ati calcat cablajul, nu dezlipiti imediat hartia de placa de textolit, lasati-o sa se
raceasca. Cea mai buna metoda este sa puneti placa sub un jet de apa rece si sa lasati
hartia sa se inmoaie. Curatati hartia si daca totul a mers bine, ar trebui sa aveti pe
cupru traseele imprimate.
Gasiti mai jos cateva imagini exemplificative :

4. Corodarea placutei
Pentru inceput turnati clorura ferica intr-un vas si apoi placa la corodat in acel vas. Aveti
grija ca intreaga suprafata a placii sa fie scufundata in clorura ferica. Lasati sa se
corodeze aproximativ 20 de minute, dar verificati progresul din 5 in 5 minute.
Corodarea se face mai repede daca solutia de clorura ferica este incalzita in prealabil .
Aveti grija cu clorura ferica pentru ca pateaza foarte tare, uneori iremediabil orice
material textil. Nu va temeti sa bagati mainile in solutie, nu corodeaza decat cuprul, nu
si mainile voastre. Totusi, NU INGERATI solutia - este toxica. Aveti grija sa nu va intre
in ochi.
Dupa ce s-a corodat, spalati placuta cu multa apa si sapun apoi stergeti-o si indepartati
tonerul cu un tampon imbibat in diluant sau acetona.

Dupa folosire, stocati solutia de clorura ferica intr-o sticla de plastic si etichetati-o.
Solutia poate fi folosita de cateva zeci de ori inainte sa devina inutilizabila. Daca doriti
s-o aruncati, diluati-o intai in 10 parti apa si apoi aruncati-o la canalizare.

5. Prelungirea duratei de viata a placutei (pas intermediar)


Daca vreti sa va protejati cablajul de la coroziune, deoarece cuprul se oxideaza in timp
datorita interactiunii aerului, puteti sa acoperiti traseele cu un strat de fludor, cu
ajutorul letconului. Puteti observa acest lucru pe placutele din laborator.
Puteti sa folositi si o solutie de stanare chimica pentru acest procedeu.

6. Finalizarea placutei
In ultima parte va trebui sa dati gauri in placa voastra acolo unde aveti nevoie, cu o
mini-bormasina (sau o bormasina obisnuita dar cu mandrina mica). Pentru cele mai
multe gauri puteti folosi un burghiu de 0.9mm, depinde de ce componente aveti pe
cablajul vostru. Dupa ce ati dat toate gaurile fixati si lipiti componentele la locurile lor.

In ultima parte testati cu ajutorul multimetrului continuitatea traseelor si


functionalitatea montajului.

Ghid folosire datasheet


Regula nr 1 - Citii Table of Contents
Majoritatea informaiilor pe care le cutai se pot gsi uor dac citii table of contents.
De exemplu

Pinii se gsesc uor la Pin Configurations


Detalii pentru Timer-ul 0 se gsesc n capitolul 8-bit Timer/Counter0 with PWM
Detalii despre USART se gsesc n capitolul USART
Caracteristicile electrice ale microcontrollerului (ct curent consum, ntre ce
tensiuni funcioneaz corect, etc.) se gsesc n capitolul Electrical Characteristics

Regula nr 2 - Fiecare periferic are interfa i mod de


operare
S lum exemplul de mai sus, cu Timer 0. Capitolul se mparte n dou mari pr i
(fiecare cuprinznd mai multe seciuni):
Modul de funcionare: Se descrie n general perifericul, modul n care

funcioneaz, particularitile fa de alte periferice similare.


(seciunile Features,Overview, Timer/Counter Timing Diagrams, etc.)
Modul de folosire: Perifericele sunt utilizate cu ajutorul unor registre speciale
ale cror bii au o anumit semnificaie pentru perifericul respectiv. Cu ajutorul
acestor registre putem configura perifericul i interac iona cu el. Fiecare registru
este descris intr-o seciune separat ce contine:

Numele registrului (cel din figura de mai jos este TCCR0B). Acesta va fi

numele macro-definiiei cu care vei accesa registrul (ex: ca s scrie i


valoarea0x2f in registrul TCCR0B in C vei scrie: TCCR0B = 0x2f;)
mprirea pe bii. Exist bii ce desemneaz un singur flag (nu avem

astfel de bii in figur) i grupuri de bii ce nu poart semnifica ie dect mpreun


(cum sunt COM0A0:COM0A1, COM0B0:COM0B1 i WGM00:WGM02)
Fiecare bit/grup de bii este detaliat ntr-un mic paragraf cu eventuale

trimiteri ctre descrierea modului de funcionare a perifericului


Se ncepe cu bitul cel mai semnificativ (n cazul
registrului TCCR0A este COM0A1)
Grupurile nu trebuie neaprat s conin bii adiaceni sau n vreo anumit
ordine. WGM00:WGM02 sunt un exemplu de grup cu bii ce nu sunt adianceni,
deoarece WGM02 se alf n registrul TCCR0B
Exist bii read-only, bii write-only i bii read/write
Toi biii au o valoare iniial care este specificat n imagine, sub bitul
respectiv

Regula nr 3 - If all else fails, Ctrl + F


Dac i numai dac nu ai gsit informaia pe care o cutai acolo unde ar trebui s
fie, atunci cutai cu opiunea de find a viewer-ului vostru. Be warned! Numele
registrelor se regsete de multe ori n datasheet, nu orice men iune v aduce
informaia necesar!

Regula nr 4 - Folosii cu ncredere!


Toate informaiile de care vei avea despre o anumit component le ve i gsi in
datasheet-ul acelei componente. ntr-adevr, unele datahseet-uri vor fi scrise mai bine
ca altele, vor fi mai bine structurate i vor descrie componenta mai n detaliu. ns
toate vor acoperi informaii eseniale precum: caracteristici principale, mod de
funcionare, mod de utilizare, caracteristici electrice, caracteristici fizice.
n timpul laboratoarelor putei desigur s ntreba i asistentul dar foarte probabil i el/ea
v va direciona ctre datasheet fiindc nu are rost sa pierde i timpul cu informa ii ce ar
putea fi greite (nici noi nu tim pe de rost ce scrie in datasheet i nu ne a teptm sa
tii nici voi ). A c folosii cu ncredere i spor la lucru

Programarea cu ISP i AVR Studio


Acest tutorial v va arta cum se face scrierea n memoria program a microcontrollerului cu ajutorul uneltelor dedicate. Aceast metod va fi folosit de ctre asistentul de
proiect, o dat, pe placa voastr de proiect realizat la etapa I. La laborator se va folosi
tot timpul metoda cu Bootloader USB.
Conectai programatorul ISP la placa de laborator ca n poza de mai jos:

Conectorul trebuie pus cu panglica spre exterior i cu banda ro ie n partea de sus.


Daca totul e ok, pe ISP ambele leduri vor avea culoarea verde.
Deschidei AVR Studio, apoi selectai din meniul Tools Program AVR Connect..
Din fereastra de mai jos selectati AVRISP mkII apoi apsa i Connect:

Daca totul e n regul ar trebui s v apar urmtorul dialog:

Din tab-ul Main, selectai din drop-down list ATmega16. Ca sa fi i siguri c a i conectat
programatorul cum trebuie i c poate sa comunice cu microcontrollerul, apsa i
butonul Read Signature. Rezultatul ar trebui s fie codul hexa 0x1E 0x94 0x03, care
este identificatorul microcontroller-ului ATmega16.
Ca s programai, selectai tab-ul Program, ncrcai fiierul .hex n chenarul Flash apoi
apsai butonul Program:

Etape realizare plcua de baza Proiect


PM
Varianta Atmel AVR ATmega16
Disclaimer! Pagin neupdatat cu poze noi (cu placa de acum, componentele etc.). Nu
este un ghid care urmeaz schema plcii actuale, dar este suficient pentru a v da
seama cum s abordai lipirea componentelor
ATENTIE ! Paii prezentai n acest tutorial va ghideaz pe parcursul realizrii
plcutei i NU REPREZINTA TOTI PASII ce trebuie urma i, pana la cel mai mic

detaliu, pentru a realiza o plcu funcional TOATE CONEXIUNILE prezente


pe schema electronica TREBUIE REALIZATE (inclusiv cele GND la GND).
1. Materiale necesare:
Se cumpr piesele (pot sa difere anumite lucruri cum ar fi mufa pentru sursa de
tensiune pe care o avei, culoarea pieselor, dimensiunea plcii universale cu guri pe
care o alegei). n poza de mai jos sunt toate piesele de care ave i nevoie pentru a va
realiza montajul pentru proiect.

Sculele pe care le vei folosi sunt urmtoarele: letcon, multimetru, pasta decapant
(sacz) i fludor, clete de tiat srma

nainte sa va apucai sa lipii luai n considerare urmtoarele reguli:


1.
2.

Piesele care au multe interconexiuni sa fie mai apropiate.


Sa va rmn pe placa loc pentru partea de proiect (eu am folosit o placa mica
de 3040 guri; dac proiectul vostru va folosi multe componente adi ionale, va
recomand o placa de 50100 de guri).
3.
Nu le nghesuii prea tare componentele.

4.

Unele plci au anumite guri unite intre ele pe stratul de cupru. Nu conecta i
terminale diferite la aceeai zona dect dac asa cere schema. Dac acest lucru
creeaz probleme, folosii un cutter pentru a despri acele zone.
5.
Piesele se poziioneaz pe partea izolata i lipiturile se fac pe partea opusa, cu
cupru.
Dac nu (mai) tii cum se foloseste un multimetru, urmrii tutorialul de mai jos:

Realizare plcu (Aranjare piese i Lipire)


Letconul este elementul activ n procesul de lipire. El furnizeaz cldura necesara topirii
cositorului (fludorului). Acesta trebuie sa fie de putere mica (20-30 W), pentru a nu
nclzi excesiv piesele i pentru a nu fi de dimensiuni prea mari.
Fludorul seamn cu o srma dar n realitate este un tub de cositor (staniu + plumb)
umplut cu pasta decapant Atunci cnd este expus la aer, cuprul se oxideaz ( i
schimba culoarea din armiu lucios n maro mat). Acest oxid mpiedic lipirea cositorului
de cupru. Pentru a fi ndeprtat, se folosete pasta decapant (sacz).
Pentru a inva cum putei s facei lipituri corecte, urmrii tutorialul de mai jos:
Dupa cum este explicat si in tutorialul de mai sus, lipii piesele cu letconul dup
urmtorul procedeu:
1.
2.
3.

4.

5.
6.
7.

Se alimenteaz letconul i se ateapt nclzirea sa.


Se ia piesa i se verifica dac ncape n locul unde trebuie lipita. Eventual se mai
ndoaie/ndreapt pinii.
Se pune capul nclzit al letconului astfel nct sa ating i pinul piesei i plcut
de cupru, i se ateapt 1-2 secunde ca sa se nclzeasc pinul i plcut Secretul
unei lipiri reuite este ca amndou sa fie suficient de fierbin i, altfel nu prinde
cositorul. Nu nclzii prea mult timp, putei deteriora piesele mai sensibile.
Se aduce fludorul n zona n care se ntlnesc cele 3 elemente (capul letconului,
pinul i plcut). Fludorul ar trebui sa se topeasc i sa se ntind frumos n jurul
pinului.
Se ndeprteaz srma de fludor i apoi capul letconului (dac se procedeaz
invers, srma de fludor rmne lipita pe placa i trebuie rupta manual).
Se ateapt 3-4 secunde sa se ntreasc fludorul topit i se trece la urmtorul
pin.
Dac este nevoie se aplica cu vrful letconului i un pic de pasta decapant pe
zona de pe plcu unde urmeaz a fi lipita piesa. ATENTIE: pasta corodeaz i
cuprul, nu numai oxidul, de aceea trebuie sa fie foarte pu in. n mod
normal, pasta este galben. Ea trebuie ntins att de bine, nct s nu se
mai vad pe plcu (s fie att de subire nct s fie transparent). Insist

foarte mult asupra acestui aspect, deoarece pasta rmas pe placa poate
produce defeciuni, prin corodarea traseelor de cupru n timp (cteva zile).
8.
Ce poate merge prost? O lipitur la care pinul a fost nclzit suficient, dar plcu a
a rmas rece. n acest caz cositorul s-a lipit doar de pin. Exist situatia invers:
placuta a fost cald si pinul rece. Nici aceasta nu este o lipitur bun. O lipitur
corect implic aderenta cositorlui atat la pin cat si la plac.
Totusi, chiar daca s-a prins cositor si de pin si de placuta, lipitura s-ar putea sa nu
fie buna. Daca este prea putin cositor, la o solicitare mecanica mai intensa, acest pin
s-ar putea sa se dezlipeasca. Daca este prea mult cositor pe unul dintre doi pini
apropiati, la lipirea celui de-al doilea s-ar putea sa curga cositor si sa se lipeasca de
primul. In plus, se risipeste material.
Pentru indepartarea fludorului in exces, exista niste pompe speciale care sug
fludorul topit. Daca nu aveti asa ceva puteti folosi un cutit cu care sa despartiti pinii
in cazul in care ajung in contact sau niste sarma impletita din multe multe fire
subtiri care sa absoarba ea fludorul (un fel de fitil de sarma). Cateodata insusi
sacazul poate desparti lipituri deoarece fludorul adera mai bine la cupru si se retrage
din zona de contact.
Dupa lipirea pieselor puteti lipi sarmele de conexiune. Ideal ar fi sa conectati
componentele in felul urmator: Realizati intai conexiunile foarte apropiate, in acest
caz poate nu aveti nevoie de sarma ci uniti pastile vecine direct cu fludor.
9.
Rezistentele sunt simetrice, pinii sunt identici.
10.
Condensatoarele mici sunt simetrice, pinii sunt identici.
11.
Condensatoarele electrolitice (forma de butoias) au marcat ori pinul de + ori cel
de -. In schema voastra aceste condensatoare au un simbol cu o latura dreapta si
una curba. Cea dreapta este +.
12.
Butonul are mai multe conexiuni, doua cate doua sunt legate intern, identificati
cu multimetrul.
13.
Cuartz-ul este simetric.
Conectoarele de serial au numerotarea inscriptionata pe partea de plastic.

Interfata de programare
Interfata de programare este primul pas in echiparea placii voastre de proiect. Schema
electrica a acesteia este data mai jos:

Infigeti conectorul DB9-mama pe marginea placii de test cu pinii 6,7,8,9 pe partea


curata (fara cupru) si restul pe partea cu pastile de cupru, avand grija sa veniti cu pinii
in dreptul gaurilor, ca in imagine.

Faceti legatura intre pinii 6 si 7 de la mufa si rezistenta R5 de 4,7k pe partea fara


lipituri (vezi poza de mai jos). Apoi lipiti cealalta rezistenta de 4,7K (R6) la pinul 4 al
mufei. In continuare lipiti diodele Zener (D1 si D2) la capetele celelalte ale rezistentelor.
Aveti grija la polaritate, catodul diodelor este marcat cu o linie neagra.

Anodurile diodelor le lipiti impreuna cu pinul 5 de la mufa seriala ca in figura de mai jos.
Acest punct constituie masa montajului.

Lipiti in continuare rezistenta R3 (15K), cu un capat la masa (anodurile diodelor) si


celalalt capat la baza tranzistorul BC547. Tot in baza tranzistorului lipiti un contact al
rezistentei R2 (10K) ca in imaginea de mai jos. Emitorul tranzistorului trebuie sa fie si el
conectat la masa iar colectorul il lasati deocamdata liber.

Celalalt contact al lui R2 trebuie sa ajunga la pinul 3 al mufei seriale. Prentru aceasta
trebuie sa faceti un strap cu o bucata de sarma izolata luata din cablul UTP ca mai jos:

Modulul de alimentare

Exista doua moduri in care va puteti alimenta montajul. Primul din ele (si cel mai
simplu) este sa folositi cei 5 volti stabilizati din portul USB. Pentru asta aveti nevoie

doar de o mufa USB tip A si un cablu prelungitor. Pinout-ul pentru mufa USB este
urmatorul:

Daca alegeti alimentarea prin USB, aveti dezavantajul ca nu montajul vostru nu va


putea consuma mai mult de 500mA, aceasta fiind valoarea in jurul careia portul este
limitat. Daca vreti ca in proiectul vostru sa folositi componente cu un consum mare de
current (becuri, motorase, rezistente de incalzire, relee) puteti recurge la masuri
extreme sau puteti folosi alimentare externa, de la un adaptor. Pentru aceasta varianta
de alimentare aveti nevoie de un stabilizator de tensiune (LM7805). Rolul lui este de a
prelua tensiunea de la adaptor (minim 6.5-7 volti) si a furniza o tensiune stabilizata la
iesire, in cazul nostru 5 volti. Pinout-ul pentru LM7805 este urmatorul:

Lipiti LM7805 impreuna cu condensatorul C11 (100nF) in coltul din stanga jos al placii,
ca in imagine. Pin-ul 3 al lui 7805 va furniza tensiunea de 5 volti notata pe schema cu
Vcc.

Continuati cu LED-ul de alimentare si rezistenta R4 (1K). Aveti grija la polaritatea


ledului, pinul mai lung este anodul si-l veti lipi la Vcc. Urmeaza sa faceti un strap mai
lung ca sa legati masa de la alimentare cu cea de la interfata de programare. Ar fi bine
daca ati folosi cablu de aceeasi culoare pentru un semnal, de exemplu albastru pentru
masa si portocaliu pentru Vcc. In final ar trebui sa arate ca in imaginile de mai jos:

Urmeaza conectarea la adaptor si alimentarea placutei pentru prima data. Adaptorul pe


care-l folositi trebuie sa aiba o tensiune de iesire de minim 7 volti. Pentru conectare va
trebuie un conector corespunzator tipului de mufa de la adaptor. Cea mai simpla solutie
ar fi sa taiati mufa de la adaptor si sa legati firele direct. Nu va recomand acest lucru,
mai ales daca este vorba de incarcatorul de la telefonul vostru mobil :)
Masurati cu multimetrul polaritatea si legati mufa de restul montajului cu doua fire ca in
poza de mai jos:

Ca sa testati ce-ati facut pana acum, alimentati montajul de la adaptor si verificati cu


multimetrul tensiunea de iesire care trebuie sa fie in jurul valorii de 5V. Daca LED-ul se
aprinde, totul e OK si puteti continua. In caz contrar (se incalzeste foarte tare
stabilizatorul, iese fum sau explodeaza ceva), verificati daca ati pus corect polaritatea
sursei de alimentare, continuitatea legaturilor cu multimetrul sau daca ati pus corect
led-ul sau 7805.

Microcontrollerul

Urmatorul pas este lipirea soclului pentru microcontroller. Gasiti o pozitie cat mai
centrala pentru el, si lipiti-i provizoriu doar doi pini de pe diagonala, cat sa stea fix dar
sa poate fi scos usor in caz ca vreti sa-i schimbati pozitia pe placa.

Dupa ce ati lipit soclul, continuati cu quartz-ul si cu cei doi condensatori de 15pF (C1 si
C2 pe schema). Pinii quartz-ului ii veti lipi direct la pinii 12 si 13 ai soclului ca in figura
de mai jos:

Legati capetele lui C1 si C2 la masa printr-un strap.

Conectati rezistenta R1 (10K) intre pinii 9(Reset) si 10(Vcc) de la soclu. Duceti semnalul
de Reset din colectorul tranzistorului de la interfata de programare pana la pinul 9, si
Vcc de la stabilizator la pinul 10 prin doua strapuri.

Lipiti condensatorul C5 (100nF) intre pinii 30 si 31 si C6 (100nF) intre 31 si 32.


Conectati pinii 11 si 31 cu un strap iar 10 si 30 cu un altul.

Conectati si celelalte semnale ramase de la interfata de programare la pinii soclului


(PB5, PB6 si PB7) prin niste strapuri. Aveti grija sa nu incurcati semnalele intre ele.

Conectati LED-ul D7 la pinul 21 (PD7) al controllerului si apoi rezistenta R7 catre masa


printr-un strap. Aveti grija la polaritatea ledului (pinul mai lung e anodul). Petru pushbutton, pinii care sunt pe aceeasi parte sunt cei care nu fac contact. Lipiti butonul cu un
strap catre masa. Totul ar trebui sa arate ca in imaginea de mai jos:

Interfata seriala
Interfata foloseste circuitul integrat MAX232 pentru a converti nivelele de tensiune de
pe linia seriala a calculatorului, care sunt de +12V si 12V la niveluri logice de 0 - 5V
(TTL) cu care lucreaza interfata seriala a microcontrollerului.

Infigeti cealalta mufa DB9 mama pe marginea placii si lipiti-o, ca in imagine.

Lipiti circuitul integrat MAX232 la pinii 2 si 3 (Rx si Tx) ai mufei seriale. Conectati pinii
11 si 12 ai integratului la pinii 15, respectiv 14 ai microcontrollerului cu strapuri. Pinii
15 si 16 ai lui MAX232 sunt pini de alimentare si trebuiesc legati la masa si Vcc, ca in
imaginea de mai jos

Ultimul pas il constituie lipirea condensatoarelor de 10uF la pinii lui MAX232. Din nou,
trebuie sa respectati polaritatea din schema, piciorul mai lung al condensatorului fiind
+.

Realizare cablu serial (programare si transfer de date)


Pentru a putea programa microcontrollerul ATmega16 va trebui sa conectati placuta la
calculator cu ajutorul unui cablu serial. Cablul serial trebuie sa aiba la unul din capete o
mufa DB9 de tip mama (care se va conecta in portul serial al calculatorului), iar la
celalalt capat o mufa DB9 de tip tata (ce se va conecta in interfata de programare de pe
placuta - vezi punctul 2.1). Pentru realizarea cablului aveti nevoie de o mufa mama
DB9, o mufa tata DB9 si 1-2 metri de cablu UTP. Conectarea pinilor intre cele 2 mufe se
va realiza 1 la 1 (adica pinul 1 de pe mufa mama la pinul 1 de pe mufa tata, pinul 2 la
pinul 2, etc pana la pinul 8. Pinul 9 se va lasa neconectat). Fiecare pin de pe cele 2
mufe are scris in dreptul lui un numar. Acelasi cablu o sa il folositi atat pentru
programarea microcontrollerului cat si pentru transferul de date pe internfata seriala,
insa cand il folositi pentru transfer de date cablul va lega portul serial al calculatorului
cu interfata seriala de pe placuta (vezi punctul 2.4).

Pentru o schema reprezentativa a modului in care trebuie sa legati pinii celor 2 mufe
aveti imaginea de mai jos :

Interfata USB
Adaugarea interfetei USB va ajuta la programarea placutei folosind un
bootloader. De asemenea, aceasta interfata poate fi folosita si pentru a
alimenta placuta.

Materiale necesare

Schema electrica

Realizare

Este recomndat sa pozitionati conectorul USB in apropierea portului D, mai exact, in


apropierea pinilor PD2 si PD3. Pentru a prinde conectorul USB pe placa, trebuie date 2
gauri mai mari (sau largite 2 gauri existente) pentru pinii de prindere (sunt mai grosi).
Apoi se lipeste conectorul. In figura de mai jos sunt identificate conexiunile tipice pentru
USB (Vcc, masa, D+ si D-).

In figura de mai jos este prezentata o modalitate de asezare a pieselor:

Se pozitioneaza rezistentele de 100R astfel incat sa fie usor de conectat la PD2 si PD3,
respectiv la D+ si D-. In figura de mai jos este sunt prezentate lipiturile:

In final, se conecteaza Vcc si masa la restul montajului. De exemplu, puteti duce Vcc la
pinul 3 al stabilizatorului LM7805 si masa la pinul 2.

Recomandri Proiect
1.

Folosii bare de pini i headere pentru a conecta ntre ele diverse module ale
circuitului vostru.

n felul acesta putei s le deconectai uor n vederea transportului sau a

depanrii.
Legarea direct doar cu fire poate conduce la repetata rupere a acestora.

2.

Testai ceea ce lipii pe parcursul realizrii plcii.


Este mai uor s depanezi o problem ntr-un circuit mai mic dect ntr-

unul mai mare.


Dac apare o problem atunci poate fi izolat la partea de circuit

netestat.
3.
Lipii piesele cu datasheet-ul n fa pentru a fi siguri c lipii la pini la care
credei c lipii.

E mai uor s previi dect s depanezi.

Exemplu: 7805CT i LM1086IT-3.3 arat la fel, dar ordinea pinilor e


diferit.

Depanare
1.

Am alimentat plcua prin stabilizatorul de 5V, dar la VCC nu am 5V.


Verificai c la intrare avei peste tensiunea minim specificat n

datasheet. Aceast tensiune se msoar cu stabilizatorul conectat i nu cu sursa


de tensiune aflat n gol.
Tensiunea scade la ieirea sursei de tensiune n momentul conectrii unei

sarcini.
Stabilizatorul de 5V arde.
Exist un scurtcircuit sau o component care consum foarte mult curent.
Este alimentat cu o tensiune cam mare. 9-12V este suficient.

2.

Pai de depanare
1.
2.
3.

Verificai c nu avei lipituri reci (lipituri unde fludorul nu atinge bine traseul)
Cu multimetrul, verificai s nu avei scurtcircuit ntre GND i VCC
Pentru a putea fi programat pentru prima oar, ave i nevoie de RESET, MISO,
MOSI, SCK nafar de VCC i GND. Verificai c aceste trasee nu sunt scurtcircuitate
ntre ele. Ele pot fi gsite uor ntre header-ul de programare (23) i pinii
microcontroller-ului.
4.
Pentru USB, trebuie s verificai de PD2 i PD3.
5.
Pentru serial, avei nevoie de cei patru condensatori electrolitici, MAX232 i
traseele RX, TX de la microcontroller. Verificai-le.

Ghid proiect etapa 2


Idee
Acum avei un mic sistem de calcul, pe care l pute i programa i extinde. Ce face i de
aici ncolo?
Primul pas, foarte important, este s venii cu o idee de proiect. Nu trebuie neaprat s
fie ceva super-original, aa c nu v facei griji. Din fericire pentru voi, nu sunte i primii

care au trebuit s fac proiect la PM i putei vedea cu ce idei de proiecte au venit


colegii votri din ani mai mari (n 2009 sau n 2010). Nu numai att, dar pe Internet se
gsesc o mulime de blog-uri i articole cu proiecte bazate pe AVR-uri, toate v pot da o
idee despre ce ai putea face.
Q&A:
1.

Dar nu am nicio idee, ce pot face?


nseamn c nu te-ai uitat suficient pe proiectele existente. Imposibil s

nu gseti ceva ce i-ar place s construieti singur!


Nu-mi poate da asistentul de proiect o tem i gata?
Asistentul te poate ajuta odat ce ai o idee, s- i spun cam ct de viabil

este ideea, cam ce piese i-ar trebui


Ce fac odat ce am o idee?
Trebuie s discui cu asistentul de proiect s vezi dac ideea este

viabil/admisibil
Exist idei de proiect care nu se admit?
Da, exist proiecte care sunt considerate prea uoare, care se pot face cu

2.

3.

4.

hardware minim/inexistent i cu cod din laboratoare. De exemplu termometru,


ceas digital, incint cu nclzire.

Faza de pregtire
Avei o idee i acum ncercai s v facei un plan de atac. n urma documentrii i a
discuiilor cu asistentul de proiect, trebuie s avei n vedere:

Ce tip de piese v trebuiesc


ex: modul Bluetooth, pori logice, LED-uri, deci un tip de pies, nu e cazul

s fie foarte specific la faza asta!


Cteva dintre piese vor fi evidente, piese centrale proiectului: modul

Bluetooth, display LCD grafic, matrice LED-uri, motoare, .a.m.


Alte piese vor fi mai puin evidente, piese de suport:

multiplexoare/shifter-e pentru matricea de LED-uri, drivere pentru motoare


Ce periferice vei folosi pe Atmega16
Este foarte important n faza asta s tii cam de ci pini ave i nevoie i

ce periferice ocupai, pentru a vedea dac nu depii capacitile Atmega16!


Nu putei face un proiect care folosete 5 canale de PWM dac pe

Atmega16 avei doar 4!


Mai precis, putei, dar trebuie s inei cont de ce periferice avei i de

metodele prin care putei extinde capabilitile sistemului de calcul pe care-l


avei la dispoziie:

Perifericele se pot emula n software: PWM, USART

Periferice se pot multiplexa (mai multe componente ale proiectului


s se conecteze la acelai periferic i s-l foloseasc pe rnd): SPI, I2C, ADC.

Aici este momentul n care putei deja s punei n documenta ie schema bloc a
proiectului i o scurt descriere.
Q&A:
1.

De unde tiu ce piese o s-mi mai trebuiasc pe lng cele evidente?


Fiecare va avea propria sa documentaie care te va ajuta s compui

schema complet a proiectului.


2.
Am nevoie de perifericul X de mai multe ori, dar nu l-am dect de x ori.
De unde tiu dac pot sau nu s-l emulez n software?

Pentru unele periferice exist chiar biblioteci care le emuleaz pe AVR,

3.

trebuie doar cutate (bootloader-ul de pe placua de proiect folose te un device


USB fcut n software, de exemplu). Alte periferice, ca PWM-ul, se pot face n
software fr prea multe dureri de cap.
Exist i dezavantaje ale emulrii perifericelor n software?
Da, costul cel mai mare fiind n timp de procesare. Asta nseamn c ve i
avea mai puin putere de procesare pentru codul vostru. Alte dezavantaje sunt:
dimensiunea codului, pini importani ocupai (usb-ul n software ocup doi pini de
ntrerupere extern).

Planificare
n acest moment avei:

ideea de proiect
un numr de piese i o schi de cum ar trebui s se lege ntre ele

Acum trebuie s trecei de la piese fictive/idealizate la piese pe care le pute i cumpra


n magazin. Magazinele mai mari au fiecare site pe care pute i cuta piese care v
intereseaz:

Conex
Syscom
TME
Comet

i pentru roboi:

Robotop
Robofun
Mecatronica.eu
Sparkfun (din SUA, dureaza 2 sapt pana vine o comanda)

Pentru piese exotice, ntrebai-l pe Dan cum pute i face comand


din Farnell sau Digikey. Cutai-le nti n catalogul lor online, ca s fii siguri ca exist
n stoc.

Site-uri de agregare (care indexeaz site-urile magazinelor de la noi) sunt:

http://www.allparts.ro
http://www.dioda.ro

n urma acestor cutri, trebuie s obinei:

un cod de pies
datasheet pentru pies

Read The Friendly Datasheet Datasheet-ul conine informaii eseniale pentru


proiectul vostru. Ideal ar fi s citii datasheet-ul cap-coad pentru piesele pe care le
folosii. Informaiile minime pe care trebuie s le obinei sunt:

Tensiune de alimentare
Nivelele logice de tensiune
Consum de curent
Scheme de interconectare
Protocoale (dac este cazul)
Cazuri limit

Proiectare
Ai ajuns la pasul de care probabil v e fric cel mai tare, schema! Dac a i fost
contiincioi pn aici e posibil s avei deja schemele de interconectare din datasheeturile pieselor respective, trebuie doar puse cap la cap. V recomandm s folosi i un
CAD dedicat pentru proiectarea schemelor, de exemplu Eagle CAD. Tutoriale pentru cum
se folosete gsii att pe net ct i pe site-ul cursului de ic http://elf.cs.pub.ro/ic.
Dac v mai poticnii, gndii-v c nu suntei primii care folosesc piesa respectiv,
sigur se gsete pe Internet vreun proiect care folose te o pies asemntoare!

Software
Aici suntei ai, nu? Nu e nevoie de sfaturi pentru partea software, Atta tot c dac
ocupai toat memoria de program (cei 16k), trebuie s tii c exist un
microcontroller numit atmega32, care este drop-in compatible, trebuie doar
recompilat codul pentru noua platform i pus n soclu n locul lui atmega16.

Sfaturi generale

Nu lsai pe ultima sut de metri cumpratul pieselor! S-ar putea s nu mai

gsii ce v trebuie.
Nu amnai pana in ultimul moment lucrul la proiect. Apucai-v din timp, pentru
c nu putei ti ce probleme ntmpinai pe drum! Proiectul acesta NU este ceva pe
care putei s-l facei cu o sear naintea termenului limit.

Nu fii timizi. Asistenii de proiect sunt acolo ca s v ajute. Bate i-i la cap cu

orice fel de ntrebare avei (legat de proiect, evident).


Nu disperai, n cazul n care nu reuii s ne prezentai proiectul la timp, nc
mai putei fi folositori la ceva: