PIC mikrovezérlők fejlődése. Tartalomjegyzék. Összehasonlítás. A PIC18-as mikrovezérlő család (vázlat) Dr. Hidvégi Timót

Hasonló dokumentumok
A PIC18 mikrovezérlő család

C nyelvű programfejlesztés PIC18 mikrovezérlőkre. Összeállította: Molnár Zsolt

CHIPCAD KFT PIC TANFOLYAM PWM 1/7 TERVEZÉSI FELADAT

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

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

1 Doszpi

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

PIC tanfolyam 2013 tavasz 2. előadás

PIC16F877 KÍSÉRLETI PANEL

PIC18xxx utasításkészlet

VHDL szimuláció. Tervezés. Labor II. Dr. Hidvégi Timót

Hobbi Elektronika. Mikrovezérlők programozása Microchip PIC mikrovezérlők bevezető előadás

Programfejlesztés PIC mikrovezérlőkre II.

Labor 2 Mikrovezérlők

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

A 16F84-ről. CMOS Flash/EEPROM technológia: Lábkiosztás

16F628A megszakítás kezelése

MICROCHIP PIC DEMO PANEL

Hibakeresés MPLAB ICD2 segítségével I-II.

PIC16F877 KÍSÉRLETI PANEL

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

Fordulatszámmérő és szabályozó áramkör tervezése egyenáramú kefés motorhoz

TARTALOMJEGYZÉK. 1. Ismétlés A mikroprocesszor mőködése Mikroszámítógépek, mikrokontrollerek... 20

A 16F84-rl. CMOS Flash/EEPROM technológia: Lábkiosztás

A mikroszámítógép felépítése.

Vegyes témakörök. 6. Microchip PIC mikrovezérlők programozása MPLAB X környezetben. Hobbielektronika csoport 2017/2018

Programozó adapter MICROCHIP PIC mikrokontrollerekhez MICROCHIP ICD2 programozó/debuggerhez PICKIT2 programozóhoz Willem égetıhöz

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

Számítógép Architektúrák

PIC perifériák TIMER 1 TIMER1 modul

ARM Cortex magú mikrovezérlők

3. Hőmérők elkészítése

Hardver leírás Klasszikus kontroller v.3.2.2

A 16F84-r l. CMOS Flash/EEPROM technológia: Lábkiosztás

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

A Picoblaze Core implementálása FPGA-ba

Mikrokontrollerek. Tihanyi Attila május 8

Számítógépek felépítése, alapfogalmak

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

Információs Technológia

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.

Az MSP430 energiatakarékos használata

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

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

Digitális technika (VIMIAA01) Laboratórium 1

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

Közepes komplexitású elemek (6xx,7xx,8xx sorozat)

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

Labor gyakorlat Mikrovezérlők

Szenzorhálózatok. Mica moteok hardware felépítése (Folytatás) Orosz György

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

Mikrokontrollerek. mérési leírás

Vegyes témakörök. 7. Microchip PIC18 mikrovezérlők. Hobbielektronika csoport 2017/2018. Debreceni Megtestesülés Plébánia

Nagyteljesítményű mikrovezérlők Energiatakarékos üzemmódok

SZAKDOLGOZAT. Debrecen Borsi István Norbert

Labor gyakorlat Mikrovezérlők

Digitális rendszerek tervezése FPGA áramkörökkel LOGSYS példa

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.

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

Labor gyakorlat Mikrovezérlők

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

Füvesi Viktor. Elektrotechnikai és Elektronikai Tanszék április 24.

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

Memóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)

SATEL. CA-64 RIASZTÓKÖZPONT ( es szoftver verzió) Telepítési útmutató

1. Bevezetés. 2. A mikroszámítógépek felépítése

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

DIGITÁLIS TECHNIKA 7. Előadó: Dr. Oniga István

Nagy Gergely április 4.

Mérés és adatgyűjtés

DSP architektúrák Texas Instruments DSP architektúrák

Programozási segédlet DS89C450 Fejlesztőpanelhez

DSP architektúrák dspic30f család

1. ábra: Perifériára való írás idődiagramja

Egyszerű RISC CPU tervezése

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

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

Mikrovezérlők Alkalmazástechnikája

PIC MIKROKONTROLLEREK ALKALMAZÁSTECHNIKÁJA

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

Nyomtatott áramkörök

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

AF 088II DIO 16/8 AF 088II DIO 16. Digitális ki-, bemeneti modul. Digitális bemeneti modul

Miskolci Egyetem Gépészmérnöki és Informatikai Kar. Villamosmérnöki BSc. szak Ipari automatizálás és kommunikáció szakirány

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

AVR-Duino Eth Shield / AVR-Duino EthMAX Shield

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

TRP-C24 Felhasználói Kézikönyv

MSP430 programozás Energia környezetben. Nokia 5110 grafikus kijelzo vezérlése

Serial 2: 1200/2400 bps sebességû rádiós modem vagy

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

