ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Hasonló dokumentumok
ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1. 32-BITES MIKROSZÁMÍTÓGÉPEK

Silabs STK3700, Simplicity Studio laborgyakorlat

Érzékelők és beavatkozók I.

Labor 2 Mikrovezérlők

Mintavételes szabályozás mikrovezérlő segítségével

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 0. TANTÁRGY ISMERTETŐ

16F628A megszakítás kezelése

CONTROL AUTÓRIASZTÓ RENDSZER

Újrakonfigurálható eszközök

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

AVR assembly és AVR C modulok együttes használata AVR C projektben. Összeállította: Sándor Tamás

Using the CW-Net in a user defined IP network

Beágyazott és Ambiens Rendszerek

ÉRZÉKELŐK ÉS BEAVATKOZÓK II. 5. DC MOTOROK SZABÁLYOZÁS FORDULATSZÁM- SZABÁLYOZÁS

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 3. MÉRÉSFELDOLGOZÁS

MSP430 programozás Energia környezetben. Az első lépések

LabVIEW példák és bemutatók KÉSZÍTETTE: DR. FÜVESI VIKTOR

Mérési jegyzőkönyv. az ötödik méréshez

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. PÉLDÁK - FELADATOK

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

MSP430 programozás Energia környezetben. Az I/O portok kezelése

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 6. A MINTAVÉTELI TÖRVÉNY

Mechatronika és mikroszámítógépek. 2018/2019 I. félév. Külső megszakítások

Csatlakozás a BME eduroam hálózatához Setting up the BUTE eduroam network

Formula Sound árlista

Digitális technika (VIMIAA02) Laboratórium 1

Digitális technika (VIMIAA02) Laboratórium 1

ARM Cortex magú mikrovezérlők

The modular mitmót system. DPY kijelző kártya C API

Laborgyakorlat 3 A modul ellenőrzése szimulációval. Dr. Oniga István

Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar MIT. Nagyteljesítményű mikrovezérlők tantárgy [vimim342]

Készítette: Ruzsinszki Gábor webmaster442

Vezérlés és irányítástechnológia (Mikroprocesszoros irányítás)

Pénzügyi algoritmusok

Yottacontrol I/O modulok beállítási segédlet

A LOGSYS GUI. Fehér Béla Raikovich Tamás, Laczkó Péter BME MIT FPGA laboratórium

Első egyéni feladat (Minta)

Az AVR programozás alapjai. Előadja: Both Tamás

Újrakonfigurálható eszközök

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 1. BEVEZETÉS

C++ programozási nyelv

Digitális technika (VIMIAA01) Laboratórium 9

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

Pénzügyi algoritmusok

Tesztelési feladatok és kihívások a FALCON projektben

Megjegyzés: A leírás abszolút kezdők számára készült elnézést azoktól, akik ezen a szinten már túlvannak!

Mechatronika, robottechnika és mikroszámítógépek, I. ZH, NÉV: október 20. 8:15-10:00, ST122 NEPTUN KÓD:...

Elektronikus dobókocka tervezési példa

MAKING MODERN LIVING POSSIBLE. Danfoss Heating Solutions

Bemutatás. Elrendezés. Leírás. Műszaki adatok. Funkciók

Proxer 7 Manager szoftver felhasználói leírás

Perifériák hozzáadása a rendszerhez

Autóipari beágyazott rendszerek CAN hardver

Mérési utasítás. Labor 2, Mikrovezérlők. Budai Tamás, Automatizálási Tanszék Széchenyi István Egyetem v1.1.

Digitális elektronika gyakorlat

1. Irányváltós futófény nyomógombbal

Tisztelt Ügyfelünk! Nokia 6230i Beállítások. Személyes profil létrehozása és beállítása :

Mikrorendszerek tervezése

USB HID 1. Bevezetés. 2. A Hardver

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

ARM Cortex magú mikrovezérlők

LOGSYS EGYSZERŰ ALKALMAZÁS KÉSZÍTÉSE A LOGSYS KINTEX-7 FPGA KÁRTYÁRA A XILINX VIVADO FEJLESZTŐI KÖRNYEZET HASZNÁLATÁVAL június 16. Verzió 1.

inels timer Működési elv:

Figyelem : a 3220 központosított beállítási struktúrával rendelkezik ami lehetővé teszi az összes profil egy helyről történő elérését.

Dr. Schuster György október 3.

Programozási nyelvek (ADA)

Bevezetés az elektronikába

CIDRA-RE C CIDRA-RI C vezérlés

