Újrakonfigurálható eszközök

Hasonló dokumentumok
Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Újrakonfigurálható eszközök

Hobbi Elektronika. A digitális elektronika alapjai: Újrakonfigurálható logikai eszközök

Újrakonfigurálható eszközök

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

16F628A megszakítás kezelése

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

Újrakonfigurálható eszközök

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

Silabs STK3700, Simplicity Studio laborgyakorlat

ARM Cortex magú mikrovezérlők

Újrakonfigurálható eszközök

Az interrupt Benesóczky Zoltán 2004

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

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

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

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

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

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

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

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

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

Bevezetés a mikrovezérlők programozásába: Az Arduino, mint logikai analizátor

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

Programozási segédlet DS89C450 Fejlesztőpanelhez

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

Beágyazott és Ambiens Rendszerek

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

Mikrorendszerek tervezése

Mikrovezérlők Alkalmazástechnikája

Digitális technika (VIMIAA01) Laboratórium 9

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

Mechatronika és mikroszámítógépek

Dr. Schuster György október 3.

Digitális technika (VIMIAA01) Laboratórium 9

Újrakonfigurálható eszközök

ARM Cortex-M0+ mikrovezérlő programozása KEIL MDK 5 környezetben. 5. Időzítők, számlálók 1. rész

Mérő- és vezérlőberendezés megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Rendszermodellezés: házi feladat bemutatás

eseményvezérelt megoldások Vizuális programozás 5. előadás

Vegyes témakörök. 11. Robotvezérlés WiFi kapcsolaton keresztül 2. rész. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Dr. Schuster György szeptember 27.

Ismerkedés az MSP430 mikrovezérlőkkel

Villamos jelek mintavételezése, feldolgozása. Mérésadatgyűjtés, jelfeldolgozás 9. előadás

Az MSP430 mikrovezérlők digitális I/O programozása

Bevezetés a számítástechnikába

Nyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output

Vegyes témakörök. ARDUINO a kispénzű amatőrök PLC-je. Hobbielektronika csoport 2017/2018. Debreceni Megtestesülés Plébánia

3. A DIGILENT BASYS 2 FEJLESZTŐLAP LEÍRÁSA

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

0 0 1 Dekódolás. Az órajel hatására a beolvasott utasítás kód tárolódik az IC regiszterben, valamint a PC értéke növekszik.

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

Labor 2 Mikrovezérlők

Programmable Chip. System on a Chip. Lazányi János. Tartalom. A hagyományos technológia SoC / PSoC SoPC Fejlesztés menete Mi van az FPGA-ban?

MSP430 programozás Energia környezetben. LED kijelzok második rész

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

Bevezetés az elektronikába

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

Hobbi Elektronika. 1. Témakörök, célkitűzés, hozzávalók

Alkalmazás-shop (Internet-kapcsolat szükséges)

THS710A, THS720A, THS730A & THS720P TekScope Reference

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

Nagyteljesítményű mikrovezérlők

MSP430 programozás Energia környezetben. Nem élhetek muzsikaszó nélkül

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

Nyolcbites számláló mintaprojekt

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

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

Architektúra, megszakítási rendszerek

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 2. rész

MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel

Újrakonfigurálható eszközök

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

Digitális elektronika gyakorlat

Operációs rendszerek. Az Executive és a kernel Policy és mechanizmusok szeparálása Executive: policy - objektum kezelés Kernel: mechanizmusok:

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

ÖNÁLLÓ LABOR Mérésadatgyűjtő rendszer tervezése és implementációja

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

Hobbi Elektronika. A digitális elektronika alapjai: Sorrendi logikai áramkörök 3. rész

Scherer Balázs: Mikrovezérlık fejlıdési trendjei

ARM Cortex-M0+ mikrovezérlő programozása KEIL MDK 5 környezetben. 11. Impulzus-szélesség moduláció (PWM)

Teszt topológia E1/1 E1/0 SW1 E1/0 E1/0 SW3 SW2. Kuris Ferenc - [HUN] Cisco Blog -

Beágyazott rendszerek fejlesztése laboratórium DSP fejlesztési technológiák

Az vevő- és vezérlőáramkör programja

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

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

1: Idõ(tartam), frekvencia (gyakoriság) mérés

ISE makró (saját alkatrész) készítése

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

SP-PROG (SP-PROG-BT) Univerzális USB (Bluetooth/USB) Programozó

Digitális technika VIMIAA01

Villamos jelek mintavételezése, feldolgozása. LabVIEW 7.1

Átírás:

Újrakonfigurálható eszközök 14. Cypress PSOC 5LP programmegszakítások Hobbielektronika csoport 2017/2018 1 Debreceni Megtestesülés Plébánia

