Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS
Tartalom 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 2
Tartalom 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 3
Mikrovezérlők Mikrovezérlő: Kisméretű, alacsony fogyasztású, programvezérelt digitális hálózat, avagy számítógép 4
Mikrovezérlők 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 IoT 5
Tartalom 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 6
Mikrovezérlők felépítése, működése Mikroprocesszor Mikrovezérlő Memória ALU CU ALU CU Megszakítás kezelő Órajel-generátor Perifériák A mikrovezérlő egy teljes számítógép egy tokban 7
Mikrovezérlők felépítése, működése 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 Mikrovezérlő Memória ALU CU Megszakítás kezelő Órajel-generátor Perifériák 8
Mikrovezérlők felépítése, működése Mikrovezérlő CPU (ALU+CU): Egyes családoknál* közös Meghatározza a számábrázolást*: 8,16,32bit Memória ALU CU Megszakítás kezelő Órajel-generátor Perifériák 9
Mikrovezérlők felépítése, működése Memória típusok: Program memória nem újraírható újraírható Adatmemória RAM ROM Mikrovezérlő Memória ALU CU Megszakítás kezelő Órajel-generátor Perifériák 10
Mikrovezérlők felépítése, működése 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 Mikrovezérlő Memória ALU CU Megszakítás kezelő Órajel-generátor Perifériák 11
Mikrovezérlők felépítése, működése 12
Mikrovezérlők felépítése, működése 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 programmemória elejétől (reset vector) az órajel szerint 13
Mikrovezérlők felépítése, működése 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 14
Mikrovezérlők felépítése, működése 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 15
Mikrovezérlők felépítése, működése Ó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 16
Mikrovezérlők felépítése, működése Ó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 gyorsabb) 17
Tartalom 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 18
Mikrovezérlő típusok, gyártók Mikrovezérlők Bitek száma Memória / perifériák helye Utasításkészlet 4 8 16 32 Külső Belső RISC CISC 19
Mikrovezérlő típusok, gyártók Gyártók Atmel Infineon Intel Microchip Motorola National Instruments Parallax Texas instruments Xilinx 20
Tartalom 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 21
Mikrovezérlők perifériái 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) I 2 C CAN érintés-érzékelő PWM kimenet Mikrovezérlő Memória ALU CU Megszakítás kezelő Órajel-generátor Perifériák *Nem feltétlenül szükséges minden buszhoz (bitbang) 22
Mikrovezérlők perifériái 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 23
Mikrovezérlők perifériái 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ápfeszültség) és egy változóból kiolvasható 24
Mikrovezérlők perifériái 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ápfeszültség) Logikája azonos az A/D-vel, csak itt beírjuk a kívánt szintet és nem kiolvassuk 25
Mikrovezérlők perifériái 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) 26
Tartalom 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 27
Mikrovezérlők programozása 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! 28
Mikrovezérlők programozása Forráskód Fordító Egy mikrovezérlő bármilyen nyelven programozható, ha van az adott nyelvhez és vezérlőhöz fordítóprogram. Gépi kód 1010010 1110101 0101010 29
Mikrovezérlők programozása Programnyelvek Alacsony szintű Assembly Magas szintű C, C++, Python, Java 30
Tartalom 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 31
A C programozási nyelv (ismétlés) tartalom Alapok Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények 32
A C programozási nyelv (ismétlés) Alapok A forráskód: Egyszerű szövegfájl Ember által értelmezhető Utasítások sorozata Kötött formátum 33
A C programozási nyelv (ismétlés) Alapok Példa 34
A C programozási nyelv (ismétlés) Alapok #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 35
A C programozási nyelv (ismétlés) Változók, adattípusok A legkisebb egység: 1 bit 8 bit = 1 byte B B B B B B B B B Változótípusok void bool char int unsigned int float double string semmi (ezt is jelölni kell valahogy) logikai (igaz/hamis) egy karakter (1 byte) (előjeles) egész szám egész szám lebegőpontos szám dupla pontosságú float char-okból álló tömb 36
A C programozási nyelv (ismétlés) Változók, adattípusok Példa 37
A C programozási nyelv (ismétlés) Változók, adattípusok 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* 38
A C programozási nyelv (ismétlés) Változók, adattípusok 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* 39
A C programozási nyelv (ismétlés) Operátorok Operátorok: Aritmetikai: + - * / % ( ) Összehasonlító: ==!= < <= > >= Logikai: &&! Bitenkénti: & ^ ~ << >> Helyben módosító: ++ -- += -= *= /= &= = Egyéb: sizeof 40
A C programozási nyelv (ismétlés) Operátorok Példa 41
A C programozási nyelv (ismétlés) Elágazások, feltételes utasítások Elágazások: if, if-else switch case 42
A C programozási nyelv (ismétlés) Elágazások, feltételes utasítások If-else 43
A C programozási nyelv (ismétlés) Elágazások, feltételes utasítások Switch-case 44
A C programozási nyelv (ismétlés) Ciklusok Ciklusok: for while do-while Ciklusvezérlés 45
A C programozási nyelv (ismétlés) Ciklusok for Tömörebben: 46
A C programozási nyelv (ismétlés) Elágazások, feltételes utasítások while 47
A C programozási nyelv (ismétlés) Elágazások, feltételes utasítások do-while 48
A C programozási nyelv (ismétlés) Ciklusok Vezérlő utasítások: break continue return 49
A C programozási nyelv (ismétlés) Ciklusok break 50
A C programozási nyelv (ismétlés) Ciklusok break 51
A C programozási nyelv (ismétlés) Ciklusok continue 52
A C programozási nyelv (ismétlés) Ciklusok return 53
A C programozási nyelv (ismétlés) Függvények Függvények mint a matematikában: paraméter, visszatérési érték programszervezésre használhatók Példa: y = sin(x) 54
A C programozási nyelv (ismétlés) Függvények Példa 55
A C programozási nyelv (ismétlés) Összefoglalás Összefoglalás: = + - * / % ( ) ==!= < <= > >= ++ -- += -= *= /= &= = sizeof bool int float [] {} ; #include 56
A C programozási nyelv (ismétlés) Összefoglalá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 57
A C programozási nyelv (ismétlés) Összefoglalás Ajánlott irodalom: http://www.tutorialspoint.com/cprogramming/index.htm B. W. Kernighan - D. M. Ritchie : A C programozási nyelv Takács Gábor: Programozás villamosmérnököknek 58