1. Jelgenerálás, megjelenítés, jelfeldolgozás alapfunkciói

Nagyteljesítményű mikrovezérlők 10b. RTOS gyakorlatok

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Programozási segédlet DS89C450 Fejlesztőpanelhez

MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka

THS710A, THS720A, THS730A & THS720P TekScope Reference

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

IndraControl L 10 (CML 10) vezérlı installációs segítség, elsı lépések

Járműfedélzeti rendszerek I. 4. előadás Dr. Bécsi Tamás

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

evosoft Hungary Kft.

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

Digitális Technika. Dr. Oniga István Debreceni Egyetem, Informatikai Kar

Fényerő és LED szalagszabályzás

Aktív zajcsökkentést demonstráló rendszer továbbfejlesztése. Csofcsics Donát Gusztáv Tamás

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Gitárerősítő. Használati utasítás

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

A ComEasy Windows NT/98/ME/2000/XP/Vista/7 és Linux/Unix operációs rendszeren használható.

Dimat. UTH telepítés és útmutató

1. feladat. Szabóné Nacsa Rozália

BASH script programozás II. Vezérlési szerkezetek

Arduino bevezető Szenzorhálózatok és alkalmazásaik

MSP430 programozás Energia környezetben

operációs rendszer A TinyOS - Bevezető - [ Beágyazott Információs Rendszerek Tervezése ]

Átírás:

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM Dr. Soumelidis Alexandros 2018.09.06. BME KÖZLEKEDÉSMÉRNÖKI ÉS JÁRMŰMÉRNÖKI KAR 32708-2/2017/INTFIN SZÁMÚ EMMI ÁLTAL TÁMOGATOTT TANANYAG

SensAct0 példaprogram Hardware: az ST Microelectronics STM32 ARM Cortex M4 platformjához tartozó NUCLEO-F401RE demo panel. ST-LINK/V2 USB debugger/programmer + virtual COM port RESET button USER push-button USER LED (green) STM32F401RE Arduino connectors Morpho connectors 2

Konfigurálás: STM32CubeMX 3

Konfigurálás: STM32CubeMX SensAct0: megtartjuk a perifériák eredeti konfigurációját. 4

Konfigurálás: STM32CubeMX SensAct0: átállítjuk az órajel forrását külső órára (HSE) Beállítjuk a rendszer-órajel frekvenciáját 84 MHz-re 5

Projekt generálás 6

Projekt generálás 7

System Workbench projekt USER CODE BEGIN END A felhasználó által módosítható részek az újragenerálás változatlanul hagyja. 8

System Workbench projekt Fordítás (Build project) 9

System Workbench projekt Letöltés a mikrogépre. A program az inicializálás után egy üres végtelen ciklust hajt végre, a futásnak külső hatása nincs. 10

SensAct0 1. változat Feladat: A Nucleo panelen található zöld User LED villogjon 1 másodperces periódusidővel 50%-os kitöltéssel. Konfiguráció: Az alap-konfiguráció. User LED: PA5 portbit, GPIO_Output, GREEN_LED Output Push Pull No pull-up and no pull-down Maximum output speed: Low PA5 11

SensAct0 1. változat HAL_GPIO_TogglePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin); HAL_Delay(500); késleltetés ms felbontásban 12

SensAct0 2. változat Feladat: A Nucleo panelen található zöld User LED villogjon 1 másodperces periódusidővel 50%-os kitöltéssel. A main ciklustól függetlenül, a háttérben fusson a folyamat. Megoldás: Alkalmazzuk a System Tick Timer folyamatot. SysTick: 1ms periódusidővel jelentkező standard megszakítás, eleve engedélyezve van. 13

SensAct0 2. változat Megoldás: Létesítsünk a main.c -ben egy SysTick megszakításra érvényre jutó visszahívó (callback) függvényt. Ilyen függvény eleve definiálva van az STM32Cube környezetben weak formában, helye az stm3232f4xx_hal_cortex.c forrásfájl. /** * @brief SYSTICK callback. * @retval None */ weak void HAL_SYSTICK_Callback(void) /* NOTE : This function Should not be modified, when the callback is needed, the HAL_SYSTICK_Callback could be implemented in the user file */ 14

SensAct0 2. változat Megkereshetjük a megszakításokat definiáló src\stm32f4xx_it.c forrásnyelvi fájl alapján. Átmásoljuk a main.c fájl felhasználó által módosítható részébe. Megszűntetjük a weak deklarációt, és kitöltjük az általunk kívánt tartalommal. Mit jelent a weak eljárás deklaráció? Egy üres törzsű eljárást deklarál, amely érvényben marad, ha nincs ugyanilyen név alatt egy normál eljárás. Ugyanazon név alatt deklarált nem weak eljárás felüldefiniálja. 15