Felhasznált irodalom és segédanyagok Cypress: CY8C58LP FamilyDatasheet Cypress: PSOC 5LP Architecture Technical Reference Manual) Cypress: CY8CKIT-059 Prototyping Kit Guide Cypress: AN777759: Geting Started with PSoC 5LP Cypress: PSoC Creator User Guide Cypress: PSoC 5LP Registers TRM Yuri Magda: Cypress PSoC 5LP Prototyping Kit Measurement Electronics Cserny István: PSOC 5LP Mikrokontrollerek programozása Cypress: AN547460 - PSoC 3 and PSoC 5LP Interrupts Hobbielektronika csoport 2017/2018 2 Debreceni Megtestesülés Plébánia

A megszakítási rendszer jellemzői A PSoC mikrovezérlők megszakítási rendszere 16 kivételt és 32 db megszakítási vonalat tud kezelni. A PSoC 5LP megszakítási rendszere: Vektoros Prioritásos (8 szintű) Egymásba ágyazott Konfigurálható vektorcímek Flexibilis megszakítási források Az alacsonyabb prioritású kiszolgálás megszakítható A kiszolgáló eljárás címe dinamikusan változtatható A megszakítási források nincsenek mereven hozzárendelve a megszakítási vonalakhoz Szintvezérelt megszakítások Élvezérelt megszakítások Hobbielektronika csoport 2017/2018 3 Debreceni Megtestesülés Plébánia

A megszakítási rendszer jellemzői Minden megszakítási vonal három forrásból kaphat jelet: Fix funkciójú periféria DMA csatorna UDB modul Fix funkciójú megszakítási források: PICU (Port Interrupt Control Unit), LVD (Low Voltage Detect), RTC, SleepTimer, I2C, CAN, USB, FF Timer/Counter/PWM, Szegmenses LCD, Delta-Sigma ADC) DMA megszakítások A DMA adatátvitel végén élvezérelt megszakításkérő jel generálható. UDB megszakítási források Minden digitális jel beállítható megszakítási jelforrásként, s a digitális összekötési rendszer (DSI) segítségével valamelyik megszakítási vonalra köthető. Hobbielektronika csoport 2017/2018 4 Debreceni Megtestesülés Plébánia

PSoC Creator támogatás Az ISR komponens bármelyik digitális jelhez hozzárendelhető Hardveresen triggerelt megszakítást defniál Szofveres API-t biztosít a kezeléséhez Hobbielektronika csoport 2017/2018 5 Debreceni Megtestesülés Plébánia

Az ISR komponens konfigurálása A megszakítás típusát (él, szint, vagy származtatot) és a megszakítás prioritását ( 0 7, ahol 0 a legmagasabb szint) lehet beállítani Hobbielektronika csoport 2017/2018 6 Debreceni Megtestesülés Plébánia

Mit jelent a Derived útvonalválasztás? A derived megszakítási mód választása automatikusan konfgurálja a bemeneti multiplexert a csatlakozó megszakítási forrás típusa szerint Fix funkciójú eszközök Szintvezérelt megszakításkezelés, dedikált vonalon, vagy DSI összekötetésen keresztül. DMA megszakítási források Élvezérelt megszakításkezelés, dedikált vonalakon keresztül. UDB komponensek: Élvezérelt megszakításkezelés Hobbielektronika csoport 2017/2018 7 Debreceni Megtestesülés Plébánia

Alkalmazásprogramozói függvények Az ISR komponens kezeléséhez a PsoC Creator az alábbi alkalmazásprogramozói függvényeket biztosítja Hobbielektronika csoport 2017/2018 8 Debreceni Megtestesülés Plébánia

A megszakítások kiszolgálása A megszakítást kiszolgáló eljárást többféle módon is megadhatjuk: 1) A PSoC Creator által generált alapértelmezet ISR_Interrupt kiszolgáló eljárás bővítésével az ISR.c állományban. 2) Saját kiszolgáló eljárás definiálásával. 3) A PSoC Creator által nem támogatot megszakításoknál: Saját kiszolgáló eljárás definiálásával és a megszakítási vektor feltöltésével. Bármelyik módszert választjuk, a főprogramban gondoskodni kell a megszakítások inicializálásáról és engedélyezéséről. Például: 1. 2. 3. ISR_Start(); CyGlobalIntEnable; CY_ISR_PROTO(MyISR); ISR_StartEx(MyISR); CyGlobalIntEnable; CY_ISR_PROTO(MyISR); CyIntSetSysVector(VECNUM,MyISR); CyGlobalIntEnable; Az ISR_Interrupt eljárást ki kell egészíteni! A MyISR saját eljárást definiálnunk is kell! Hobbielektronika csoport 2017/2018 9 Debreceni Megtestesülés Plébánia

