[Home][Introducere][Programator][Pagina veche][Proiecte][Forum][Trimite-mi un mesaj/Send a message]

Click here for My ultimate project ,Home automation

Cum am programat un microcontroler!!!

ATENTIE! PUTETI DISTRUGE IREMEDIABIL CALCULATORUL LUCRAND DIRECT CU PORTUL PARALEL SAU SERIAL. NU SUNT RASPUNZATOR DACA NU AVETI CUNOSTINTE IN DOMENIU SI CAUZATI DEFECTE IREMEDIABILE! ACEASTA PAGINA ARE DOAR SCOP INFORMATIV!

TwinAvr este un programel cu care puteti incarca memoria microcontrolerului.

CARACTERISTICI !
Operating Voltage:
1.8 - 5.5V for ATtiny13V 
2.7 - 5.5V for ATtiny13 
  Speed Grade
ATtiny13V: 0 - 4 MHz @ 1.8 - 5.5V,
                      0 - 10 MHz @ 2.7 - 5.5V 
ATtiny13: 0 - 10 MHz @ 2.7 - 5.5V,
0 - 20 MHz @ 4.5 - 5.5V
Low Power Consumption
Active Mode:
1 MHz, 1.8V: 240A 
Power-down Mode:
< 0.1A at 1.8V
 

 

Link-uri utile

bascom
preturi microcontrolere 
datasheet
 
ATTiny13 datasheet.

PROIECTE
Voltmetru
microfon prin attiny13

ATtiny13
Am cumparat un ATtiny13 fiind cel mai ieftin de pe piata(50 de mii lei vechi) si am ramas surprins de ce poate sa faca.Aceasta pagina este facuta cu scopul de a familiariza lucrul cu microcontrolerele,in special Attiny13.Desi am cumparat si un pic12 si un AT89 nu am reusit sa 'comunic' cu ele.E adevarat ca nu am cautat foarte multa documentatie ,atata timp cat acest ATtiny13 a mers din prima.Dar ce este un microcontroler? Este un minicalculator care o data programat ,executa la infinit instructiunile,si comunicand cu lumea de afara prin porturi(pinii integratului).ATtiny13 l-am programat foarte usor prin portul paralel si ma surprins ca a functionat din prima! Interesant si placut este ca mai contine un convertor analog-digital de tensiune ce poate fi folosit intr-o multime de aplicatii!!!.

Este produs de firma ATMEL  unde gasiti documentatia si programul AVR STUDIO pentru a simula programele.

img1.jpg
fig.1

fig
fig.2
TwinAvr este un programel cu care puteti incarca memoria microcontrolerului...(cel cu care am lucrat eu!!!)

Microcontrolerul nu necesita alimentare separata,dupa cum se vede se alimenteaza direct din port!!

Programare

120 instructiuni
1K Byte Memorie Flash
64 Bytes EEPROM
64 Bytes SRAM

 

Registri de la 0x00 la 0x3F
(cititi datasheet)

Exemplu Practic :     Voltmetru cu citire pe PC cu ATtiny13

Inainte de a incepe trebuie ca cumparati (daca nu aveti in prealabil!!!) o mufa ptr port LPT1 si una ptr COM1.

PROGRAMARE ATiny13 cu Twin Avr

1.Urmariti cu atentie figura alaturata si realizati legaturile.Daca dispuneti de alimentare (o puteti face cu 3 baterii R6 sau alta sursa de curent constant de maxim 5.5 V)... renuntati la rezistentele de la Data2-Data6 si legati Vcc (pin 8) la polul + al bateriei(sursei) si  GND (pin 4) la polul minus al bateriei (sursei).

 

2.Legati
PARALEL  =>    ATtiny13
--------------------------------------------
DATA0 (pin2)  => pin7 (SCK)

DATA1 (pin3) => pin1 (RESET)

DATA7 (pin8) => pin5 (MOSI)

BUSY (pin11) => pin6 (MISO)

GND(pin25,24,23,...)=>pin4(GND)

Daca dispuneti de sursa separata de maxim5,5 volti renuntati la rezistentele de la DATA2-DATA6

3.Introduceti mufa in portul paralel al PC-ului.

4.Downloadati si dezipati pachetul voltmetru.zip.Deschideti TwinAvr.exe.Setati ATtiny15(ptr ca nu are 13! sic!) Apasati butonul "Write" si cautati volt.hex!

5.Verificati daca sa incarcat memoria microcontrolerului cu fisierul volt.hex!Scoateti mufa LPT1 din PC
.6.Dezlegati legaturile cu PC-ul.Acum microcontrolerul nu are legaturi decat spre alimentare si functioneaza atat timp cat este alimentat.

PROGRAMARE ATiny13 cu PonyProg2000

Aveti aici documentatia si  programul executabil iar cum se fac legaturile la PC le gasiti aici.
Nu am mai intrat in amanunte! EU am folosit ambele scheme si au mers din prima.Daca aveti nelamuriri scrieti-mi pe adresa bobyca2003@yahoo.com

Lucrul cu microcontrolerul ATtiny13

5.Realizati urmatoarele legaturi la mufa COM..

