Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Podobné dokumenty
Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Úvod do mobilní robotiky AIL028

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Programování MCU ve vyšších programovacích jazycích

Úvod do mobilní robotiky NAIL028

Adresovatelné RGB LED

Modul řízení otáček stejnosměrného motorku

Arduino Martin Friedl

Programování mikropočítačů platforma Arduino

Mikrokontrolery. Úvod do obvodů Atmega 328 a PIC16F88

Komunikace modulu s procesorem SPI protokol

FILIP SCHWANK. Katedra měření, listopad 2017

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

setup() { I = 0; } loop() { I = I + 1; }

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

PK Design. EVMS-mega128 v1.0. Výukové příklady. Výuková deska s mikrokontrolerem ATmega128. Verze dokumentu 1.0 ( )

9. Rozšiřující desky Evb_Display a Evb_keyboard

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Speciální obvody a jejich programování v C 2. díl

Přerušovací systém s prioritním řetězem

EduKit84. Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip. Uživatelská příručka

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6

WiFi LED informační panel

Mikrokontroléry. Doplňující text pro POS K. D. 2001

RE Modul 24 V relé výstupů

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Systém přerušení. České vysoké učení technické Fakulta elektrotechnická

Programování PICAXE18M2 v Assembleru

TQS3. popis modifikace s protokolem MODBUS RTU. 29. února 2008 w w w. p a p o u c h. c o m 0199

Snížení příkonu MCU. Vybavení pro MCU. Snížení příkonu MCU. Možnosti snížení příkonu

Vývojové kity Mega48,

Komunikační rozhraní počítačů

Časovače μpočítače AT89C51CC03

Microchip. PICmicro Microcontrollers

1. Popis a použití Xilinx EDK

MSP 430F1611. Jiří Kašpar. Charakteristika

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

1 Podrobná specifikace Yunifly Datasheet

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT


Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Návod na použití aplikace Pager v2

PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.

PicoBlaze lekce 1: assembler, C překladač a simulační prostředí Jiří Svozil, Leoš Kafka, Jiří Kadlec svozil@utia.cas.cz

Reference. Přílohy. Měřicí přístroj kruhovitosti součástek

Použití programu uscope k simulaci výukového přípravku pro předmět PMP

Návod na práci s přípravkem a programem uscope na cvičeních

CONFIGURATION zapisuje se na začátek inicializační části programu použitím direktivy preprocesoru pragma

Vánoční hvězda 2. Publikované: , Kategória: Blikače a optika.

Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování

Základní uspořádání pamětí MCU

RE Modul relé výstupů

adcsetup {LET} adcsetup = channels Platí pro PICAXE 08M2, 14M2, 18M2, 20M2, 20X2, 28X2, 40X2 Syntaxe:

LabView jako programovací jazyk II

Přerušení na PC. Fakulta informačních technologií VUT v Brně Ústav informatiky a výpočetní techniky. Personální počítače, technická péče cvičení

Ovládání LCD. Ing. Josef Grosman. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

/*Dekodovani DFC signalu*/ // Projekt MMIA 2013 // Martin Dujicek, Milan Rejnus

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Ukázka možného využití mikrokontroléru v praxi

VUT EBEC2017 Projekt. Wiping Turn Indicator Audi TT

ETH2CAN CAN firmware

Víkendový projekt: Bezklíčové otevírání domovních dveří

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Manuál přípravku FPGA University Board (FUB)

Switch Board pro komunikátory BraveLLW

Provádění instrukcí. procesorem. Základní model

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Řízení IO přenosů DMA řadičem

Malý distribuovaný I/O modul

2.4 Cykly 2. ZÁKLADY JAZYKA C

EC Motor. IO Modul EC200. EC200 Int. EC200 Ext. Verze 1.20, revize PMControl s.r.o.

DJ 1T ID ver 1.2 Návod na použití. Návod na použití. Dveřní jednotka DJ 1T ID. Strana 1

APLIKACE MIKROKONTROLÉRŮ PIC32MX

CANLAB IO BOARD ETH/USB. - technický popis -