SensAct0 2. változat volatile uint16_t seccnt = 0; // SysTick counter /** * @brief SYSTICK callback. * @retval None */ void HAL_SYSTICK_Callback(void) seccnt++; if (seccnt >= 1000) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_SET); seccnt = 0; else if (seccnt == 500) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_RESET); 16

SensAct0 2. változat 17

SensAct0 3. változat Feladat: A Nucleo panelen található kék User nyomógomb sorozatos megnyomásával a zöld User LED villogásának kitöltése változzon 50% és 10% között. Konfiguráció: Az alap-konfiguráció a kék User nyomógomb megszakításának engedélyezésével. User Pushbutton: PC13 portbit, GPIO_EXTI13, BLUE_SW External Interupt Mode with Falling edge trigger detection No pull-up and no pull-down 18

SensAct0 3. változat A megszakítás engedélyezése Prioritás: nem túl magas (A USER beavatkozás nem olyan fontos esemény.) 19

SensAct0 3. változat Megoldás: Megkeressük a HAL_GPIO_EXTI_IRQHandler eljárást, amely weak deklaráció formájában található a rendszerben. Átmásoljuk a main.c user által módosítható részébe. Megszűntetjük a weak jelleget. Kitöltjük az általunk kívánt tartalommal. Eljárás: A kék gomb megnyomása megváltoztatja a zöld LED világító állapotának megfelelő időtartamot 500 és 100 ms között vált. Az időtartamot definiáló változó: uint16_t ledonper kezdeti értéke 500 20

SensAct0 3. változat volatile uint16_t seccnt = 0; volatile uint16_t ledonper = 500; // SysTick counter // Green LED ON period /** * @brief SYSTICK callback. * @retval None */ void HAL_SYSTICK_Callback(void) seccnt++; if (seccnt >= 1000) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_SET); seccnt = 0; else if (seccnt == ledonper) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_RESET); 21

SensAct0 3. változat A megszakítási eljárás (callback): /** * @brief EXTI line detection callbacks. * @param GPIO_Pin Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) if (GPIO_Pin == BLUE_SW_Pin) if (ledonper == 500) ledonper = 100; else ledonper = 500; seccnt = 0; 22

SensAct0 3. változat Probléma: A kapcsolónál prell (pergés) jelenség léphet fel, ami többszörös megszakítást eredményezhet. Kiküszöbölése: Az első megszakítás megjelenése után valamennyi ideig (10-50 ms a kapcsoló tulajdonságaitól függően) blokkoljuk további megszakítás érvényesülését. Ez megoldható a SysTick timer felhasználásával: Létesítünk egy swblock változót, amely kezdeti értéke 0. Ha a megszakítási eljárásban swblock > 0, nem csinálunk semmit (blokkoljuk a kapcsoló működését). Ha swblock == 0, végrehajtjuk a működést, és az swblock változót beállítjuk a blokkolás időtartamát meghatározó értékre. A SysTick megszakítási eljárásban csökkentjük swblock értékét 1-el, ha az nem 0. V sw t 23

SensAct0 3. változat volatile uint16_t seccnt = 0; volatile uint16_t ledonper = 500; volatile uint16_t swblock = 0; // SysTick counter // Green LED ON period // Blocking period of Blue Switch /** * @brief SYSTICK callback. * @retval None */ void HAL_SYSTICK_Callback(void) seccnt++; if (seccnt >= 1000) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_SET); seccnt = 0; else if (seccnt == ledonper) HAL_GPIO_WritePin(GREEN_LED_GPIO_Port, GREEN_LED_Pin, GPIO_PIN_RESET); if (swblock > 0) swblock--; 24

SensAct0 3. változat /** * @brief EXTI line detection callbacks. * @param GPIO_Pin Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) if (GPIO_Pin == BLUE_SW_Pin) if (swblock == 0) if (ledonper == 500) ledonper = 100; else ledonper = 500; seccnt = 0; swblock = 50; 25

BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM Dr. Soumelidis Alexandros email: soumelidis@mail.bme.hu BME KÖZLEKEDÉSMÉRNÖKI ÉS JÁRMŰMÉRNÖKI KAR 32708-2/2017/INTFIN SZÁMÚ EMMI ÁLTAL TÁMOGATOTT TANANYAG