Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait
Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés Az Arduino család Mikrovezérlők programozása
Mikrovezérlőkről röviden Mikroprocesszor Mikrovezérlő Memória ALU CU ALU CU Reset-áramkör Órajel-generátor Perifériák A mikrovezérlő (=mikrokontroller) : mikroszámítógép egy tokban
Mikrovezérlőkről röviden Mikrovezérlő CPU és tartozékai: Egyes családoknál* közös Meghatározza a számábrázolást: 8,16,32bit Memória ALU Reset-áramkör Órajel-generátor Perifériák CU
Mikrovezérlőkről röviden Memória típusok: Program memória Mikrovezérlő Memória Perzisztens, nem újraírható Perzisztens, de újraírható Adatmemória Nem perzisztens: RAM Perzisztens: ROM ALU Reset-áramkör Órajel-generátor Perifériák CU
Mikrovezérlőkről röviden Perifériák: Digitális be/kimenetek Mikrovezérlő Memória Digitális kapcsolatok: SPI, USB, CANBUS A/D, D/A átalakítók PWM kimenet ALU Reset-áramkör Órajel-generátor Perifériák CU
Mikrovezérlők programozásához használt nyelvek: Assembly C/C++
Mikrovezérlők programozásához használt nyelvek: Assembly C/C++
C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
A forráskód: Egyszerű szövegfájl C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények Ember által értelmezhető Utasítások sorozata Kötött formátum
Példa: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
#include direktíva: más forráskódrészeket tudunk beágyazni C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények 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
A legkisebb egység: 1 bit 8 bit = 1 byte B B B B B B B B B C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények 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
A legkisebb egység: 1 bit 8 bit = 1 byte B B B B B B B B B C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények 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
Példa: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
Tömbök: Egy adott adattípusból álló több elemű halmaz C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények A memóriában folytonosan helyezkedik el A tömb méretét előre meg kell mondanunk*
Tömbök: Egy adott adattípusból álló több elemű halmaz C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények A memóriában folytonosan helyezkedik el A tömb méretét előre meg kell mondanunk*
Operátorok: Aritmetikai: = + - * / % ( ) C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények Összehasonlító: ==!= < <= > >= Logikai: &&! Bitenkénti: & ^ ~ << >> Helyben módosító: ++ -- += -= *= /= &= = Egyéb: sizeof
Példa: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
Elágazások: (GOTO) C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, feltételes utasítások Ciklusok Függvények if, if-else switch case
if, if-else: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, feltételes utasítások Ciklusok Függvények
switch case: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, feltételes utasítások Ciklusok Függvények
Ciklusok: for C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények while do-while
for: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények tömörebben:
while : C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
do-while: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
Ciklusvezérlés: break C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények continue return
break: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
break: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
continue: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
return: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
return: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
Függvények: mint a matematikában: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények paraméter, visszatérési érték programszervezésre használhatók Példa: y = sin(x)
Függvények: C nyelv alapismeretek: Programszerkezet Változók, adattípusok Operátorok Elágazások, Feltételes utasítások Ciklusok Függvények
Összefoglalás: A programozó fegyvertára = + - * / % ( ) ==!= < <= > >= ++ -- += -= *= /= &= = sizeof bool int float [] {} ; #include
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
Ajánlott olvasmányok: http://www.tutorialspoint.com/cprogramming/index.htm B. W. Kernighan - D. M. Ritchie : A C programozási nyelv http://arduino.cc/en/reference/homepage http://arduino.cc/en/reference/libraries
Az ARDUINO család
Az ARDUINO család
Mikrovezérlők programozása Tartalom: Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Ingyenes letöltés: www.arduino.cc
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Menü és ikonsor
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Menü és ikonsor Forrásszerkesztő
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Menü és ikonsor Forrásszerkesztő Napló és állapotsor
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Verifikáció (fordítás)
Mikrovezérlők programozása Az Arduino IDE Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Betöltés és futtatás Verifikáció (fordítás)
Mikrovezérlők programozása Az Arduino IDE Új forrásfájl Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Betöltés és futtatás Verifikáció (fordítás)
Mikrovezérlők programozása Az Arduino IDE Új forrásfájl Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Betöltés és futtatás Mentés Verifikáció (fordítás) Megnyitás
Mikrovezérlők programozása Az Arduino IDE Új forrásfájl Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Soros monitor Betöltés és futtatás Mentés Verifikáció (fordítás) Megnyitás
Mikrovezérlők programozása Eszköz kiválasztása: Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel Összefoglalás: A fájlok nevébe ne tegyünk ékezetet! Mindig figyeljünk, hogy jó eszköz és port legyen kiválasztva Fordításkor figyeljük a naplót (hibák!)
Különbségek: Mikrovezérlők programozása Kisebb tárolási egységek (számábrázolás!) Lassabb órajel minden utasítás számít nincsenek klasszikus be és kimeneti perifériák (billentyűzet, képernyő) a mikrovezérlőn általában nem egyszer futtatjuk a programot, hanem folyamatosan (végtelen ciklus) Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Különbségek: Függvénytár Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel pinmode(láb, mód) digitalwrite(láb, érték) delay(idő) analogread(láb) analogwrite(láb, érték) beállítja a <láb>-at a megfelelő <mód>-ba. (INPUT,OUTPUT) beállítja a <láb>-on a kimenet <érték>-ét (LOW/HIGH) várakozik <idő>-nyi milliszekundumig beolvassa a <láb>-ról a feszültség értékét* (A/D) beállítja a <láb>-on az analóg értéket** pinmode(8, OUTPUT) digitalwrite(8, LOW) delay(500) analogread(a1); analogwrite(8,214);
Mikrovezérlők programozása analogread(láb): 10 bites A/D átalakító Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel egész számot ad vissza, ami arányos a bemeneti feszültséggel: Feszültségszint: Beolvasott érték 5V 1023..... 2.5V 511...... 0V 0
Mikrovezérlők programozása Az Arduino IDE különbségek az asztali programokhoz képest analogwrite(láb, érték): 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 8 bites PWM modul* 4. program: LED fényerőszabályzó potméterrel egész számot vár 0-255 között, ezzel arányosan állítja be a négyszögjel kitöltési tényezőjét: bementi paraméter: kitöltési tényező: 255 100%..... 128 50%...... 0 0%
Mikrovezérlők programozása Blinky, a villogó LED Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása LED fényerőszabályzás PWM Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása Hiszterézises komparátor Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel
Mikrovezérlők programozása LED fényerőszabályzó potméterrel Az Arduino IDE különbségek az asztali programokhoz képest 1. program: blinky, a villogó LED 2. program: LED fényerőszabályzás PWM 3. program: Hiszterézises komparátor 4. program: LED fényerőszabályzó potméterrel