Whead 3.0. Szélsebesség és széliránymérő illesztő távadó. Előzetes

Külső eszközök Felhasználói útmutató

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

Füvesi Viktor. Elektrotechnikai és Elektronikai Tanszék május. 8

Adatok ábrázolása, adattípusok. Összefoglalás

II. számú melléklet. Mikrovezérlő programozása assembly nyelven. Bevezetés

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

Átírás:

PIC mikrovezérlők fejlődése A PIC18-as mikrovezérlő család (vázlat) Dr. Hidvégi Timót Tartalomjegyzék Alkalmazhatóság PIC architektúra összehasonlítás a korábbi és későbbi eszközökkel Fejlesztőeszközök fejlesztőszoftverek (MpLabIDE, mikroc, mikropascal) Demokártyák (Microchip, stb.) Programozás (assembly és C alapok) különböző belső modulok használata (pl.: A/D, TimerX, interrupt) Példák Irodalomjegyzék 13K50 14K50 4550 6680 8860 Összehasonlítás Programmemória Adatmemória SRAM EEPROM I/O A/D CCP MSSP Timers USB SPI I 2 C 8/16 bit 8K 512 256 15 11 1 1/3 1 16K 512 256 15 11 1 1/3 1 8K 512 256 15 11 1 1/3 1 8K 512 256 15 11 1 1/3 1 8K 512 256 15 11 1 1/3 1 USART CAN 1 2

16F architektúra Órajel előállítása LP (alacsony frekvenciájú CLK) XT (kristály) HS (nagyfrekvenciájú kristály) RC (külső RC tag) EC (külső CLK) ECIO (külső CLK, IO láb engedélyezve) HS+PLL (PLL engedélyezve) RCIO (külső RC tag, IO láb engedélyezve) ECIO+SPLL (külső CLK PLLlel) ECIO+PLL (külső CLK PLLlel, IO láb engedélyezve) HS+SPLL (HS + szoftveresen felügyelt PLL-lel) LP, XT, HS Kristály Kerámia 3 4

RC oszcillátor PLL Külső órajel (EC) Órajelátkapcsolás Nem minden PIC18F mikrovezérlőnél létezik! EC ECIO 5 6

Órajelátkapcsolás regisztere Programmemória Órajelszervezés Sleep / Idle Idle : a CPU nem működik, a periféria igen Sleep : a CPU és a periféria sem működik Akkor alakul ki, ha: MCLR/VPP lábon logikai 1 van Sleep parancs kiadása Mi történik? Oszcillátor leáll I/O portok megőrzik állapotuka WDT-t és az osztóját törli TO = 1 (WDT nulláza túlcsorduláskor), PD = 0 (tápfesz megjelenésekor 1 lesz, ez törlődik) Mi történik induláskor? RCON bitek vizsgálata, hogy mi az ébresztés oka 7 8

Ébresztés sleep-ből WatchDog Timer Tápfeszültség bekapcsolása reset (POR) WDT túlcsordulás MCLR/VPP = 0 (külső reset) B portnál bemenetváltozás történik Megszakítás INTx lábon Periférikus egységek megszakítása TMR1, TMR3 CCP capture USART A/D konverzió vége SSP1 modul, ha létrejön egy triggerjel Engedélyezés Időzítők / számlálók WDT Timer0 : 8/16 bites írható/olvasható (de nem az osztó!) szoftverrel módosítható (8/16) túlcsorduláskor megszakítást generál (sleep-ben nem) Timer1 : 16 bites másodlagos órajel Timer2 : 8 bites Timer3 : 16 bites másodlagos órajel 8/16 bites Timer0 (8 bites üzemmód) Órajel forrása (RA4/T0CKI) Fel/lefutó él Osztó bekapcsolása T0PS2:0 : osztás a 2 egész számú hatványaival 9 10

Timer0 (16 bites üzemmód) Timer1 blokkvázlata 16 bites üzemmódban a felső byte közvetlenül nem írható/olvasható Timer1 Timer2 blokkvázlata 16 bites számláló/időzítő (két regiszter) Olvasható/írható Megszakítást generál túlcsorduláskor Belső/külső órajel 11 12

Timer3 blokkvázlata A/D modul regiszterei Eredmény tárolása: ADRESH (az eredmény felső 8 bitje) ADRESL (az eredmény alsó 8 bitje) Konfigurációs regiszterek (max 3) ADCON0 ADCON1 ADCON2 A/D átalakító ADCON0 Max 16 csatorna 10 bites felbontás 13 14

ADCON1 Interrupt (kétszintű) ADCON2 RCON regiszter 15 16

Interrupt regiszterek 1. Interrupt regiszterek 3. (periféria kérés) INTCON PIR1 INTCON2 PIR2 INTCON3 PIR3 Interrupt regiszterek 2. (periféria eng.) Interrupt regiszterek 3. (prioritás) PIE1 IPR1 PIE2 IPR2 PIE3 IPR3 17 18

