Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
BUDAI TAMÁS
2015. 09. 06.
Labor gyakorlat – MikrovezérlőkATMEL AVR – ARDUINO
1. ELŐADÁS
Labor 2 – mikrovezérlők modul
• 2 alkalom
–1 mikrovezérlők felépítése, elmélet
–2 programozás, mintaprogramok
• Értékelés: a 2. alkalom elején miniZH az
1. alkalommal elhangzottakból.
Forma: 5+1 rövid választ igénylő kérdés
2015. 09. 09.2
Tartalom
Előadó: Budai Tamás
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.3
Tartalom
Előadó: Budai Tamás
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.4
Tartalom
Előadó: Budai Tamás
Mikrovezérlő:
• Kisméretű, alacsony fogyasztású,
programvezérelt digitális hálózat, avagy
számítógép
2015. 09. 09.5
Mikrovezérlők
Előadó: Budai Tamás
Alkalmazási területek:
• Háztartási és szórakoztató elektronika
• Ipari elektronika
• Járműipar
• Gyógyászati eszközök
• „SMART” eszközök
• …
2015. 09. 09.6
Mikrovezérlők
Előadó: Budai Tamás
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.7
Tartalom
Előadó: Budai Tamás
2015. 09. 09.8
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Mikroprocesszor
ALU
Mikrovezérlő
CU ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
A mikrovezérlő (=mikrokontroller) = teljes számítógép egy
tokban (SoC)
2015. 09. 09.9
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Mikrovezérlő
ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
Számítógép, tehát
érvényesek rá a Neumann
alapelvek:
• Elektronikus
• Bináris számrendszer
• Adat és programmemória
• Univerzális Turing-gép
2015. 09. 09.10
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Mikrovezérlő
ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
CPU (ALU+CU):
• Egyes családoknál* közös
• Meghatározza a
számábrázolást*:
8,16,32bit…
2015. 09. 09.11
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Mikrovezérlő
ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
Memória típusok:
• Program memória
• Perzisztens, nem újraírható
• Perzisztens, de újraírható
• Adatmemória
• Nem perzisztens: RAM
• Perzisztens: ROM
2015. 09. 09.12
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Mikrovezérlő
ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
Megszakítás kezelő:
• A normál futást megszakítva
rákényszeríti a rendszert, hogy
azonnal hajtson végre egy
speciális programrészt
• Megszakítás forrásai
• Belső: időzítő, periféria
• Külső: adott lábon felfutó él
2015. 09. 09.13
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
2015. 09. 09.14
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Működés
Egy általános célú mikrovezérlő a reset esemény után a
következő lépéseket hajtja végre:
1. Minden periféria alaphelyzetbe állítása
2. A program lépéseinek végrehajtása a „reset
vektor”-tól (programmemória elejétől) az órajel
szerint
2015. 09. 09.15
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Működés
Egy általános célú mikrovezérlő a reset esemény után a
következő lépéseket hajtja végre:
1. Minden periféria alaphelyzetbe állítása
2. A program lépéseinek végrehajtása a „reset
vektor”-tól (programmemória elejétől) az órajel
szerint
2015. 09. 09.16
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Reset
A reset esemény: a mikrovezérlő (újra)indítása
A reset esemény forrásai:
• Power-on reset (bekapcsolás)
• External reset (külső reset láb szintváltozása miatt)
• Watchdog system reset (őrkutya* miatt)
*Ezért a fordításért külön elnézést kérek
2015. 09. 09.17
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Program (Gépi kód)
• A gép által értelmezhető binárisan kódolt utasítások
sorozata
Forráskód
• Majd a programozásnál…
2015. 09. 09.18
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Órajel
• Mivel a mikrovezérlő egy digitális hálózat ezért a
működéséhez szükség van órajelre.
• Jelalak: négyszögjel
• mértékegysége: 1/s vagyis Hertz
• Tipikus nagyságrendje napjainkban: 1MHz-100MHz
Forrás Pontosság Költség
RC oszcillátor Alacsony Legolcsóbb
Kerámia rezonátor Közepes Olcsó
Rezgőkristály Magas Drága
2015. 09. 09.19
Mikrovezérlők felépítése, működése
Előadó: Budai Tamás
Órajel ciklus, ciklusidő
• Ciklusidő: Az órajel két egymást követő le/felfutó éle
közt eltelt idő (vagyis a négyszögjel periódusideje)
• Utasítások jellemzése: hány órajelciklus szükséges a
végrehajtáshoz
Pl.:
• Feltétel nélküli ugrás – 1 ciklus
• Összeadás – 2 ciklus
(Minél kevesebb, annál jobb)
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.20
Tartalom
Előadó: Budai Tamás
2015. 09. 09.21
Mikrovezérlő típusok, gyártók
Előadó: Budai Tamás
Mikrovezérlők
Bitek száma
4 8 16 32
Memória / perifériák helye
Külső Belső
Utasításkészlet
RISC CISC
Gyártók• Atmel
• Infineon
• Intel
• Microchip
• Motorola
• National Instruments
• Parallax
• Texas instruments
• Xilinx
• …
2015. 09. 09.22
Mikrovezérlő típusok, gyártók
Előadó: Budai Tamás
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.23
Tartalom
Előadó: Budai Tamás
• Tipikus perifériák– Digitális be/kimenetek
– A/D konverter
– D/A konverter
• Speciális perifériák– BUS illesztők*:
• SPI
• UART (RS232)
• I2C
• CAN
• …
– érintés-érzékelő– PWM kimenet
2015. 09. 09.24
Mikrovezérlők perifériái
Előadó: Budai Tamás
*Nem feltétlenül szükséges minden buszhoz (bitbang)
Mikrovezérlő
ALU CU
Memória
Perifériák
Órajel-generátor
Megszakítás kezelő
• Digitális bemenet:
– Egy bemenet egy láb
– Egy bit reprezentálja a logikai szintet:
• 0 = alacsony
• 1 = magas
• Digitális kimenet:
– Egy kimenet egy láb
– Ugyan az, mint a bemenet, csak itt a bitet írjuk és
nem olvassuk
2015. 09. 09.25
Mikrovezérlők perifériái
Előadó: Budai Tamás
*Nem feltétlenül szükséges minden buszhoz (bitbang)
• A/D átalakító:– Bemenet
– Működés:
• Mintavételezés
• Kvantálás
– Jellemzői:
• Felbontás (hány bites)
• sebesség
– Az analóg jel amplitúdója a föld és egy referenciapotenciál közt értelmezett (ez általában a táfeszültség) és egy változóból kiolvasható
2015. 09. 09.26
Mikrovezérlők perifériái
Előadó: Budai Tamás
*Nem feltétlenül szükséges minden buszhoz (bitbang)
• D/A átalakító:– Kimenet
– Jellemzői:
• Felbontás (hány bites)
• sebesség
– Az analóg jel amplitúdója a föld és egy
referenciapotenciál közt értelmezett (ez általában a
táfeszültség)
– Logikája azonos az A/D-vel, csak itt beírjuk a kívánt
szintet és nem kiolvassuk
2015. 09. 09.27
Mikrovezérlők perifériái
Előadó: Budai Tamás
*Nem feltétlenül szükséges minden buszhoz (bitbang)
• BUSZ illesztők:
– Be/kimenet
– Annyi lábat használ, amennyit az adott BUSZ megkíván:
• Pl.: CLK, RX, TX
– Működését az adott BUSZ típusa határozza meg
– Tartozhat hozzá speciális memóriarész (pl. fogadó buffer)
2015. 09. 09.28
Mikrovezérlők perifériái
Előadó: Budai Tamás
*Nem feltétlenül szükséges minden buszhoz (bitbang)
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.29
Tartalom
Előadó: Budai Tamás
2015. 09. 09.30
Mikrovezérlők programozása
Előadó: Budai Tamás
Program (Gépi kód)
• A gép által értelmezhető binárisan kódolt utasítások
sorozata
Forráskód
• Az egyszerűbb kezelhetőség érdekében adjunk rövid
nevet az egyes utasításoknak
• Ember által értelmezhető, gép által nem;
• Ahhoz, hogy futtatható legyen fordításra van
szükség!
2015. 09. 09.31
Mikrovezérlők programozása
Előadó: Budai Tamás
Forráskód
Fordító
Gépi kód101001011101010101010
Egy mikrovezérlő bármilyen nyelven programozható, ha van az adott nyelvhez és vezérlőhöz fordítóprogram.
• Programnyelvek
– Alacsony szintű
• Assembly
– Magas szintű
• C, C++, FORTRAN, Pascal…
2015. 09. 09.32
Mikrovezérlők programozása
Előadó: Budai Tamás
• Mikrovezérlők– Mikrovezérlők felépítése, működése
– Mikrovezérlő típusok, gyártók
– Mikrovezérlők perifériái
• Mikrovezérlők programozása– A C programozási nyelv (ismétlés)
– ATMEL AVR mikrovezérlők programozása
– Az ATMEL studio használata
– Feladatmegoldás
2015. 09. 09.33
Tartalom
Előadó: Budai Tamás
• Alapok
• Változók, adattípusok
• Operátorok
• Elágazások, Feltételes utasítások
• Ciklusok
• Függvények
2015. 09. 09.34
A C programozási nyelv (ismétlés)
tartalom
Előadó: Budai Tamás
2015. 09. 09.35
A C programozási nyelv (ismétlés)
Alapok
Előadó: Budai Tamás
A forráskód:
• Egyszerű szövegfájl
• Ember által értelmezhető
• Utasítások sorozata
• Kötött formátum
2015. 09. 09.36
A C programozási nyelv (ismétlés)
Alapok
Előadó: Budai Tamás
Példa
2015. 09. 09.37
A C programozási nyelv (ismétlés)
Alapok
Előadó: Budai Tamás
#include direktíva:
• más forráskódrészeket tudunk beágyazni
• ezek erősen függenek a használt
környezettől
main() függvény:
• minden programban pontosan egy
darabnak kell lennie
• itt kezdődik a programunk végrehajtása
2015. 09. 09.38
A C programozási nyelv (ismétlés)
Változók, adattípusok
Előadó: Budai Tamás
A legkisebb egység: 1 bit
8 bit = 1 byte
B
B B B B B B B B
void „semmi” (ezt is jelölni kell valahogy)
bool logikai (igaz/hamis)
char egy karakter (1 byte)
int (előjeles) egész szám
unsigned int egész szám
float lebegőpontos szám
double dupla pontosságú float
string char-okból álló tömb
Változótípusok
2015. 09. 09.39
A C programozási nyelv (ismétlés)
Változók, adattípusok
Előadó: Budai Tamás
Példa
2015. 09. 09.40
A C programozási nyelv (ismétlés)
Változók, adattípusok
Előadó: Budai Tamás
Tömbök:
• Egy adott adattípusból álló több elemű
halmaz
• A memóriában folytonosan helyezkedik el
• A tömb méretét előre meg kell mondanunk*
2015. 09. 09.41
A C programozási nyelv (ismétlés)
Változók, adattípusok
Előadó: Budai Tamás
Tömbök:
• Egy adott adattípusból álló több elemű
halmaz
• A memóriában folytonosan helyezkedik el
• A tömb méretét előre meg kell mondanunk*
2015. 09. 09.42
A C programozási nyelv (ismétlés)
Operátorok
Előadó: Budai Tamás
Operátorok:
• Aritmetikai: + - * / % ( )
• Összehasonlító: == != < <= > >=
• Logikai: && || !
• Bitenkénti: & | ^ ~ << >>
• Helyben módosító: ++ -- += -= *= /= &= |=
• Egyéb: sizeof
2015. 09. 09.43
A C programozási nyelv (ismétlés)
Operátorok
Előadó: Budai Tamás
Példa
2015. 09. 09.44
A C programozási nyelv (ismétlés)
Elágazások, feltételes utasítások
Előadó: Budai Tamás
Elágazások:
• if, if-else
• switch case
2015. 09. 09.45
A C programozási nyelv (ismétlés)
Elágazások, feltételes utasítások
Előadó: Budai Tamás
If-else
2015. 09. 09.46
A C programozási nyelv (ismétlés)
Elágazások, feltételes utasítások
Előadó: Budai Tamás
Switch-case
2015. 09. 09.47
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
Ciklusok:
• for
• while
• do-while
• Ciklusvezérlés
2015. 09. 09.48
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
Tömörebben:
for
2015. 09. 09.49
A C programozási nyelv (ismétlés)
Elágazások, feltételes utasítások
Előadó: Budai Tamás
while
2015. 09. 09.50
A C programozási nyelv (ismétlés)
Elágazások, feltételes utasítások
Előadó: Budai Tamás
do-while
2015. 09. 09.51
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
Vezérlő utasítások:
• break
• continue
• return
2015. 09. 09.52
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
• break
2015. 09. 09.53
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
• break
2015. 09. 09.54
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
• continue
2015. 09. 09.55
A C programozási nyelv (ismétlés)
Ciklusok
Előadó: Budai Tamás
• return
2015. 09. 09.56
A C programozási nyelv (ismétlés)
Függvények
Előadó: Budai Tamás
Függvények
• mint a matematikában:
– paraméter, visszatérési érték
• programszervezésre használhatók
Példa: y = sin(x)
2015. 09. 09.57
A C programozási nyelv (ismétlés)
Függvények
Előadó: Budai Tamás
Példa
2015. 09. 09.58
A C programozási nyelv (ismétlés)
Összefoglalás
Előadó: Budai Tamás
Összefoglalás: A programozó „fegyvertára”
= + - * / % ( ) == != < <= > >= ++ -- += -=
*= /= &= |= sizeof bool int float [] {} ;
#include
2015. 09. 09.59
A C programozási nyelv (ismétlés)
Összefoglalás
Előadó: Budai Tamás
Mit hagytunk ki:
• előfordító direktívák, makrók
• mutatók, mutató aritmetika
• dinamikus memóriakezelés
• saját adattípusok, struktúrák
• függvénykönyvtárak
• hibakeresés
• …
2015. 09. 09.60
A C programozási nyelv (ismétlés)
Összefoglalás
Előadó: Budai Tamás
Ajánlott irodalom:
• http://www.tutorialspoint.com/cprogramming/index.htm
• B. W. Kernighan - D. M. Ritchie : A C programozási nyelv