Mintaprogramok A példaprogramokat az AN547460 alkalmazási mintapéldából vetük. Mindegyik projektet adaptálni kellet a CY8CKIT-059 kártyához. A_InterruptExample: Ledvillogtatás periodikus (1 Hz) Timer megszakításokkal. Egyszerű példa az alapértelmezet megszakításkiszolgáló eljárások használatára B_PICU LED ki/bekapcsolása nyomógombbal. Példa a PICU megszakítás és saját megszakításkezelő függvény használatára D_SysTick Periodikus (2 Hz) megszakítások keltése az ARM Cortex-M3 CPU beépítet időzítőjével. Példa a PSoC Creator által nem támogatot megszakítás használatára. Hobbielektronika csoport 2017/2018 10 Debreceni Megtestesülés Plébánia

Az A_InterruptExample projekt Ebben a projektben egy számláló segítségével periodikusan megszakításokat keltünk (1 Hz frekvenciával) A megszakításokban a kártyára szerelt LED (P2_1 kivezetéshez csatlakozik) állapotát átbillentjük A LED így 2 másodpercenként kerül azonos állapotba (P2_1) Hobbielektronika csoport 2017/2018 11 Debreceni Megtestesülés Plébánia

A Timer komponens konfigurálása A Timer komponens egy visszaszámláló. TC (terminal count) az az esemény, amikor a számláló elérte a nullát, és újratöltődik a következő visszaszámláláshoz. Programmegszakítást keltünk minden TC eseménynél. A megszakítások gyakoriságát a bemeneti órajel frekvenciája (it 1 khz) és a Timer Periódus értéke (it 1000 órajel ciklus) szabja meg. Megjegyzés: Az ISR komponens konfgurálását már bemutatuk a 6. oldalon Hobbielektronika csoport 2017/2018 12 Debreceni Megtestesülés Plébánia

A megszakítás kiszolgálása (1. módszer) It most az alapértelmezet kiszolgáló eljárást használjuk, amelyet a PSoC Creator a Build Create Application menüpontban hoz létre az isr_1.c állományban. Saját sorainkat csak a megjelölt helyeken adjuk hozzá (csak ezek a tartalmak őrződnek meg a projekt újragenerálása során)! /******************************************************** * Place your includes, defines and code here ********************************************************/ /* `#START isr_1_intc` */ #include "Timer_1.h // Timer Component header file #include "LED.h" // LED Pin Component header file /* `#END` */ /******************************************************** * Place your Interrupt code here ********************************************************/ CY_ISR(isr_1_Interrupt) { /* `#START isr_1_interrupt` */ Timer_1_ReadStatusRegister(); // Clear interrupt flag LED_Write(~LED_Read()); // Toggle LED state /* `#END` */ Hobbielektronika csoport 2017/2018 13 Debreceni Megtestesülés Plébánia

B_PICU projekt Két nyomógombbal kapcsolgatunk két LED-et (megszakításban). Pergésmentesítés 1 khz-es Timer megszakítás felhasználásávall (interrupt: rising edge) P2_2 P2_1 P2_3 P2_0 (interrupt: derived) A megszakítások prioritása most lényegtelen számunkra. Hobbielektronika csoport 2017/2018 14 Debreceni Megtestesülés Plébánia

A nyomógomb bemenetek konfigurálása A két digitális bemenetet (P2_2 és P2_3) egységbe foglaljuk Belső felhúzást használunk Hobbielektronika csoport 2017/2018 15 Debreceni Megtestesülés Plébánia

main.c Ebben a projektben saját megszakításkiszolgáló függvényeket használunk, amelyeket az InterruptRoutines.c állományban defniálunk A főprogramban csak az elindítást és hozzárendelést kell elvégezni #include <project.h> /* Header file containing the custom ISR prototypes */ #include "InterruptRoutines.h" int main() { /* Initialize the two custom defined ISRs */ isr_1_startex(picu_isr); isr_2_startex(tick_isr); CyGlobalIntEnable; /* Enable global interrupts. */ for(;;) { /* Do nothing in the main loop; code to do something is in the ISRs */ Hobbielektronika csoport 2017/2018 16 Debreceni Megtestesülés Plébánia

InterruptRoutines.h #ifndef INTERRUPT_ROUTINES_HEADER #define INTERRUPT_ROUTINES_HEADER /* including project.h gives access to all component APIs */ /* and other generated source files */ #include <project.h> /* defines the debounce time in milliseconds, max value is 255 */ #define DEBOUNCE_TIME 50 /* ISR function prototype declarations */ CY_ISR_PROTO(Tick_ISR); CY_ISR_PROTO(PICU_ISR); #endif Hobbielektronika csoport 2017/2018 17 Debreceni Megtestesülés Plébánia