Introduceti mufa COM in portul serial al PC-ului.

Cu test_com.exe verificati PC-ul daca atunci cand scrieti in port acesta va raspunde!

Daca legati pin2 de la un calculator cu pin 3 de la celalalt calculator si pin3 cu pin 2 puteti face transmisie seriala de date intre doua calculatoare.
Merita sa incercati (cu test_com.exe)!!! Nu uitati masa pin5 care se leaga tot la pin5 la celalalt calculator.

6.Daca OK! desfaceti legatura dintre pin2 si pin3 al mufei com,iar pinul3 al mufei com(TRANSMIT DATA) legati la pin3 al ATtiny13(PB4)

7.Realizati urmatoarele legaturi.

  Schema originala este la adresa http://fab.cba.mit.edu/projects/htmaa/dvm/dvm.html

 

8.Deschideti voltmetru.exe si introduceti mufa COM in PC.Click pe "citeste".Si daca ati parcurs pasii bine ,functioneaza!

Incheiere:ATtiny13 decodifica tensiunea pe 10 biti.Eu am facut programul sa citeasca numai primul byte.Inca o data ma repet ... tot ce este aici ,este cu scop informativ,pentru a va trezi interesul.Plecand de aici se pot realiza o multime de proiecte,se pot citi digital si intr-o plaja de 10 biti diferite traductoare de temperatura,presiune,lumina,etc. La un pret foarte mic puteti realiza multe montaje utile.Succes!!Si astept sa ma contactati cu intrebari. bobyca2003@yahoo.com

Introducere in programare(sau cateva chestii pe care ar trebui sa le invatati )

Registrul 0x18 (PORTB) este port de iesire.Registrul 0x17 (DDRB) seteaza tipul portului (intrare/ iesire).Registrul 0x16 (PINB) este port intrare.
SBI PORT,N -inseamna: Set (face 1) bitul N din PORT iar CBI PORT,N -inseamna Clear(face 0) bitul N din PORT.
O prima aplicatie ar fi sa legam la pinul 3 (PB4) un led inseriat cu un rezistor de 1-5 kohmi.
Scriem:
SBI 0x17,0x04 ; setam piciorus 3 (PB4) ca  iesire
SBI 0x18,0x04 ;punem pe piciorus 3 (PB4) --1 ,adica tensiune care se va scurge prin led la masa (ledul se aprinde!)

 daca introducem in fisierul asm (include "tn13def.inc") programul va arata astfel:
 SBI DDRB,DDB4 ; DDRB=0x17 si DDB4=0x004
 SBI PORTB,PORTB4 ;PORTB=0X17 si PORTB4 =0x004

Daca vi se pare complicat... downloadati AVR studio si simulati mici programe.
Un exemplu:
.include "tn13def.inc"       ;daca nu folositi acest fisier ... in loc de DDRB sau PORTB tre sa scrieti 0x17 sau 0x18 (sper ca stiti ce vreau sa spun!!!)
.def temp = R17                 ;  registrul 17 i-l numim temp ... atentie! nu toti registrii pot fi folositi ptr date temporare
                                            ;... de ex. reg 0x17 stiti ptr ce-l folosim, nu-l putem folosi ptr temporar
                                            ;trebuie sa aveti deschisa fereastra registri pentru a vedea modificarile care se fac!!!
 ldi temp,0xF0                    ; incarca reg temp (adica 0x17) cu F0 hexa... daca va uitati in fereastra registri vedeti modificarea
 costy35:
inc temp                             ;incrementeaza valoarea din registrul temp (registrul 17) ... a nu se confunda cu registrul 0x17 (hexa)
 brne costy35                        ; salt la costy35 daca temp nu e egal cu 0... temp o sa fie ...253...254...255...0...1...2...
                                          ; dupa ce incrementeaza 255 se face 0 (cred ca stiti ce vreau sa spun!) si nu mai sare
                                          :daca nu mai e nici o linie de program controlerul sare la prima linie (ldi temp,0xF0)
Download-ati
ATTiny13 datasheet unde aveti toate instructiunile microcontrolerului,si incet incet prin simulare,sa va obisnuiti cu ele.
Se poate programa si in c sau bazic (cautati pe internet) ... dar in asm ocupa spatiu mai mic programul.

Cu aceasta mica introducere sper sa va fi starnit curiozitatea si va recomand sa cititi ATTiny13 datasheet. pentru a intelege mai mult!
 Deasemenea gasiti pe google o multime de materiale interesante.                      Succes!  

                                                                                                                                                                                bobyca2003@yahoo.com

 

Site-uri ce mi sau parut folositoare :
electronica:
tutoriale de electronica  rx-tx ptr microcontrolere
datasheet:
datasheetarchive~~~baza de date componente electronice
magazine piese electronice:
comet srl~~~~~~aici am gasit rfpic(datele sunt transmise si/sau receptionate prin unde radio)
conexelectronic~onoreaza si comenzi mici prin posta,taxa posta +ambalare aproximativ 7 lei pentru Galati
conexelectronic~attiny13- 4.3 lei
adelaida~~~~~~magazin piese  adelaida-programatoare pic