Fejlesztőrendszerek MPLABIDE (eszközkiválasztás) MpLabIDE Mikro (www.mikroe.com) MikroBasic MikroC MikroPascal (www.microchip.com) MPLABIDE (bejelentkezőkép) MPLABIDE (a fordítóprogram kiválasztása) 19 20

MPLABIDE (a projekt elmentése) MPLABIDE (a forrás hozzáadása a projekthez) MPLABIDE (a projekt leírása) MPLABIDE (a forrásfile fordítása) 21 22

MPLABIDE (szimuláció kiválasztása) MPLABIDE (az eszköz típusának kiválasztása) MPLABIDE (szimuláció, watch ablak) MPLABIDE (konfigurációs bitek beállítása) 23 24

MPLABIDE (szimuláció logikai analizátorral) MikroC (projekt jellemzőinek meghatározása) MikroC (bejelentkezőkép) MikroC (fordítás) 25 26

MikroC (szimuláció indítása) MikroC (függvénykönyvtár) MikroC (szimuláció, watchablak) Programozási lehetőségek Assembly C nyelv, fordítók HI-TEC C fordító MCC18, 24, 32 fordítók, Student változat (60 napos verziók) stb 27 28

Példák assembly nyelven Byte mozgatások Bitműveletek Aritmetika Feltételes szerkezetek Ciklusok Néhány modul programozása (Timer0, A/D, interrupt) Bitműveletek ; az FR1 regiszter 3. bitjét 0-ra, 4. bitjét 1-be állítjuk ; feltöltjük a regisztert movlw B 00110011 ; a Wreg-be írjuk a 33h-t movwf FR1 ; Wreg tartalma az FR1 regiszterbe kerül ; bitműveletek bsf FR1,4 ; a 4. bit egy lesz bcf FR1,3 ; a 3. bit nulla lesz XXXXXXXX FR1 bsf FR1,4 XXX1XXXX FR1 XXXXXXXX FR1 bcf FR1,3 XXXX0XXX FR1 Byte mozgatások Feltételes szerkezetek ; a B és a C portok konfigurálása movlw B 00001111 ; Wreg-be tesszük a 0F-et, felső 4 bit kimenet, alsó ; 4 bit bemenet movwf TRISB ; Wreg-ből átmásoljuk a TRISB-be az 00001111-et movlw 0xF0 ; az F0 konstanst betesszük a Wreg-be, ; a felső 4 bit bemenet, alsó 4 kimenet lesz movwf TRISC ; a Wreg értékét átmásoljuk a TRISC-be label1 label2 btfsc FR1,X ; 0 X 7 utasítás1 utasítás2 label1 label2 btfss FR1,X ; 0 X 7 utasítás1 utasítás2 konstans Wreg fileregiszter movlw movwf fileregiszter1 fileregiszter2 movff 29 30

Ciklusok (hátultesztelős) movlw B 00001111 ; 15d-t írunk a Wreg-be movwf FR1 ; a 15d bekerül az FR1- regiszterbe mag utasítás 1. utasítás 2. utasítás n. decfsz FR1,? ; 0 v 1, döntsük el! goto mag folyt utasítás m. utasítás m+1.... Sajátfüggvény 1. (nincs értékátadás) #include <pic.h> // a Hi-Tech C fordítónál int i,j; keses() for(i=1; i<10000; i++) main() TRISB = 0x00; while(1) PORTB = 0x00; keses(); PORTB = 0x01; keses(); C nyelv alapjai Sajátfüggvények Header file-ok Példák C nyelven Interrupt 16F (HITEC-C) static void interrupt isr(void) if(!t0if) bad_intr = 1; count++; T0IF = 0; PORTA ^= 1; 31 32

Interrupt 18F (MCC18, EGYSZINTŰ) Programozás, fejlesztés #pragma code InterruptVectorHigh = 0x08 void InterruptVectorHigh (void) _asm goto InterruptHandlerHigh //jump to interrupt routine _endasm #pragma code #pragma interrupt InterruptHandlerHigh void InterruptHandlerHigh () if (INTCONbits.TMR0IF) INTCONbits.TMR0IF = 0; Flags.Bit.Timeout = 1; LATBbits.LATB0 =!LATBbits.LATB0; //toggle LED on RB0 PICKIT2 ICD2 Interrupt 18F (MCC18, KÉTSZINTŰ) Bootloader #pragma code high_vector_section=0x8 void high_vector (void) _asm GOTO button _endasm #pragma code low_vector_section=0x18 void low_vector (void) _asm GOTO tmr2 _endasm #pragma code #pragma interruptlow tmr2 void tmr2 (void) // Ide kerül az interruptfüggvény #pragma interrupt button void button (void) // Ide kerül az interruptfüggvény extern void _startup (void); #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) _asm goto _startup _endasm #pragma code 33 34