InterruptRoutines.c Tick_ISR #define SW1_MASK 1 #define SW2_MASK 2 #define TIMED_OUT 0 static volatile uint8 CYDATA switch_1_timeout; static volatile uint8 CYDATA switch_2_timeout; /* Function Name: Tick_ISR * Summary: Interrupt once per millisecond. If timeout, toggle LED. */ CY_ISR(Tick_ISR) { if(switch_1_timeout!= 0) { if(--switch_1_timeout == TIMED_OUT) { if((switches_read() & SW1_MASK) == 0) { LED1_Write(~LED1_Read()); /* toggle the LED */ if(switch_2_timeout!= 0) { if(--switch_2_timeout == TIMED_OUT) { if((switches_read() & SW2_MASK) == 0) { LED2_Write(~LED2_Read()); /* toggle the LED */ Hobbielektronika csoport 2017/2018 18 Debreceni Megtestesülés Plébánia

InterruptRoutines.c PICU_ISR /* Function Name: PICU_ISR * Summary: Interrupt only occurs on falling edge of either pin, i.e., when * switch is pressed. Checks and initiates debounce timeout. */ CY_ISR(PICU_ISR){ /* copies of PICU registers */ uint8 CYDATA temp_stat; /* read the PICU interrupt status register, with a clear on read */ temp_stat = Switches_ClearInterrupt(); /* Process the PICU event on SW1 only if any ongoing debounce period has timed out */ if(((temp_stat & SW1_MASK)!= 0) && (switch_1_timeout == TIMED_OUT)) { /* reset the debounce timer for this button */ switch_1_timeout = DEBOUNCE_TIME; /* Process the PICU event on SW2 only if any ongoing debounce period has timed out */ if(((temp_stat & SW2_MASK)!= 0) && (switch_2_timeout == TIMED_OUT)) { /* reset the debounce timer for this button */ switch_2_timeout = DEBOUNCE_TIME; Hobbielektronika csoport 2017/2018 19 Debreceni Megtestesülés Plébánia

D_SysTick projekt Ebben a projektben a SysTick időzítővel keltünk periodikus megszakításokat. A CY8CKIT-059 kártyán található LED1 állapotát minden megszakításkor átbillentjük. A SysTick megszakítási vektor a Cortex-M CPU-ban fxen 15. A Cortex-M NVIC 0 15 megszakítási vektorok a CPU mag számára fenntartotak (úgynevezet kivételek ), a PSoC 5LP 0 31 megszakítások pedig a Cortex-M CPU 16 47 vektorainak felelnek meg. A PSoC Creator a kivételeket nem kezeli/támogatja, a CyLib azonban igen. Hobbielektronika csoport 2017/2018 20 Debreceni Megtestesülés Plébánia

#include <project.h> D_SysTick projekt main.c Támogatás hiányában magunknak kell beállítani a megszakítási vektort és defniálnunk kell a kiszolgáló függvényt is (3. módszer) #define SYSTICK_INTERRUPT_VECTOR_NUMBER 15u // SysTick megszakítási vektor #define CLOCK_FREQ BCLK BUS_CLK HZ // busz órajel frekvencia (Hz) #define INTERRUPT_FREQ 2u // Megszakítások gyakorisága (Hz) CY_ISR(SysTick_ISR) { LED_Write(~LED_Read()); // Megszakítás kiszolgálása int main() { //--- A megszakítási vektor konfigurálása --- CyIntSetSysVector(SYSTICK_INTERRUPT_VECTOR_NUMBER, SysTick_ISR); //--- SysTick konfigurálása --- (void)systick_config(clock_freq / INTERRUPT_FREQ); CyGlobalIntEnable; // Megszakítások engedélyezése for(;;) { // Nincs tennivalónk! Hobbielektronika csoport 2017/2018 21 Debreceni Megtestesülés Plébánia

CY8CKIT-059 fejlesztői kártya USB csatlakozás a PC-hez KitProg programozó és hibavadász USB UART Kivezetések C8C5868LTI-LP039 PSOC 5LP Target áramkör A tápellátás történhet a programozó felől (5V), Az alkalmazói USB csatlakozóról (5V), vagy a VDD csatlakozáson keresztül (3,3 5 V). LED1 (2.1 kivezetés) SW1 (2.2 kivezetés) CY8C5888LTI-LP097 JTAG csatlakozás Utóbbi esetben a D1 és D2 diódákat el kell távolítani az USB-re csatlakozás előtt! RESET gomb helye USB alkalmazói csatl. Hobbielektronika csoport 2017/2018 22 Debreceni Megtestesülés Plébánia

A céláramkör kapcsolási rajza Hobbielektronika csoport 2017/2018 23 Debreceni Megtestesülés Plébánia