TFT LCD shield pro Arduino Mega 2560

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Desky Evb Display a Evb Keyboard

Návod na použití aplikace Pager v2

Error [= chyba], Warning [= varování]. Nad ní jsou věty ve tvaru:

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Návod k obsluze výukové desky CPLD

PVKpro vývojový kit s programátorem pro mikrokontrolér PIC16F84 Připojení k PC: paralelní port Uživatelská příručka

Univerzita Pardubice. Fakulta Elektrotechniky a Informatiky. Monitoring rozhraní I2C Autor práce: Radek Šplíchal. Vedoucí práce: Ing.

compsetup COMPSETUP config, ivr Platí pro PICAXE 20X2, 28X2, 40X2 Syntaxe:

IMTEE Přednáška č. 11

STŘEDOŠKOLSKÁ TECHNIKA 2013

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST

Osmibitové mikrořadiče Microchip PIC16F1937

Řídicí struktury. alg3 1

Paměti Flash. Paměti Flash. Základní charakteristiky

Světelná signalizace AVISO BEE

KONEKTOROVÝ BLOK PRO BASLER ACE

Návod na práci s přípravkem a programy uscope a FLIP na cvičeních

IUJCE Přednáška č. 1. programování v C na vyšší úrovni základy objektově orientovaného programovaní v (C++, C#)

EduKitBeta Uživatelská příručka

DJ 1T ID ver 2.0 Návod na použití. Návod na použití. Dveřní jednotka DJ 1T ID. Strana 1

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Transkript:

Aplikace Embedded systémů v Mechatronice

Aplikace Embedded systémů v Mechatronice Obsah přednášky: Opakování Datasheet GPIO piny TRISx/ANSELx registr LATx registr PORTx registr Ukázky použití Hardware poznámky

Opakování K čemu slouží v C pointer/ukazatel? Jak se ukazatel vytváří? K čemu je vhodné předávat funkcím reference? K čemu slouží klíčové slovo typedef? Jak popíšete strukturu? Co se stane, když k ukazateli přičtu jedna?

Práce s datasheetem Datasheet je strukturovaný a najdeme zde kapitoly podle jednotlivých periferii. GPIO, timer, ADC apod. Datasheet rozhodne není beletrie a nečte se tak! Není nutné znát přesně nastavení z hlavy. K tomu právě slouží datasheet Ukázka práce s datasheetem

Práce s datasheetem Práce s periferiemi vyžaduje manipulaci s SFR (special function registers). V Datasheetu MCU nalezneme význam a popis nastavení. Například nastavení interního oscilátoru z REVbasic.c Přiklad nastavuje část registru s názvem IRCF na 111 která znamená 16MHz víz printscreen OSCCON = (OSCCON & 0b10001111) 0b01110000; Masky:

GPIO pin General purpose input/output, tedy obecný vstupně/výstupní pin. Slouží k základní interakci MCU s okolním světem. Na GPIO pin lze zapisovat 1, tedy napětí blízké napájecímu 3.3V, nebo 0 napětí blízké 0V. V dalším režimu lze pinem číst napětí, pokud je blízké 0V čte se jako 0, nebo blízké 3,3V jako 1. Zjednodušení

GPIO Pro práci s I/O piny budeme používat tyto registry: 1. TRISx 2. LATx 3. PORTx 4. ANSELx TRISx Lze interpretovat jako pomyslný přepínač a nastavuje zda bude pin vstup 1, a nebo výstup 0. ANSELx Nastavuje pin do stavu pro čtení ADC což zatím nechceme. PORTx Pokud je pin nastaven jako vstup, z tohoto registru lze přečíst stav příslušného pinu. Nemá tedy smysl do něj zapisovat! LATx Pokud je pin přepnut jako výstup, lze tímto registrem nastavovat logickou úroveň na pinu. Z tohoto registru lze číst aktuální nastavení i přepsat nastavit požadovaný stav.

TRISx Nastavuje zda bude pin vstup 1, nebo výstup 0. TRISD = 0b00001111; TRISDbits.TRISD4 = 0; TRISDbits.TRISD5 = 0; TRISDbits.TRISD6 = 0; //nastaveni portu D pulka pinu vstup, zbytek vystup //nastaveni pomoci jednotlivych bitu

LATx LATDbits.LATD2 = 1; LATDbits.RD2 = 1; //zapis logicke 1 na pin //totez alternativni nazev s nazvem pinu LATD = 0xFF; //prepsani vsech RD pinu na 1 LATDbits.LATD2 = ~LATDbits.LATD2; //prevraceni pinu

PORTx if(portcbits.rc0 == 0){ //magic happens here

Uživatelská makra #define BTN1 PORTCbits.RC0 #define BTN2 PORTAbits.RA4 #define BTN3 PORTAbits.RA3 #define BTN4 PORTAbits.RA2 #define LED1 #define LED2 #define LED3 #define LED4 #define LED5 #define LED6 LATDbits.LATD2 LATDbits.LATD3 LATCbits.LATC4 LATDbits.LATD4 LATDbits.LATD5 LATDbits.LATD6 V kódu pak používám definovaná makra namísto krkolomného zápisu. if(btn1){ LED1 = 1; V makru lze definovat i cele části kódu #define True 1 #define False 0 #define ledon(led) do{ led = False;while(0) #define ledoff(led) do{ led = True;while(0) #define ledtoggle(led) do{ led = ~led;while(0) Na EduKitu se přečte zmáčknuté tlačítko jako logická 1. Naopak LED diody svítí na logickou 0

Inicializace a nastavení GPIO void driveled(char in){ in = ~in; LATD2 = in & 1; asm("nop"); //LED0 LATD3 = in & 2? 1 : 0; asm("nop"); //LED1 LATC4 = in & 4? 1 : 0; asm("nop"); //LED2 LATD4 = in & 8? 1 : 0; asm("nop"); //LED3 LATD5 = in & 16? 1 : 0; asm("nop"); //LED4 LATD6 = in & 32? 1 : 0; asm("nop"); //LED5 Na cvičení bude pracovat s funkcí obsluhující LED na kitu. Zápis probíhá pomocí proměnné typu char. Kolik a jaké led se rozsvítí po zápisu hodnoty 6dec? asm( nop ) je konstrukce umožňující zapsat assembler tedy v tomto případě instrukci procesoru nop, která trvá jeden cyklus a nedělá se nic. void init(void){ ANSELA = 0x00; ANSELC = 0x00; // set pins as outputs TRISDbits.TRISD2 = 0; TRISDbits.TRISD3 = 0; TRISCbits.TRISC4 = 0; TRISDbits.TRISD4 = 0; TRISDbits.TRISD5 = 0; TRISDbits.TRISD6 = 0; // set pins as inputs TRISAbits.TRISA4 = 1; TRISAbits.TRISA3 = 1; TRISAbits.TRISA2 = 1; TRISCbits.TRISC0 = 1; LED1 = 1; asm("nop"); LED2 = 1; asm("nop"); LED3 = 1; asm("nop"); LED4 = 1; asm("nop"); LED5 = 1; asm("nop"); LED6 = 1; asm("nop");

GPIO příklady void main(void) { init(); unsigned char leds = 63; while(true){ delay_ms(1000); leds ^= 63; driveled(leds); void driveled(char in){ in = ~in; LATD2 = in & 1; asm("nop"); LATD3 = in & 2? 1 : 0; asm("nop"); LATC4 = in & 4? 1 : 0; asm("nop"); LATD4 = in & 8? 1 : 0; asm("nop"); LATD5 = in & 16? 1 : 0; asm("nop"); LATD6 = in & 32? 1 : 0; asm("nop"); //LED0 //LED1 //LED2 //LED3 //LED4 //LED5 Přiložený kód převrací stav ledky po zmáčknutí příslušného tlačítka while(1){ if(btn1 BTN2 BTN3 BTN4){ delay_ms(10); if(btn1){ ledtoggle(led1); while(btn1); else if(btn2){ ledtoggle(led2); while(btn2); else if(btn3){ ledtoggle(led3); while(btn3); else if(btn4){ ledtoggle(led4); while(btn4);

Hardware

Hardware