Beruflich Dokumente
Kultur Dokumente
mikrokontrolerima
Uputstvo za rukovanje
- napisano za potrebe projekta u okviru takmienja:
Aleksandar ivkovi
aleksandarz@ieee.org
januar 2005
Sadraj:
Potrebno predznanje............................................................................................................. 3
Uvod......................................................................................................................................... 4
Jednostavan projekat............................................................................................................ 6
Hardver (1)........................................................................................................................... 6
Radno okruenje, pisanje koda i otkrivanje greaka (2, 3, 4)........................................... 6
Simulacija: priprema i izvravanje (5, 6)......................................................................... 11
Prebacivanje koda: PC C (7) ..................................................................................... 13
Literatura.............................................................................................................................. 15
Dodatak primer program................................................................................................ 15
Potrebno predznanje
Da bi uspeno mogli obavljati proces pisanja softvera za mikrokontroler i njegovog
programiranja potrebno je posedovati sledea znanja:
1) poznavanje arhitekture mikrokontrolera koji emo koristiti
2) poznavanje hardvera u kojem e biti smeten na mikrokontroler
3) poznavanje programskog jezika u kojem e se pisati kod
4) razvojno okruenje na PC raunaru
Naredni tekst podrazumeva poznavanje prve tri pomenute take i daje kratko uputstvo za
korienje razvojnog okruenja za programiranje mikrokontrolera.
Uvod
Razvojni sistem koji je pisan ovde, u prvu ruku je namenjen za rad sa mikrokontrolerima
proizvoaa ATMEL. Glavna osobina ovog razvojnog sistema jeste da je sainjen od
komponenti koji ne potiu iz istog izvora. Iz tog razloga one nisu vrsto povezane te se
kao takve mogu koristiti i pojedinano, nezavisno jedne od drugih. Sa druge strane, one
su dovoljno dobro usklaene sa razlogom da bi rad sa njima u kompletu bio konforan.
Sistem se sastoji od tri celine:
kompajlera za C kod (AVR GCC)
simulatora napisanog programa za dati mikrokontroler (AVR Studio 4)
programatora i eksperimentalne ploe
Ako posmatramo proces programiranja jednog mikrokontrolera, moemo ii po sledeoj
emi (slika 1):
IDEJA
UTVRIVANJE
ALGORITMA
SLOEN
PISANJE KODA NA
VIIM
PROGRAMSKIM
JEZICIMA (C, C++)
PISANJE KODA U
ASEMBLERU
PREVOENJE U
KOD ZA
SIMULACIJU
SIMULACIJA
DA
PRONAENA
GREKA
SIMULACIJA
NE
NE
PRONAENA
GREKA
DA
PREVOENJE U
MAINSKI KOD
PROGRAMIRANJE
MIKROKONTROLERA
KRAJ ?
Slika 1
Uvek polazimo od ideje. Prilikom definisanja algoritma moramo biti svesni zahteva koje
na dizajn diktira i sposobnosti hardvera da udovolji tim zahtevima. Ovo je vrlo bitan deo
u procesu. Na osnovu kompleksnosti algoritma treba doneti odluku kojim putem emo
bre stii do cilja ili koji put e omoguiti dalje usavravanje projekta. Programiranje u
asembleru je ponekad nuno i u sluajevima kad je algoritam kompleksan, ali zahteva
4
tesnu vezu sa hardverom (ukoliko postoje razna ogranienja u brzini izvravanja, veliini
koda... Takve probleme ne mogu da ree ni najbolji kompajleri, ve iskusni embedid
programeri). Desna grana je najei izbor. Tu nas eka pisanje koda na C-u, prevoenje
u kod za simulaciju i sama simulacija. Sve do sad pomenuto se u potpunosti moe obaviti
bez posedovanja samog mikrokontrolera. Petlja ,,PRONALAENJE GREAKA ,,PISANJE KODA oduzima najvei deo vremena u projektovanju. Od kvaliteta
simulatora zavisi to koliko emo biti blie stvarnosti i to da li e mikrokontroler odmah
po prebacivanju koda u njega izvravati eljeni algoritam. Ako simulator vie ne
prijavljuje greku, moemo prei na kompajliranje i programiranje. Tek sad moemo
stvarno da izmerimo eljene signale. Petlja koja se vraa sa oblaia ,,KRAJ treba da
sugerie da u ovom delu takoe sledi testiranje i izmena koda, ali to nije tema ovog
teksta.
U narednim poglavljima bie opisani alati i postupci koji prate tok eme sa slike 1.
Jednostavan projekat
Hardver (1)
Slika 2
Slika 9 Jedan deo makefile-a (definisanje tipa mikrokontrolera i imena fajla u kome se nalazi C kod)
Slika 10 Kada je uitan odgovarajui C kod i makefile moe se prei na kompajliranje. To se ini
komandom ,,Make All
Ovo je bitan deo u celom procesu jer nam kompajler javlja sintaksne greke u programu i
eventualne nepravilnosti u opisu makefile-a. Za vreme ispravljanja ovih greaka stalno
emo se vrteti u krug: ispravi greku proveri da li ih ima jo (kompajliranje). Za vreme
kompajliranja u direktorijumu u kome je snimljen projekat e se generisati mnogo
dokumenata koji mogu da se pre novog kompajliranja izbriu naredbom ,,Make Clean
(slika 12).
10
Slika 12
U naem sluaju potrebno je iz programa AVR Studio 4 otvoriti fajl pod nazivom
uputstvo.cof. Po uitanom fajlu, potrebno je izabrati opciju AVR Simulator i tip
mikrokontrolera kao na slici 15.
11
12
Slika 15
-c sp12
-E novcc -U flash:w:uputstvo.hex
Thank you.
13
Sve radnje koje su opisane u ovom izvetaju mogu da se definiu u makefile-u. Ovde se
na primer posle, uitavanja koda u mikrokontroler vri itanje upravo ubaenog koda i
poredi sa kodom na PC-ju. Tako se vri verifikacija upisa u mikrokontroler.
Ovime je zavren proces programiranja jednog ATMEL mikrokontrolera .
14
Literatura
Prethodni tekst obuhvata veoma veliku oblast i zbog njegovog malog obima nemogue je
ukazati na detalje koji mogu da se pojave u toku rada sa mikrokontrolerom. Zbog toga se
italac upuuje na bogatu literaturu i podrku u vidu Windows Help-a koju poseduje na
raunaru gde je instaliran ovakav razvojni sistem:
AVR GCC dokumentacija: c:/WinAVR/doc/avr-libc/
AVR Dude softwer za programiranje: c:/WinAVR/doc/avrdude-4.4.0/
AVR Studio 4 - simulacija: Glavni meni >> Help >> AVR Studio User Guide
Korisna adresa: http://www.avrfreaks.net - odlino organizovan sajt gde moete
nai mnotvo informacija o ovoj tematici i gde ete na forumu vrlo brzo dobiti
odgovor na vae pitanje
<inttypes.h>
<avr/io.h>
<avr/io2313.h>
<avr/interrupt.h>
<avr/signal.h>
<math.h>
15
/* omoguci interapte */
sei ();
int
main (void)
{
ioinit ();
/* for-petlja se vrti zauvek, a interapti obavljaju ostalo*/
for (;;){
return (0);
temp = ugao*konst;
pwm = (int) (amplituda*sin(temp)*sin(temp));
OCR1 = pwm;
}
16