You are on page 1of 59

PIC mikrokontrollerek alkalmazstechnikja

Gyors utastsvgrehajts OTP rugalmassg

Perifrik szles kre

PIC16CXX

Kis fogyaszts
Gyors perifrik, rajel Utasts-ciklusid I/O vlts teme Komparlsi id Input Capture Resolution (with divide by 16 prescaler) PWM felbonts (8- s 10-bit) PWM frekvencia 8-bit 10-bit SCI (USART) Aszinkron sebessg Szinkron sebessg Master adatsebessg Slave adatsebessg

Szabad s sok forrskd Kdvdelem


@ 20 MHz 200 ns 200 ns 200 ns 200 ns 50 ns 50 ns 80 KHz 20 KHz 312.5-KBaud 5000-KBaud 5 MHz 2.27 MHz 16 - 20 sec 10 ms 1 M E/W (Typical)

SPI

A/D konverzis sebessg Adat EEPROM rsi id Irsi szm

Kontrollerek alkalmazstechnikja

PIC -mikrokontrollerek
Reset ramkr ragenertor Utastsszmll Aritmetikai - logikai egysg (ALU) Vezrl egysg Kzponti egysg (CPU) Adat trol PERIFRIK A mikrokontroller bels felptse Idzt/szmll egysg Soros I/O Prhuzamos I/O Egyb

Programtrol Cimzs

RTCC lb
9-11

OSC1

OSC2

MCLR

EPROM 512 x 12
12

9-11

STACK1 PC (f2) STACK2

Konfigurcis EPROM WATCHDOG WDT/RTCC Eloszt


CLKOUT

Oscilltor kivlszts
2

Utasts regiszter WDT ki


12 9 8

Oscilltor vezrl regiszter

Utasts dekdol
8

6 Kzvetlen cm

Opcis Opci regiszter

SLEEP ltalnos cl regiszter

w regisztertl
Kzvetlen RAM cm 5 RTCC (f1) Adat BUSZ FSR (f4) 5-7

STATUS (f3)

Literals

ALU

TRIS 5

TRIS 6

w regisztertl

w regisztertl TRISB f6

TRISA
RA0-RA3

f5
4

PIC16C56 FELPTSE

RB0-RB7

U4 1 2 3 4 5 6 7 8 9 RA2 RA3

16C54/56
RA1 RA0 OSC1 OSC2/CLKOUT VDD RB7 RB6 RB5 RB4 18 17 16 15 14 13 12 11 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14

U5 RTCC VDD NC VSS NC RA0 RA1 RA2 RA3 RB0 RB1 RB2 RB3 RB4

16C55/57
MCLR 28 OSC 1 27 OSC 2 C7 C6 C5 C4 C3 C2 C1 C0 RB7 RB6 RB5 26 25 24 23 22 21 20 19 18 17 16 15 4 16 15

U2

16C84
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 17 18 1 2 3 6 7 8 9 10 11 12 13 4 16 15

U1

16C71
RA0 RA1 RA2 RA3 RA4 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 17 18 1 2 3 6 7 8 9 10 11 12 13 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

U3

17C42
RD0 RD1 RD2 RD3 RD4 RD5 RD6 RD7 MCLR/VPP VSS RE0/ALE RE1/OE RE2/WR TEST RA0/INT RA1/RT RA2 RA3 RA4/RX/DT RA5/TX/CK 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21

MCLR OSC1 OSC2

MCLR OSC1 OSC2

RTCC MCLR RBO RB1 RB2 RB3 VSS (GND)

VSS - 5. LB, VSS - 14 LB

VDD RC0 RC1 RC2 RC3 RC4 RC5 RC6 RC7 VSS RB0/CAP1 RB1/CAP2 RB2/PWM1 RB3/PWM2 RB4/TCLK12 RB5/TCLK3 RB6 RB7 OSC1 OSC2/CLKOUT

PIC 16/17CXX CSALD


Kontrollerek alkalmazstechnikja

UTASTSCIKLUS
Az utastsciklus az rafrekvencia 1/4-e A cikluid 200 ns 20 MHz-es rnl, 1 mikrosec 4 MHz-nl
Q1 OSC1 Q1 Q2 Q3 Q4 OSC2 1 instruction cycle Megjegyzs:: ltalban: Q1 = Dekdols Q2 = Olvas Q3 = Vgrehajt Q4 = rs Q2 Q3 Q4 Q1 Q2 Q3 Q4

Szmos 8 bites mikrokontrollernl, az utasitsok lehvsa s vgrehajtsa sorban egyms utn trtnik PIC16CXX pipeline felpts, a lehvs s vgrehajts tlapolja egymst s ezrt egyciklusos utastsok vannak

1. MOVLW 55h 2. MOVWF PORTB 3. CALL 4. BSF SUB_1 PORTA,BIT3

Fetch 1

Execute 1 Fetch 2

Execute 2 Fetch 3

Execute 3 Fetch 4
Fetch SUB_1

Brmelyik program elgazs (pl. GOTO, CALL vagy a PC-be rs) kt ciklusos!

Kontrollerek alkalmazstechnikja

PIC mkdtets

RAJEL - RESET - PROGRAMOZS


Utp

PIC
OSC1
fosc/4

PIC
OSC1

Kls rajel

PIC
OSC1

OSC2 LP, XT, HS rajel kialakts

OSC2 RC rajel kialakts

OSC2 Kls rajel hasznlata

rajel generls PIC kontrollereknl

RESET kezels
VDD Tpfesz (VDD) Internal Reset MCLR TPWRT Power-up Timer TOST OSC Start-up Timer Reset Mkds Internal Reset 72 ms Internal Reset VDD VDD BVDD Max BVDD Min 72 ms BVDD Max BVDD Min 72 ms BVDD Max BVDD Min

<72ms

Brown-Out vdelem
VDD MCLR

Ez majdnem mindig elegend !

PIC

Soros programozs
Csak 2 lb kell a programozshoz
MCLR/V PP VDD VSS RB6 RB7 PIC16CXX Data/in/out Command in VPP VDD VSS Clock

RB6 az rajel bemenet RB7 az adat be/ki- vagy a parancs bemenet Parancsok: - Load data (adatrs) - Read data (adatolvass) - Begin programming (programozs indul) - End programming (programozs vge) - Increment address (memriacm nvelse)

Kontrollerek alkalmazstechnikja

PIC16CXX Architektra: RISC-tulajdonsg


A nagy teljestmny okai: Harvard architektra Regiszter fjl szervezs Minden utasts egyszavas LWI (Long Word Instruction) Utasts csvonal (pipelining) Egyciklusos utastsok Cskkentett utastskszlet Ortogonlis utastskszlet
2 4 utastslehvs operandus lehvs operandus bers 7

C P U

Program s Adat Memria

MAR

MBR program

cm dekdol

ALU adatok 6

Neumann felptsben az utastsok 5 operandus olvass s az adatok kzs memriban mv. vezrls helyezkednek el Az utasts olvass 3 teresztkpessg korltozott MBR=Memory Buffer Reg. MAR=Memory Address Reg.

MBR

AC

CU PC
op.

1 IR

cm

CPU 8 (Data) Memory 14 (Program) Memory

Harvard felpts kt kln trolt: egy adat s egy programtrolt hasznl Nagyobb ateresztkpessg Eltr szlessg adat s programbusz lehetsges
Bels adat busz <8> 5
PCLATH

Veremkezels
PIC16CXX-nl kln 8 x 14 bites hardver verem Verembe rakunk : CALL vagy megszakts Verembl vesznk: RETURN, RETLW, RETFIE A verem krkrs (last in first out) - LIFO

5 PCH PCL 16 VEREM 8 x 14


Kontrollerek alkalmazstechnikja

PIC PROGRAM s ADAT MEMRIA


HARVARD ARCHITEKTRA: klnll adat memria (8 bit) program memria (12-14-16 bit)

Mirt j?

op code <7> direct data adr <7>


PC (f2)
A09 A08
1

A07-A00
8 000

RETLW

STACK1
RETLW

STACK2

Els lap

0FF 100 1FF 200

0.5K

Msodik 2FF lap


300 3FF

1K

A PIC 16C56 EPROM memrija

lapozsos technika!
A regisztermez kt rszre tagozdik.
1.mkdtet file regiszterek ( bels mkdshez s I/O-hoz ) A valsidej ra / szmll regisztere ( RTCC ) programszmll ( PC, Program Counter ) llapotregiszter ( Status Register ) I/O regiszter ( I/O Registers, PORTs ) file regisztert vlaszt regiszter ( FSR, File Select Register ) ltalnos cl regiszterek ( General Purpose Registers ). 2.Tovbbi specilis regiszterek szolglnak az I/O PORT konfigurlsra s az eloszt kezelsre. A mikrovezrl 512 szavas memrit kpes kzvetlenl megcmezni, amit EPROM-knt alaktottak ki
Fjl cm 00 01 02 03 04 05 06 07
10 9 8 76543210 Indirekt cm. reg.

RTCC PC STATUS FSR PORT A PORT B ltalnos cl fjl reg.-ek

10 9 8 7 6 5 4 3 2 1 0

10 9 8 7 6 5 4 3 2 1 0

STACK 1
RETLW 7 6 5 4 3 2 1 0

STACK 2 TRISA
5 4 3 2 1 0

TRISB

OPTION

*
10

0F

A program memrbl ltalnos cl fjl 17 regiszterek

* Az ALU-n keresztl
-a fjl regiszterekbl -a fjl regiszterekhez

(BANK 0) 1F

RAM FELPTSE

Kontrollerek alkalmazstechnikja

UTASTSKSZLET
Utastsok kzvetlen cmzssel

op-code 6-bit mveleti kd

d 1 cl

f f f f f f f 7-bites regiszter cm = 128 bjtos adatmemria lap

Utastsok llandval literl = konstans

op-code 4-bit mveleti kd

x x

k k k k k k k k 8-bit literal rtk

GOTO, CALL

op-code 3-bit

k k k k k k k k k k k

11-bites clcm = 2K program memria lapmret mveleti kd Specilis utastsok NOP, SLEEP, CLRW OPTIONS, TRIS, CLRWDT 00 0000 x x op-code 8-bit op-code

Hogyan trolhatk a program memriban adatok (llandk)?


RETLW utasts hasznlhat lland rtknek W regiszterbe tltsre Nagyon hasznos tblzatoknl CALL MOVWF TABLE ADDWF RETLW RETLW RETLW TABLE PORTA ; ; W-ben az eltols (table offset) W now has table value

PC k0 k1

; ; ;

W = offset, PC=PC+offset A tbla kezdete

kn

A tbla vge
Kontrollerek alkalmazstechnikja

Utasitskszlet - sszefoglal

PIC16CXX Utastskszlet - sszefoglal


Byte-Oriented Operation - bjtos utastsok No Operation Move W to f Clear W Clear f Subtract W from f Decrement f Inclusive OR W and f AND W and f Exclusive OR W and f Add W and f Move f Complement f Increment f Decrement f, skip if zero Rotate right f Rotate left f Swap halves f Increment f, skip if zero NOP MOVWF CLRW CLRF SUBWF DECF IORWF ANDWF XORWF ADDWF MOVF COMF INCF DECFSZ RRF RLF SWAPF INCFSZ f f f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d f,d Bit-Oriented Operations - bit utastsok Bit clear f Bit set f Bit test f, skip if clear Bit test f, skip if set BCF BSF BTFSC BTFSS f,b f,b f,b f,b

Literal and Control Operations Konstanskezel s vezrl utastsok Go into standby mode Clear Watchdog Timer Return, place Literal in W Return from interrupt Return Call Subroutine Go to address (k is 9 bit) Move Literal to W Inclusive OR Literal and W Add Literal to W Subtract Literal from W AND Literal W Exclusive OR Literal W SLEEP CLRWDT RETLW RETFIE RETURN CALL GOTO MOVLW IORLW ADDLW SUBLW ANDLW XORLW k k k k k k k k k

Jellsek::

f = a RAM (file) regiszter cme d = a mvelet eredmnye hova kerl; 0 = W regiszter, 1 = RAM (file) regiszter k = egy 8 bites fix rtk (konstans) vagy egy utastsra mutat cm (ez hoszabb mint 8 bit!) Megjegyzs: A szrkvel jellt utastsok a 16CXX tpusok "j" utastsai a PIC16C5X tpushoz kpes

W regiszter

Indirect Addr 00h RTCC PC Status FSR PortA PortB PortC

Indirekt cmre hivatkozsnl hasznlt Idzt/szmll regiszter Utastsszmll Program sttusz regiszter Indirekt cmet tartalmaz A port B port C port (ha van)

ALU

ltalnosan felhasznlhat regiszterek (File registers) (RAM) (24-72)

STATUS WORD REGISZTER (f3)


(7) (6) (5) (4) (3) (2) (1) (0) Z DC C PA2 PA1 PA0 T0 PD

RESET felttelek: = PA2, PA1, PA0 trldnek, rtkk ."0" = Jelzik a RESET okt. = Z, DC, C rtke nem vltozik meg.

PA0-PA2: lmemria lapvlaszts TO: time out (watchdog) PD: power down (sleep) Z: zr bit DC: half carry (4. biten tlcsord.) C: carry Kontrollerek alkalmazstechnikja

Illusztrci: PIC program rszletek


A kivonsok (SUBWF and SUBLW) a PIC-eknl egy kicsit mskpp hasznlhatk mint ahogy megszoktuk ms 8 bites kontrollereknl. A szmts a PIC-eknl (memria - W) mdon trtnik a (W - memria helyett). Pl. Ha W-bl 3-at ki akarunk vonni, s azt rjuk: SUBLW 3 valjban 3-bl vonjuk ki a W tartalmt A j megoldst az ADDLW utastssal rjk el a kettes komplemens felhasznlsval: ADDLW 256-3 vagy ADDLW 253 esetleg ADDLW -3 Emiatt a W regiszter tartalma kettes komplemensnek kpzse: SUBLW 0 utastssal trtnhet a szoksos XORLW 0ffh ADDLW 1 utastsok helyett. A msik fontos dolog: kivonskor a carry "nincs klcsnvtel bitknt mkdik ("NOT borrow"). Azaz ha egy kivonsi mvelet klcsnvtet okoz a carry trldik!!! (egybknt 1)
; 32 bites regiszter (hh:mh:ml:ll) eltolsa jobbra 4 bittel cblock 0x20 hh ;legmagasabb helyirtk bjt MOVLW 0 ; mh eredmnyregiszter (W) = 0 ml BTFSC NORMAL, 7 ; MSb set? ll IORLW 00000001B ; Set LSb endc BTFSC NORMAL, 6 ; bit set? shr4 IORLW 00000010B ; Set bit MOVLW 0xf0 ANDWF ll,F BTFSC NORMAL, 5 ; bit set? SWAPF ll,F IORLW 00000100B ; Set bit SWAPF ml,F ;als-fels 4bit csere BTFSC NORMAL, 4 ; bit set? ANDWF ml,W ;fels (als volt) IORLW 00001000B ; Set bit XORWF ml,F ;ml-ben trlni BTFSC NORMAL, 3 ; bit set? IORWF ll,F ;ll-hez hozzadni IORLW 00010000B ; Set bit MOVLW 0xf0 BTFSC NORMAL, 2 ; bit set? SWAPF mh,F IORLW 00100000B ; Set bit ANDWF mh,W BTFSC NORMAL, 1 ; bit set? XORWF mh,F IORLW 01000000B ; Set bit IORWF ml,F MOVLW 0xf0 BTFSC NORMAL, 0 ; bit set? SWAPF hh,F IORLW 10000000B ; Set bit ANDWF hh,W XORWF hh,F ; az eredmny W-ben, NORMAL vltozatlan. IORWF mh,F RETURN Feladat: egy bjt bitjeinek megfordtsa ;pl.: 11000000 -bl 00000011 legyen
Kontrollerek alkalmazstechnikja

PIC PERIFRIK
I/O PORT FELPTSE
VDD Q1 Adatbuszrl D Q Adat latch CK Q P

rs

Az adatbuszhoz

Olvas s W regiszterbl "TRIS 1" I/O Q Vezrl latch Q Q2 N Vss RESET

I/O lb

- I/O - RTCC - A/D - soros I/O - PWM - capture/ compare - prh.( slave) port - idztk

Az RTCC egyszerstett rajza


RTCC lb fosc/4
0 0 1 Programozhat eloszt 1

Adat Busz

(8) Bels szinkron rval

RTCC (8)

( 2 ciklusos ksleltets ) RTE RTS PS2, PS1, PS0 PSA

SLEEP (Power-Down) Md
SLEEP utastssal kerl a PIC16CXX SLEEP (power-down) llapotba. Ilyenkor: Minden bels ra s oszcilltor lekapcsol Watchdog Timer, ha engedlyezett, tovbb fut a kimenetnek konfigurlt I/O lbak tovbb vezrelnek A/D konvertl, ha A/D rajele RC oszc. breds (Wake up): Kls reset (MCLR lbat L-re, majd H-ra) Watchdog Timer idtllpse Megszakts Fogyaszts: 1.5 A typical @ 4V
Kontrollerek alkalmazstechnikja

Plda: Soros adattvitel


Clock Data

Csak 11 sz a program !!! 74 utasts ciklus = 14.6 @ 20 MHz s

Ez megfelel 540 Kbit/sec-nek

Egy egyszer szinkron soros adattviteli program: XMIT MOVLW 08h MOVWF bit_count PORTB, bit0 PORTB, bit1 XDATA ; ; Bit count 0 Data pin 0 Clock pin Rot right through carry XDATA = xmit data test carry bit 1 Data pin 1 Clock pin Not done yet Clear clock pin

XM_LOOP BCF BCF RRF

; ; ; ; BTFSC STATUS, CARRY ; BSF PORTB, bit0 ; BSF PORTB, bit1 ; DECFSZ bit_count ; GOTO XM_LOOP ; BCF PORTB, bit1 ;

Megszakts - ttekints
Akr 12 megszakts forrs Csak egy megszaktsi vektorcm (04H), priorits programbl Megszakts engedlyezs: globlis s egyedi Tbb megszakts szundibl breszti a kontrollert Hardver megszakts ksleltets - 3 utasts ciklus

Kontrollerek alkalmazstechnikja

Watchdog Timer (WDT) & TMR0


Segt, ha a program elkszl Sajt szabadonfut RC oszcilltors van WDT programbl nem kezelhet, csak a CLRWDT utastssal, ami trli WDT tlcsorduls reszeteli s jraindtja a kontrollert Programozhat idtartam (time-out period): 18 ms-tl 2.5 sec-ig SLEEP-ben is mkdik. A tlcsorduls felbreszti a CPU-t "CLRWDT" Reset RC oscillator 8 bites szmll Utoszt Tlcsorduls reseteli a chip-et

WDT egedlyezs/tiltsa a programozhat biztostkkal (WDT_ON/OFF) Egyszer 8 bites szmll Mivel sajt bels RC oszcilltor mkdteti, ezrt kristlyhibt is jelez

TMR0 (or RTCC)


Olvashat s rhat Tlcsordulsakor megszaktst generl Az elosztja programozhat Idztknt: Szmllknt: Az rajel frekvencia: OSC/4 (5 MHz @ 20 MHz-es kontroller rajelnl inkrementldik , programozhat az lvlts, amire lp (fel- vagy lefut Elosztval a kls rajel 50 Mhz-ig mehet megszakts tlcsordulskor kls rajel bemenet bels rajel
8-bites eloszt 8-bites idzt/szml.

Kontrollerek alkalmazstechnikja

16-bites szamll/idzt, 3 bites elszt ( 1, 2,4,8) Aszinkron szmll md Sleep ideje alatt is mkdik Ha TMR1 tlcsordul, breszti a processzort (kls rajel lpteti) Timer

TMR1&2
1 (TMR1)

LP oszcilltor Direkt 32 KHz - 200 KHz kvarc mkds RC0 s RC1-en keresztl SLEEP mdban is fut az id A CCP capture s compartor (CCP) modul(ok) idalapja
Synchronized Overflow interrupt TMR1H TMR1L 1 T1OSC TMR10N on/off 1 T10SCEN OSC/4 Enable Internal Oscillator Clock Prescaler 1, 2, 4, 8 0 2 TMR1CS TICKPS <10> Sleep input T1INSYNC Synchronize det 0 clock input

RC0/ T1OSO/ T1CKI RC1/ T1OSI/ CCP2

Ha T1OSCEN trlve van, akkor az inverter s az ellenlls kikapcsoldik. (Nincs fogyaszts)

8 bites idzt Timer 2 (TMR2) 4 bites eloszt ( 1, 4, 16) 4 bites utoszt ( 1 to 16) - Az utoszt tlcsordulsa megszaktst okoz A Szinkron Soros Port (SSP) modul baud-rate genertora
Timer2 interrupt TMR2IF

Timer2 output*

OSC/4

Prescaler 1, 4, 16 2

TMR2 Comparator Period Postscaler 1:1 1:16 4

EQ

* TMR2 output can be software selected by the SSP module as baud clock.
Kontrollerek alkalmazstechnikja

A/D
A/D konverter modul: - Max 8 analog bemenet multiplexeldik egy A/D konverterre - Mintavev-tartt tartalmaz - 11 s-os mintavteli id (10K forrs impedancinl) - 16 sec konverzis id csatornnknt (20 sec PIC16C71-nl) - 8 bites felbonts (1 LSB accuracy (2 LSB @ VDD=3V - A/D konverzi sleep alatt. A/D ksz bresztheti a processzort - Kls referencia bemenet, VREF - Bemen feszltsg tartomny: VSS-VREF A port lbai programbl konfigurlhatk (analg vagy digitlis bemenet Az analg bemeneteknek konfigurlt lbak digitlis kimenetknt is mkdhetnek ha a TRIS bitjeiket trljk Digitlis bemenetknt konfigurlt lbra analg feszltsget tve, a bemeneti puffer rama miatt tlterheldhet
CSH<2:0> 111 110 101 000 001 010 011 100 Input channel mux RE2/AIN7 RE1/AIN6 RE0/AIN5 RA0/AIN0 RA1/AIN1 RA2/AIN2 RA3/AIN3/V REF RA5/AIN4

A/D Converter

Vin (Input voltage)

Vref (Reference voltage)

V DD 000 or 010 or 100 001 or 011 or 101

PCFG<2:0>
V DD

Sampling switch

R S

RA x

V T = 0.6V Ric = 1K SS R SS

VA

Cpin 5 pF

V T = 0.6V

I leakage 500nA

Chold = DAC capacitance 51.2 pF V SS

Kontrollerek alkalmazstechnikja

ANALG KOMPARTOR
t t t

t t t

2 analg kompartor van egy tokban Programozhat referencia feszltsg 8 programozhat mkdsi md (reset kompartor, kikapcsolva, kt fggetlen kompartor, kzs referencij, stb.) Kompartor I/O multiplexelve van a digital I/O-val Kompartor kimenet megszaktst okozhat, s ez bresztheti a tokot sleep-bl

16 tagbl ll

8R

REN

8R
VRR

VR3

REF

16:1 analog mux

VR0

t t t

VREF 16 lpsbl ll feszltsget ad ki VREN kapcsolja (ON/OFF) a feszltsget a referencia ramkrre D/A talaktnak hasznlhat

Kontrollerek alkalmazstechnikja

EEPROM
DOUT SSP DIN CLK CS 93LCXX Serial EEPROM

PIC16CXX 93LCXX csald 3(4)-vezetkes SPI interfsz Max. 16Kbit EEPROM Egyszer rutin 20 sor !!!

I2 C Bus SSP SDA Serial EEPROM

SCL

PIC16CXX

24LCXX

24LCXX csald 2-vezetkes 2IC buszt hasznl Maximum 64 Kbit EEPROM Program: 100 sor Tbb perifria esetn j vlaszts

Kontrollerek alkalmazstechnikja

Capture/Compare/PWM (CCP) Modul I. Capture: adott felttel teljeslse esetn egy szmll rtknek bersa egy regiszterbe
TMR1 s TMR2 szmllkat hasznljk Capture md: TMR1 16 bites rtke a capture regiszterbe rdhat: - Minden lefut lnl - Minden felfut lnl - Minden 4.-edik felfut lnl - Minden 16.-adik felfut lnl Kompartor md: egy 16-bites rtket TMR1-hez hasonlt, s egyezskor generlhat: - CCPX lbon magas szintet, - CCPX lbon alacsony szintet, - Szoftver megszaktst, vagy - kivlthat specilis esemnyt (TMR1 trlst, vagy A/D GO bit-jt 1-be) PWM Md 8 vagy 10-bit felbonts: 80 KHz frekvencia 8-bites felbontsnl 20 KHz frekvencia 10-bites felbontsnl max. 50 nsec-os felbonts (@ 20 MHz, 10 bites felbonts)
R Fbw AN - KI = Uk DIG - BE R C Uk=Ub*W/T Ub DC W T 1/T 3/T 5/T FOURIER SPEKTRUM LP SZR Fpwm Nem kivnt harmonikusok

Kontrollerek alkalmazstechnikja

Capture/Compare/PWM (CCP) Modul II.


Capture Md
Prescaler 1, 4, 16 RCy/CCPx and edge detect Capture Enable TMR1H Q's CCPCONx <3:0> TMR1L Set CCPxIF interrupt PIR<2>

CCPRxH

CCPRxL

Compare Md
Trigger Special event Set CCPxIF interrupt PIR<2> CCPRxH CCPRxL Q RCy/CCPx TRISC<y> Output Enable S R Output Logic Comparator TMR1H CCPxCON<3:0> Mode Select TMR1L

match

For CCP1 (if enabled), reset Timer1. For CCP2 (if enabled), reset Timer1 one set GO bit (ADCON0<2>).

PWM Md
Duty cycle registers CCPRxL CCPxCON<5:4>

CCPRxH (Slave) Comparator TMR2 (Note 1) Reset Timer R Q RCy/CCPx S TRISC<y>

Comparator

PR2 Note: 8-bit timer is concatenated with 2-bit internal Q clock or 2 bits of the prescaler to create 10-bit time base.

Kontrollerek alkalmazstechnikja

SSP modul
Kpes vagy SPI vagy I C/ACCESS.bus mdban mkdni
Internal data bus Read Write

SPI Md
Max baud tem (20 MHz)-nl
SSPBUF

Mester 5 MHz Szolga 2.27 MHz


Programozhat baud tem. (OSC 4, 16, 64, vagy TMR2 output 2) Programozhat rajel polarits ads/vtelnl

SDI SSPSR SDO bit0 Shift clock

TRISA<5> SS Edge Select SSPM<3:0>

Clock select (SSPM<3:0>) Timer2 output 2 Tcy

Prescaler 4, 16, 64 SCK

Data to TX/RX in SSPSR TRISC<3>

I2C/ACCESS.bus Md
7 vagy 10 bites cm Standard (100 KHz) gyors (400 KHz) md tmogats
RC3/SCK RC4/SDA Internal data bus Rea d SSPBUF Shift clock SSPSR MSB Match detect SSPADD Start and Stop bit detect Set, Reset S, P bits (SSPSTAT Reg) Addr Match Write

A szolga funkcik teljes HW kialaktsa HW segti a mester s a multi-mester funkcikat

Kontrollerek alkalmazstechnikja

I2C busz
Az adatforgalom kt vezetken trtnik. Az SCL vezetk az rajelet szolgltatja , az SDA jel vgzi az adatforgalmazst. A kzs potencilt a GND sszekts biztostja. Az SCL s SDA vonalak kimenetei nyitott kollektoros megoldsak, gy a vonalak alaphelyzetben magas llapotban vannak. Ennek elnye ebben rejlik, hogy nem csupn kt , hanem szmos eszkzt kthetnk ssze. Minden egysg lehet Ad ill Vev. Ezen fell megklnbztetnk Master s Slave eszkzket.: A funkcik: TRX = Transmitter (ad): Az az egysg amelyik adatot kld a buszra. RCV = Recevier (vev): Az az egysg amelyik adatot fogad a buszrl. A szerepek: MST = Master (mester): Az az egysg amelyik kezdemnyezi az tvitelt, az tvitelhez az rajelet generlja, s be is fejezi az tvitelt. SLV = VCC Slave (szolga): A mester ltal megcmzett egysg.
SDA SCL
SDA1 KI SCL1 KI SDA2 KI SCL2 KI

SDA1 BE

SCL1 BE

SDA2 BE

SCL2 BE

ADAT stabil
EGYSG I. EGYSG II.

SDA SCL BIT tvitel az I2C buszon

SDA

SCL

S START

P STOP START s STOP felttelek

SDA SLAVE KLDI AZ ADATOT SLAVE VESZI AZ ACK- OT

SCL S

8 MASTER ADJA

9 ACK

BJT tvitel az I2C buszon

Bit szint tvitel: az eredetileg magas szinten lv SDA vonalra kerl a 0 vagy 1 szint. Az SCL vonal magas szintje alatt rvnyes az adat. Az adat csak az SCL vonal alacsony szintje alatt vltozhat. A busz aktv s inaktv llapott a START s STOP felttelekkel tudjuk definilni. START felttel akkor lp fel s a busz aktv lesz amikor SCL magas llapotban az SDA vonalon egy H-L tmenet van. STOP felttel akkor lp fel, amikor SCL magas llapotban az SDA vonalon egy L-H tmenet van. A START s STOP llapotokat csak a mester generlhatja. A busz aktv a START s STOP llapot kztt.

Kontrollerek alkalmazstechnikja

Prhuzamos szolga port


Parallel Slave Port Blokkvzlata
Data bus "WR Port" D CK Q "RD Port" One bit of PortD Set interrupt flag PSPIF (PIR1<7>) D CK Q RDx pin

TTL Read Chip Select Write Note: I/O pins have protection diodes to V DD and VSS . RD

CS WR

8 bites mikroprocesszor adatbuszhoz direkt kthet Aszinkron mkds (a klvilg fel) A prhuzamos port kls rsakor vagy olvassakor megszakts generldik A Port D s Port E portokat hasznlja Port D Adatbusz Port E vezrl jelek (read, write, s chip select)

Kontrollerek alkalmazstechnikja

SCI modul SCI blokkvzlata


TXD8 TXIE Interrupt TXIF TXDATA TSR TXCLK RC6/TX/CK TXREG TX8/9 TXEN SYNC SREN CSRC CREN SPEN

OERR

FERR RC7/RX/DT RXDATA

RSR RCCLK TO RC6, RC7 I/O Port Logic

RC8/9 RCD8 RCREG RCIF Baud Rate Clock

RCIE

SPBRG

Tcy

SCI Aszinkron Md
Ads Ad regiszter ketts pufferels Ha az ad ksz az adattvitelre, megszaktst generl 8/9 bites ads Vtel Vev regiszter ketts pufferels Fellrsi hiba jelzbit Keretezsi hiba detektlsa Minden adatbit tbbsgi detektlsa (zajvdelem) Ha bejtt egy teljes adat, megszaktst generl Ads

SCI Szinkron Md

Ad regiszter ketts pufferels Egymst kvet bjtokat gy viszi t, hogy lehetsges 16 bites szavak tvitele, vagy akr hosszabbakat is 8/9 bites ads Vtel Vev regiszter ketts pufferels 8/9 bites vtel Egymst kvet bjtokat gy veszi, hogy lehetsges 16 bites szavak vtele, vagy akr hosszabbak is
Kontrollerek alkalmazstechnikja

PIC RENDSZERFEJLESZTS
Parallax-fle utastskszlet
ADD fr,#lit ADD W,fr AND fr1,fr2 AND W,fr CJA fr1,fr2,addr9 CJB fr,#lit,addr9 CJBE fr1,fr2,addr9 CJNE fr,#lit,addr9 CLR fr CLRB bit CSA fr1,fr2 CSB fr,#lit CSBE fr1,fr2 CSNE fr,#lit DECSZ fr INC fr JC addr9 JMP W JNZ addr9 LJMP* addrll MOV fr1,fr2 MOV OPTION,fr MOV !port fr,fr MOV W,fr MOV W,++fr MOV W,>>fr MOVB bitl,/bit2 NEG* fr NOT W OR fr,W RET RR fr SETB bit SNB bit STC SUB fr1,fr2 SWAP fr XOR fr,#lit XOR W,#lit ADD fr1,fr2 ADDB* fr,bit AND fr,W CALL addr8 CJAE fr,#lit,addr9 CJB fr1,fr2,addr9 \CJE fr,#lit,addr9 CJNE fr1,fr2,addr9 CLR W CLZ CSAE fr,#lit CSB fr1,fr2 CSE fr,#lit CSNE fr1,fr2 DJNZ fr,addr9 INCSZ fr JMP addr9 JNB bit,addr9 JZ addr9 LSET* addrll MOV fr,W MOV OPTION,W MOV !port fr,W MOV W,/fr MOV W,--fr MOV W,<>fr MOVSZ W,++fr NOP OR fr,#lit OR W,#lit RETW lit,1it,... SB bit SKIP SNC STZ SUB fr,W SZ XOR fr1,fr2 XOR W,fr ADD fr,W AND fr,#lit AND W,#lit CJA fr,#lit,addr9 CJAE fr1,fr2,addr9 CJBE fr,#lit,addr9 CJE fr1,fr2,addr9 CLC CLR WDT CSA fr,#lit CSAE fr1,fr2 CSBE fr,#lit CSE fr1,fr2 DEC fr IJNZ fr,addr9 JB bit,addr9 JMP PC+W JNC addr9 LCALL* addrll MOV fr,#lit MOV OPTION,#lit MOV !port fr,#lit MOV W,#lit MOV W,fr-W MOV W,<<fr MOVB bit1,bit2 MOVSZ W,--fr NOT fr OR fr1,fr2 OR W,fr RL fr SC SLEEP SNZ SUB fr,#lit SUBB* fr,bit TEST fr XOR fr,W
RENDSZERFEJLESZTS

.. A KVETELMNYEK ALAPJN A RENDSZERTERV ELKSZTSE

A HARDVER KIALAKITSA

PROGRAMTERVEZS KDOLS

A PROGRAM MEGIRSA (EDITOR)

A PROGRAM FORDITSA (ASSEMBLER)

RSZEK KIPROBLSA (SZIMULTOR)

A GPI KD PROGRAM TVITELE A FEJLESZTEND RENDSZERBE

KIPRBLS, TESZTELS HIBAKERESS

VGE

Jellsek: fr - file regiszter, #lit - konstans, W - w regiszter, addr8 - 8 bites cm,

A RENDSZERFEJLESZTS BLOKKVZLATA

(Aki ismeri a 51-es utastskszletet, annak nagyon szembetn a hasonlsg.)

Parallax szimultor
PIC 16C84 Simulator v2.09 HEX BINARY 0 1 2 3 4 5 6 7 8 9 A B C D E F STACK 1 0000 0000000000000 0 00 00 00 18 00 1F FF 00 00 00 00 00 00 00 00 00 STACK 2 0000 0000000000000 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OPTION FF 11111111 2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 W 00 00000000 8 00 FF 00 18 00 1F FF 00 00 00 00 00 00 00 00 00 RTCC 00 00000000 9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PC 0000 0000000000000 LATCH PIN TRI-STATE STATUS 18 00011000 PORT A 1F 00011111 00 00000000 1F 00011111 FSR 00 00000000 PORT B FF 11111111 00 00000000 FF 11111111 INTCON 00 00000000 MCLR RTCC IRP RP1 PR0 TO PD Z DC C WD CYCLES TIME XTAL 1 0 0 0 0 1 1 0 0 0 0.0180 00000000 0.0000000 4mhz

000 mov !ra, #00000000b ;inicializalas 001 002 mov !rb, #0 ;kimenet 003 004 inc rb 005 mov szaml,#0ffh F1-HELP F2-BRKPT F3-CLEAR F4-HERE F5-TIME F6-GO F7-STEP F8-NEXT F9-RUN F10-RST

Kontrollerek alkalmazstechnikja

PIC fejleszts s a csald


PARALLAX MICROCHIP Szvegszerkesztvel forrskd megrsa
MPASM

*.SRC
PASM

*.ASM Assemblls

*.LST - szimultornak PSIM program Clearview ICE

*.OBJ - szimultornak MPSIM program PICMASTER ICE A fordts eredmnye

*.OBJ - programoznak PIC16Cxx Programmer TrueFlight

*.HEX - programoznak PRO MATE Programmer

PIC CSALD - sszefoglal


TIPUSOK Utastshossz (bit): Jellemz k
SEBESSG EPROM ROM EEPROM RAM EEPROM

PIC16C5X

PIC16CXX

PIC17CXX

12
54 20 512 54A 20 512 R54 20 512 25 25 25 25 25 72 55 20 512 56 20 1K 57 20 2K 57A 20 2K 72 72 36 128 58A 20 2K 61 20 1K 64 20 2K

14
71 20 1K 74 20 4K 84 10

16
42 20 2K

36

192

1K 36 64

232
4+WDT

1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 3+WDT 1+WDT 3+WDT 1+WDT IDZTK CAPTURE/COMPARE/PWM 1 2 SOROS PORT PRHUZAMOS SLAVE PORT 8 bites A/D MEGSZAKTSOK I/O vonalak Tpfesz (V) Utastsszm SPI/I2C

2 SCI

IGEN 4 12 33 12 33 12 33 20 33 12 33 20 33 20 33 12 33 3 13 35 8 33 35 4 13 35

IGEN 8 12 33 35 4 13 35 11 33
4.5-5.5

2.5-6.2 2.5-6.2 2.0-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 3.0-6.0 2.5-6.0 3.0-6.0 3.0-6.0 2.0-6.0

55

Kontrollerek alkalmazstechnikja

PIC alkalmazsok I.
Biztonsgi rendszer
Keypad

PIC16CXX
I/O
PortB SSP

Optional
2 SE

Nonvolatile Parameter Storage

LCD LED Status Indicators

88:88

I/O
Beacon

Pulse/ Tone Dialer

Phone Line Xenon/ Halogen Flasher

I/O I/O I/O Zone Devices Zone Control Relays


State

Freq I/O

Piezo

I/O I/O

Alarm RF Comms to all peripheral devices Pulse RF via addressable XMT/ protocol RCV

Soros EEPROM illesztse

BASIC STAMP I.

DOUT SSP DIN CLK CS

Serial EEPROM

Vcc 4.7K

Adat Foglaltsg jelz


1 2 3 4 8

CS CLK DI DO

Vcc NC ORG Vss


7 6 5

1 2 3 PC fel

93LCXX

1 2 3

18

RA2 RA3 RTCC

RA1 RA0 OSC1 OSC2


14 17 16 15

93LC56 4.7K

PIC16CXX 93LCXX EEPROM 3-vezetkes interfsz 16K-64k bites EEPROM Egyszer szofver 20 kdsor

RESET ramkr GND

4 5 6 7 8 9

MCLR Vss

PIC Vdd 13 16C56 RB0 XT RB7 12


RB1 RB2 RB3 RB6 RB5 RB4
11 10

+5V

I/O PORT-ok

Kontrollerek alkalmazstechnikja

PIC alkalmazsok II.


BASIC STAMP II
TCS1 TELCSAT I/O CSATLAKOZO P1 1 6 2 7 3 8 4 9 5 PC-SOROS J1 DC BE 5V-15V DC 22 U1 1 2 3 4 23 21 24 SOUT SIN ATN VSS VSS VDD VIN RES BS2 4 JELCSOPORT: SOROS TAP PORT0 PORT1 P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 JP1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 10*2 BERG
Vdd

PIC16C62X FESZLTSG FIGYELS TLTS + ENGEDLYEZS TLT I/O TLTS FIGYELS

Tlthet telep

L O A D

V REF

Alkalmazs: akkutlt

Kontrollerek alkalmazstechnikja

PIC16/17 mikrokontrollerek
Hardver ttekints
Harvard architektra, kln program s adatmemria Kis ramfelvtel (15 mA tipikusan 3V, 32 KHz-nl) Teljes statikus kialakts Kisfogyaszts SLEEP (szundi) zemmd (< 1 mA 3V-nl) Minden utasts egyszavas Minden utasts (kivve az ugrsok) egy ciklus Watchdog idzt bels RC oszcilltorral Kdvdelem A digitlis I/O vonalak nagy meghajt/nyel rama (25 mA) Beptett reszet, feszltsgcskkens figyel (brown-out) PERIFRIK
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Dul 10-bit / 20 KHz, 8-bit / 80 KHz PWM 8-bites max 8 csatorns, 26 msec konverzis idej SAR A/D 16-bites 16 csatorns integrl A/D Dul 5 mV-os ofszet kompartor 8-bites DAC Bels hmrsklet rzkel Bels feszltsg referencia Bels oszcilltor 116 pixeles 32 X 4 multiplexelt LCD meghajt 8/9-bites soros USART Telepes ra Dul 16-bites 200 nsec-os capture regiszter Dul 16-bites 200 nsec-os kompartor kimenet SPI / I2C busz illeszts Prhuzamos slave port 64 bjtos EEPROM adatmemria
Kontrollerek alkalmazstechnikja

MPLAB fejleszt rendszer

Compile Assemble MPASM / MP-C

Simulate MPLAB-Sim

2 1
Edit Project MPLAB

3
Program PRO MATE PICSTART

Emulate PICMASTER

Fejleszts lpsei
o o o

Hardver s szoftver tervezs Programrs (editls) (forrskd ksztse) Gpi kd (trgykd) ellltsa assembler, compiler program jsgnak ellenrzse szimultor (program) emultor (hardver) programoz

Kontrollerek alkalmazstechnikja

MPASM univerzlis assembler


Jellemzi
l l l

l l l l

Univerzlis assembler minden PIC16/17 tpushoz Windows alatt futtathat Makrzsi lehetsg l Sztring helyettest makr (C stlus #define) l Kd makr Feltteles assemblls Include fjlok hasznlata C stlus kifejezs kezels Tbb szabvnyos Intel hex formtum generlsa

Fjlok ltrehozsa
o

o o o

Automatikus assemblls a MAKE projekt mdszerrel (MPLAB) Gpi kd generlsa a programozk s emultorok szmra A bemenet: *.ASM forrsfjl A kimenet: *.HEX fjl (programoz, emultor, szimultor szmra) *.LST fjl listhoz *.ERR hibafjl *.COD fjl a szimultor, emultor szimblumokhoz
Kontrollerek alkalmazstechnikja

MPASM univerzlis assembler


List Direktvk
Minden parancssorban megadhat direktva az .ASM fjl LIST kulcsszava utn is megadhat Szintakszis: LIST <OPTION>=<VALUE>, .... Opci P E L M C Q R X F Default rtk Nincs ON ON ON ON OFF HEX OFF Lers

Processzor tpus-Megadni ktelez! 16C54, 17C42, etc.. Eng./Tilts Hiba fjl generls Eng./Tilts Lista fjl generls Eng./Tilts Makr kiterjeszts Eng./Tilts Kis/nagybet megklnb. Eng./Tilts hibazenetek kijelzse Radix definilsa (HEX,DEC,OCT)

Eng./Tilts keresztreferencia fjl generls INHX8M HEX output fjl formtum INHX8M hasznlt a MCHIP-nl
LIST P=16C74 .... END

Plda:

Megj.: Processzor P=<proc> mindig az els sor END mindig az utols sor
Kontrollerek alkalmazstechnikja

MPASM univerzlis assembler


Include direktva
t

Specilis funkcju regisztereket, (STATUS, PORTok, stb.) a Processor Definition include fjlokban kell megadni, pl.: P16C74A.INC t P17C44.INC A felhasznli knyvtrak, szubrutinok szintn include fjlba helyezhetk Assembler az include fjlokat gy kezeli, mint forrskdot Szintaktika: t #include <path><FILENAME.INC> t #include C:\MPLAB\P16C74.INC A proceszort az #include eltt kell definilni
t

t t t

ORG, CBLOCK, EQU direktvk


ORG: Belltja a program kezdcmt
ORG 0x04 ; a kvetekez utasts 4H cmen lesz

EQU: rtkhez szimblumot rendel, adatmemria cmek helyett szimblumok hasznlhatk


COUNT EQU 0x020 ; COUNT hasznlhat 20H cm regiszter helyett 0x021 ; INPULSES hasznlhat 21H cm reg. helyett INPULSES EQU

CBLOCK: Szimblumtmbt definil, jl hasznlhat regiszterek megadsra


CBLOCK 0x20 COUNT INPULSES ENDC ; A definci a 20H cm regiszternl kezddik ; COUNT a 20H cim fjlregisztert hasznlja ; INPULSES pedig a 21H-t
Kontrollerek alkalmazstechnikja

MPASM univerzlis assembler


Konfigurcis bitek direktva
Oszcilltor tpus, kdvdelem, WDT belltsa __CONFIG direktva lltja be a biteket, mikor Processzor definci-t pl. P16C74.INC hasznljuk Csak az eszkzben megtallhat bitek definilsa A konfigurcis bitek kztt a & karaktert kell hasznlni Pldul: PIC16C54 - XT oszcilltor, WDT off, CP on, IDLOCS = 1234
#include P16C5X.INC __CONFIG _XT_OSC & _WDT_OFF & _CP_ON __IDLOCS 1234

Pldaprogram: ADVGENIC.ASM

Szveg trolsa
Az alkalmazsokban sokszor kell szvegeket megjelenteni A szvegeket RETLW utastsokat tartalmaz tblzatokban troljuk DT direktva (define table) minden szvegkarakter el teszi a RETLW utastst: DT Hello ; Hello szveg trolsa Ami azonos a kvetkezvel: RETLWH RETLWe RETLWl RETLWl RETLWo
Kontrollerek alkalmazstechnikja

MPASM univerzlis assembler


MACRO, ENDM direktvk
6 6

6
l

Felhasznl ltal definilt utasts sorozat forrsszvegbe illesztse Makrk elnyei: 6 Gyakran hasznlt megoldsok kvetkezetes alkalmazsa 6 A forrskd egyszerbb mdosthatsga 6 Knyebb tesztelhetsg Hasznlat eltt kell definilni !!!
Szintakszis: Definci: <macro_name> Hasznlat: <macro_name> Pl.: MACRO ... ENDM [<arg1>, ... ,<argn>]

[<arg1>, ... , <argn>]

LEDon MACRO ; ledon makr megadsa BSF PORTA,1 ; LED vilgt ENDM .... LEDon ; LED be, makrhvs

Feltteles assemblls
A forrskd feltteltl fggen fordthat Modulris programrst tesz lehetv Szimultoros hibakeress IF - Ezzel kezddika feltteles blokk Szintakszis: IF <expr> ENDIF - a feltteles blokk vge ENDIF Kontrollerek alkalmazstechnikja

MPLAB-SIM
o o o o o o o o

Univerzlis szimultor PIC16/17 csaldhoz PC Windows s MPLAB-kompatibilis Diszkrt esemny, utasts alap szimulci Teljes forrsszint hibakeress (debugging) Korltok nlkli sszetett trspontok Megszakts s perifriamkds szimulcija (A/D s soros I/O nem!) Stimulus fjlok A DOS alap MPSIM-et helyettesti

Stimulus Fjl
6 6 6 6 6

Stimulus fjlban adhat meg brmelyik bemenet adott idpontba trtn gerjesztse Utasts szinten szimullja a lb bemeneti feltteleit MPLAB-ban <FILENAME>.STI fjl szerkesztse Meg kell adni a portot, idt, llapotot Szintakszis: 6 STEP <PORT#> <PORT#> 6 <TIME> <VALUE> <VALUE>

Pldul:
RA0 0 1 RA1 1 1 ! Portdefinils ! 3. lpsnl, RA0=0, RA1=1 ! 12. lpsnl, RA0=1, RA1=1

STEP 3 12

Kontrollerek alkalmazstechnikja

MPLAB-SIM
Billenty s idpont bemeneti gerjeszts
t

Aszinkron, billenty megnyomshoz rendelt bemenet t Funkcibillenty I/O lb llapothoz rendelse t Mikor a Stimulus Dialog dobozban egy gombot megnyomunk, az I/O lb llapotot vlt, az llapotok: t High - magas t Low - alacsony t Pulse - impulzus t Toggle - ellenttre vlt Szinkron ismtld rajel esemny bemenet t I/O lbhoz ra rendelhet t Frekvencija, peridusideje vlaszthat

llapotvlts regiszter fjllal


t t t

Register Stimulus j regiszterrtket tlt a regiszterekbe, mikor egy adott cmet elrtnk Perifriamodulok szimullsakor hasznos Pl. az A/D talakts eredmnyt tartalmaz ADRES reigszter tartalmt egy fjlbl tltjk, mikor kiolvassuk a tartalmt

Pldaprogram: ADVAL.INJ: 0x16 Els hvskor 16 HEX-et tlt 0x84 Msodikra 84 HEX ... stb.
t
Kontrollerek alkalmazstechnikja

MPLAB-SIM
Trace (nyomkvets) fjl

A nyomkvets sorn fjlban trolhatjuk el az utastsokat s a regiszterek llapott A fjlt a szimultor hozza ltre s tbbek kztt tartalmazza: Lpsszm A stopper ltal mutatott idpontot Megvltozott regiszter rtkeket

A nyomkvets adatai a kpernyn fognak megjelenni s egy generlt ASCII szvegfjlba kerlnek Pldaprogram: ADVSTIM.ASM

Kontrollerek alkalmazstechnikja

Programozs
Architektra

A nagy teljestmny okai: t Harvard architektra t Minden utasts egyszavas (Long t word)
t

Szoftver architektra:
t t t

Egyciklusos utastsok Utasts vonal (pipelining ) Reduklt utastskszlet

Program memrai lapozsa (paging) nagy programoknl Fjlregiszter bankvlts (banking) nagy SRAM esetn Ugr utastsok 2 ciklus hosszak

Mveleti kd s operandus egy program-szban Programsz hossza tpusfgg: 16C5XX = 12 bit, 16CXXX = 14 bit, 17CXXX = 16 bit

Bennfoglalt utastsra plda: MOVLW #imm<8> 1100XX imm<8> Kzvetlen cmzsre plda: MOVWF #faddr<7> 0000001 faddr<7> Programvezrl utastsra plda: GOTO #location<11> 101 location<11>
Kontrollerek alkalmazstechnikja

Programozs
Lap / Bank hatrok
PIC16/17 Family Word Code Page Current Size Boundary Max code (Bits) (Words) Size (Words) Register Bank Boundary (Bytes) Current Max RAM Size (Bytes)

16C5XX 16CXXX 17CXXX

12 14 16

512 2048 8192

2K 4K 8K

32 128 256

73 192 454

Program memria lapozs (Paging)


o o o o o

A lapoz bitek rtke hatrozza meg az aktv lapot A lapozsra CSAK akkor kell figyelni, ha CALL vagy GOTO utastst hajtunk vgre A lapoz biteket CSAK akkor kell mdostanai, ha ms lapra ugrunk Lap bitek definiljk az aktulis lapot Utastsok, amelyeknl a lapoz bitekre tekintettel kell lenni: o GOTO <address (0...8 bit) > o CALL <address (PC8=0)> o <Utasts> PCL,F ; e.g. ADDWF PCL,F (PC8=0) Verembe csak PC als 8 bitje kerl
Kontrollerek alkalmazstechnikja

Programozs
ADDWF PCL cmzs
t

ADDWF PCL F nyolc bites (256 szavas) cmtartomnyt fog t, s mivel PC8=0, ezrt csak a program memria lapok els 256 szavas rszre hivatkozhatunk PIC16C5XX-nl PA0, PA1 hatrozza meg az aktulis lapot, de CALL s szmtott PC esetn: t PC 8- bitje trldik t A clcm a lap els 256 cme lehet
t

PIC16CXXX/17CXXX-nl, PCLATH hasznlhat a fels cmekre t Clcm akrhol lehet t Olyan tblknl amelyek tlpik a 256 szavas laphatrt PCLATH-ot lltani kell

Kontrollerek alkalmazstechnikja

Programozs
PIC16CXXX Program-memria trkp

PCLATH<4:3>=00
RESET

PCLATH<4:3>=10

0 4

1000h
l

INTERRUPT

Page 0

Page 2
l

7FFh

17FFh l
l

PCLATH<4:3>=01 PCLATH<4:3>=11

800h

1800h
l

Maximum 8K sz (13 bit) program memria. Jelenlegi tpusok kapactsa: 4K 4 darab 2K szavas lap (11 bit) Lap vlts: PCLATH<4:3> Reset vektor: 0000h Megszakts vektor: 0004h

Page 1 FFFh

Page 3

1FFFh

Pldaprogram: ADVPAGE.ASM
Kontrollerek alkalmazstechnikja

Programozs
Adatmemria lapjai: a bankok

t t

RP1,0 Opkdbl

87 6

Bank Select 00 01 10 11 0

4 darab 128 bjtos adatmemria bank Specilis Funkciju Regiszterek (SFR) ebben a RAM-ban vannak Bankok kivlasztsa a Sttusz Regiszter RP0 s RP1 bitjeivel trtnik

Bank Bank Bank Bank 1 3 2 0

Cm vlaszts

7F

Kontrollerek alkalmazstechnikja

Programozs
Kzvetett memria bank kezels

Indirekt cmzs
IRP
INDF 8 7 0

FSR-bl

Az indirekt cmzend bankot a Status regiszter IRP bitje hatrozza meg Az INDF regiszterrel vgzett mveleteket az FSR regiszter ltal mutatott adatokkal hajtjuk vgre

Bank Select
0 1

Bank 0&1

Bank 2&3

kivlasztott cm

7F

Pldaprogram:ADVBANK.ASM
Kontrollerek alkalmazstechnikja

Programozs
t t

RAM kioszts (Allokci) A kzvetlenl cmzett regisztereket a 0-s Bankban clszer tartani Adatstruktrkat, szoftver vermet, s ms kzvetetten (FSR-en) keresztl cmzett regisztereket az 1-es Bank-ba clszer trolni Ms tovbbi bankvlts nem szksges (kivve a perifrik inicializlst)
; Bank 1 Indirekt regiszterek SWSTACKSTART EQU 0xA0

; Bank 0 Direkt regiszterek CBLOCK 0x20 COUNTLO COUNTHI SWSTACKPTR ... ENDC

t t

Plda szoftver veremre Bejv, vagy kimen adatok trolsra hasznlhat Ltrehozhat egy szoftver stack adat struktra
SWSTACKSTART ; SW verem kezdcm W-be FSR ; FSR regiszter inicializlsa

initswstack MOVLW MOVWF ....... pushswstack MOVWF INCF RETURN ....... popswstack DECF MOVF RETURN

INDF FSR ,F

; adat az SW verembe (Push) ; FIFO mutat nvelse ; PUSH vge

FSR,F INDF,W

; SW verem mutat cskkent. ; Adat W-be ; POP vge


Kontrollerek alkalmazstechnikja

Programozs
PIC16CXXX Tbla kezels Tblk az ADDWF PCL and RETLW utastsokkal kezelhetk
ORG MOVF CALL ... ORG Table ADDWF DT ABCD TableEnd
t t t

0x10 offset,W Table 0x20 PCL,F ; Page 0

; Page 0 ; w = ofszet (eltols)

; Page 0 ; hely=Tbla kcim + ofszet ; RETLW sorozat def.

Ugrtblk
Klnfle bemen feltteltl fgg rutinra val ugrsra hasznlhat Hasonl az elbbi tblhoz GOTO utasts van a CALL s RETLW helyett Hasznlatval a veremszintek szma cskkenthet
NEXT_STATE,W jump_table ; PC fels felt inicializni kell state0_routine state1_routine state2_routine

MOVF GOTO ... jump_table ADDWF PCL, F GOTO GOTO GOTO

Szablyok:
t

PCL-t az ADDWF PCL utastssal mdostjuk t ADDWF PCL eredmnye nem lpheti t a 8-bites cmhatrt (lapok miatt!) t PIC16C5XX - PA0 s PA1 inicializland t PIC16CXXX - PCLATH inicializland t PIC17CXXX - PCLATH inicializlhat a MOVFP PCL,PCL utastssal

Plda: ADVJUMP.ASM

Kontrollerek alkalmazstechnikja

Programozs
CCP PWM md
Period Period
l

D.C.

D.C.

Utl=U*(D.C./Period)

A peridus vgn a kimenet magas lesz A kitltsi ciklus (Duty Cycle (D.C.)) vgn a kimenet alacsony szint lesz A peridus vgn egy j kitltsi tnyez tlthet

Pdaprogram: ADVPWM.ASM

PWM mint D/A talakt


R PIC16 CXXX C

Vout

Vout fJEL
Frekvencia

org CLRF MOVF CALL MOVWF GOTO OutputVoltage ADDWF RETLW RETLW RETLW RETLW RETLW

0x10 PCLATH Vout,W OutputVoltage CCPR1L Continue PCL,F 0x00 ; Vss 0x3F ; (Vdd*255) / 64 0x7F ; (Vdd*255) / 127 0xBF ; (Vdd*255) / 191 0xFF ; Vdd

fPWM
Kontrollerek alkalmazstechnikja

Programozs
Paramter tads
Szubrutinoknl szksges a vltozk rtkeinek az tadsa l Matematikai rutinoknl, pl. szorzs s oszts l Soros ad s vev rutinoknl pl. PUTCHAR vagy GETCHAR l Globlis vltozk l Kzvetlen cmzs regiszterek hasznlata l A legjobb nhny paramter esetn l W regiszter l Egy paramter tadshoz a W-t hasznljuk
l

l l

A paramtert W-be tesszk Meghvjuk a szubrutint. PLDA:


MOVLW CALL M putchar ; ASCII M karakter W-be ; Karaktert a kijelzre

FSR - sszetett adatstruktrkhoz l Nagyszm paramter esetn l Csak a kezdcmet kell tadni l FSR hasznlhat az els adatelemre mutatnak. Plda:
CLK_MIN_LD CLK_MIN_HD CLK_HOUR_LD CLK_HOUR_HD EQU EQU EQU EQU 0x0C 0x0D 0x0E 0x0F ALM_MIN_LD ALM_MIN_HD ALM_HOUR_LD ALM_HOUR_HD EQU EQU EQU EQU 0x10 0x11 0x12 0x13

MOVLW MOVWF CALL MOVLW MOVWF CALL

CLK_MIN_LD FSR inc_time ALM_MIN_LD FSR inc_time

Kontrollerek alkalmazstechnikja

Programozs
PIC16CXXX megszaktsok
t t t t t t t

Tbb bels s kls megszakts forrs A megszaktsoknak csak egy vektorcme van (04h) A priorits s azonosts programbl lehetsges Globlis s egyedi megszakts engedlyezs Tbb megszakts a processzort a szundi (sleep mdbl breszti Megszakts felismers 3 utastsciklus, illetve 4 ciklus kls megszaktsoknl A megszakts kiszolglsakor fontos megrizni a STATUS a W regiszter (valamint PCLATH regiszter ha 4K-s vagy nagyobb memrij tokot hasznlunk) tartalmt.

Rutinok a push (ments) s pop(visszatltsre):


tempW equ 0x20 ;W mentse bank 0 & 1-be tempStatus equ 0x21 ;STATUS mentse bank 0-ba tempPclath equ 0x22 ;PCLATH mentse bank 0-ba ORG 0x04 movwf tempW swapf STATUS,W bcf STATUS,RP0 movwf tempStatus movf PCLATH,W movwf tempPclath bcf PCLATH,3 pop movf movwf bcf swapf movwf swapf swapf retfie tempPclath,W PCLATH STATUS,RP0 tempStatus,W STATUS tempW,F tempW,W

(16c74) push

Kontrollerek alkalmazstechnikja

Programozs
Megszaktsok sszhasonltsa
PIC16CXXX @ 12MHz 1 vagy 2 ciklus utastsok ut.cikl = rajel / 4 ; sz / cikl Int_Srv ;0/3 MOVWF tempW ;1/1 SWAPF STATUS,W ; 1 / 1 BCF STATUS,RP0 ; 1 / 1 MOVWF tempStatus ; 1 / 1 ...
t t t t

MCS-8X51 @ 12 MHz
1...4 ciklus utastsok t ut.cikl = rajel / 12 Int_Srv PUSH PUSH MOV ...
t t t t t

; bjt / cikl ; 0 / 3 to 9 PSW ;2/2 ACC ;2/2 PSW,#08h ; 3 / 2

t t

4 sz a programmemriban Int ksl = 3 cikl = 1.0 s (latency is same for 1 or 2 cycle inst) Int adminisztr. = 4 cikl = 1.3 s Teljes id = 7 cikl = 2.3 s

7 bjt a programmemriban Int ksl (min) = 3 cikl = 3 s Int ksl (max) = 9 cikl = 9 s Int adminisztr = 6 cikl = 6 s Teljes id = 9 - 15 cikl.=9 - 15s

Tbbszrs megszaktsok kezelse


l

l l

l l l

Az egyes megszaktsforrsok engedlyezse/tiltsa az INTCON, PIE1 s PIE2 regiszterek segtsgvel lehetsges A megszaktsok globlis engedlyezse/tiltsa GIE bittel lehetsges A megszakts kiszolglsnak kezdetekor a hardver trli a GIE bitet s a visszatrsi cmet a verembe rakja A megszaktsi esemny az INTCON, PIR1 s PIR2 regiszterek bitjeit lltja be Ezeket programbl kell trlni! RETFIE utasts GIE-t 1 be lltja s verem tetejn lv cmet a PC-be tlti
Kontrollerek alkalmazstechnikja

Programozs
Taszk kezels
t t t

Szubrutinok adott idkznknti futtatsra hasznlhat Gyakran a TMR0 timert hasznljk temadknt Vagy a lekrdezses (polling) (PIC16C5XX) vagy megszaktsos (PIC16CXXX / PIC17CXXX) technikt lehet hasznlni

Taszk kezels lekrdezssel


t t t t

PIC16C5XX TMR0 regiszternek olvassa TMR0 aktulis s az elz rtknek az sszehasonltsa Annak meghatrozsa, hogy melyik bit vltozott A vltozott bit tesztelse alapjn a megfelel taszk (szubrutin) hvsa
TMR0,W PrevTMR0,W ChaTMR0 PrevTMR0,F ; TMR0 aktulis rtke W-be ; Nzzk melyik bit vltozott... ; Minden megvltozott bit ChaTMR0; Az aktulis lesz az elz rtk...

MOVF XORWF MOVWF ba XORWF

Pldaprogram: ADVPOLL.ASM

Kontrollerek alkalmazstechnikja

Programozs
Taszk kezels megszaktssal
t t t t

t t t t

TMR0 felhasznlsa periodikus megszaktsra A kvetkez taszk szmontartsa Az idszeletels felhasznlhat a soros kommunikcira, stb. Kt megvalstsi lehetsg: t Taszk mutat nvelse a megszaktsi programban (ISR-Interrupt Service Routine) t A taszk vgrehajtsa az ISR-ben VAGY: t Jelzbitek lltsa a taszkmutat alapjn t Egy f programbeli hurokban figyeljk a jelzbiteket s futtatjuk a taszkot ha kell Ha a timer megszakt, a taszkok az ISR-ben futnak Pontos s precz idztst biztost a vals idej taszkok szmra A megszaktsi rutin hossz lesz, ezrt rvid taszkok esetn elnys a hasznlata Plda: t TMR0 megszakt 4 msec-nt t Billentyzet figyelse 52 mse.-knt t Forgatsi taszk 1 mp-knt

Pldaprogram: ADVTASKI.ASM
Kontrollerek alkalmazstechnikja

Programozs
Adatbevitel az I/O forgatssal
t t t

Az adatbemenet az I/O portok LSB (bit 0) vagy az MSB (bit 7) kivezetse RRF utasts (LSB) vagy RLF utasts (MSB) a bemenet rtkt a carry-be tolja Ugyanezen RRF vagy RLF utastsok a biteket egy fjl regiszterbe toljk Adat be
RRF RRF PORTB,W ; RB0 bit Carrybe DReg,F ; Adatbit mentse DReg-be

RB0

Adatkivitel forgatssal
t t t t

Adatkimenet az I/O port LSB (bit 0) vagy MSB (bit 7) bitje A port tbbi bitje csak bemenet lehet !!! RRF vagy RLF -el a kimeneti bitet carry-be RRF ( MSB) vagy RLF (LSB) utastssal a carry-bl a kimenetre mozgatjuk a bitet
bemenetek

RB7 RB6 RB5 RB4 RB3 RB2 RB1

RRF RLF

DReg,F ; Kimeneti bit Carry-be PORTB,F ; Onnan a kimenetre

RB0

kimenet
Kontrollerek alkalmazstechnikja

Programozs
Soros adattvitel - UART-al
t t t t

A hatkony bitkezel s forgat utastsokkal egyszern valsthat meg a szoftver UART Fl duplex rutinok a biteket idztve toljk Az AD s VEV rutin sszesen csak 50 sz hosszsg! Az adatttviteli sebessg max. 115Kbit/sec lehet

Pldaprogram: ADVUART.ASM Soros adattvitel - SPI-vel


t t t

t t

Szmos perifriaramkr hasznlja a 4 vezetkes SPI szinkron soros protokollt A hatkony bitkezel s forgat utastsokkal egyszern valsthat meg a szoftver SPI A teljes duplex rutinban a kimeneti bitek egyszer kitolsval egyszerre trtnik a bemeneti bitek betolsa Az AD s VEV rutin sszesen csak 17 sz hosszsg! Az adatttviteli sebessg max. 373Kbit/sec lehet

Pldaprogram: ADVSPI.ASM
Kontrollerek alkalmazstechnikja

Programozs
Utastsszm cskkentse I.
l l

Egy utasts megtakarthat kt egymsutni NOP esetn GOTO kvetkez utasts-t hasznljuk NOP GOTO $+1 NOP 2 utasts, 2 ciklus 1 utasts, 2 ciklus A clbit meghatrozza, hogy az eredmny a W vagy az F(jl) regiszterbe kerljn Clszer az adatmozgatst tgondolni

t t

Plda: A + B -> A
MOVF ADDWF MOVWF 3 utasts A,W B,W A MOVF ADDWF 2 utasts B,W A,F

Egy bit tvitel kt regiszter kztt (REGA-bl REGB-be) REGB bit elzetes belltsa REGA bit-je tesztelse alapjn a bitet esetleg megvltoztatjuk Portok esetn, kt ciklus hosszsg vlts (glitch) lehetsges!!! BTFSS BCF BTFSC BSF 4 utasts REGA,2 REGB,5 REGA,2 REGB,5 BCF BTFSC BSF REGB,5 REGA,2 REGB,5

3 utasts
Kontrollerek alkalmazstechnikja

Programozs
Utastsszm cskkentse II.
t t

A kimeneti bit lltsa egyforma ideig tartson (szinkronizls), ha ez fontos LSB vagy MSB esetn a ROTATE utasts hasznlhat
BTFSC GOTO NOP BCF GOTO OutBit,0 kim1 PORTA,1 kimkesz PORTA,1 kimkesz ; tlps ha kimenet nulla ; Ugrs 1-be lltsra ; Egy cikl. ksl. a szink. miatt ; Kimeneti bit trlse ; vgre ugrs ; kimeneti bit 1 ; Vgrehajtsi id szink. miatt

kim1 BSF GOTO kimkesz


l l

Regiszterek hasonltsa A kt folytats egy GOTO-val


MOVF XORWF BTFSS GOTO REGB,W ;W tartalma REGB-be REGA,W ; REGA & REGB hasonltsa STATUS,Z ; tlp ha REGA=REGB NotEqual ; Ugrik ha nem egyenl

Equal

.
. NotEqual . .

Tovbbi tletek a programok tanulmnyozsa alapjn!


Kontrollerek alkalmazstechnikja

Bombabiztos tervezs
Watchdog hardver
"CLRWDT" Reset

RC oszcill.

8-bites szmll

Utoszt

Tlcsorduls reszeteli a tokot

t t t t t t t t

Programeltrls esetn segthet Sajt bels RC oszcilltort hasznl WDT programbl nem tlthat! WDT tlcsordulsa reszeteli a tokot CLRWDT utasts trli WDT-t Programozhat time-out peridus: 18 ms-tl 2.5 msodpercig SLEEP zemmdban is mkdik Tlcsordulskor a CPU felbred

Watchdog szoftver
t t t t t

A watchdog hatkonysga fgg a felhasznli program jl megrtsgtl Az egsz programban csak egy CLRWDT utastst hasznljunk! A CLRWDT utastst a fhurokba tegyk Ne tegyk a CLRWDT-t ISR( megszaktsi) vagy egyb szubrutinba Olyan minimlis WDT tlcsordulsi idt vlasszunk, amit a f hurok vgrehajtsi ideje megenged A nem hasznlt memrt tltsk fel a GOTO wdtreset utasts kdjval
Kontrollerek alkalmazstechnikja

Bombabiztos tervezs
Nem hasznlt memria feltltse
n

A nem hasznlt memrt tltsk fel a GOTO wdtreset utasts kdjval, ami norml esetben soha nem kerl vgrehajtsra Ha a PC rtke elromlik, akkor valsznleg ez az utasts vgrehajtdik, s jra indtja a kontrollert FILL direktva hasznlhat a feltltsre: FILL (GOTO wdtreset), (400h-$) ORG 3FFh wdtreset

WDT reset trlse


n

Bekapcsolskor a WDT vgrehajtatsa: n a RAM memria minta ellenrzse tpfesz. bekapcsolskor n Ha a minta nincs a RAM-ban: n RAM minta feltltse n WDT reset vgrehajtsa

Szubrutin szmlls
n n n n

Kt szmll: szubrutin hv s vgrehajt szmll Hv szmll inkrementlsa minden rutinhvskor Vgrehajt szmll inkrementlsa minden szubrutin kezdetn A f hurok elejn a kt szmll egyezsgnek a vizsglata, ha nem egyformk, akkor WDT reset Pldaprogram: ADVRELSW.ASM Kontrollerek alkalmazstechnikja

EGY LES FELADAT - DEFINILS


DIESEL AUTKNL A MOTOR TLPRGETSE KROS A MOTORRA. A FELADAT EGY OLYAN FORDULATSZM MR KSZTSE, AMELY 1000-5000 FORD/PERC KZTT 500-AS LPSENKNT EGY LED KIGYUJTSVAL JELZI AZ AKTULIS FORDULATSZMOT. 4000-ES FORDULAT TLLPSE ESETN A MEGFELEL LEDEKET BEKAPCSOLVA GVE HAGYJA, JELEZVE A TLLPST. AZ GY KIGYJTOTT LEDEK TRLSE CSAK EGY SPECILIS ELEKTRONIKUS KULCCSAL LEHETSGES. (Tpfesz. kikapcsolsa utn is megrzi az llapott!)
A KULCS ZLD SRGA PIROS 4000 4500 5000

1000 1500 2000 2500 3000 3500

KIMENETEK SZMA: 9 LED + 2 KULCS BEMENETEK SZMA: 1 FORD.SZM IMPULZUS, 1 KULCS BEM. EEPROM KELL A TLLPS TROLSA MIATT

13 I/0 + EEPROM => PIC16C84


VCC 5. LAB = GND 14. LAB = VCC U1 RA0 17 RA1 18 MCLR RA2 1 RA3 2 RA4 3 RB0 6 RB1 7 RB2 8 OSC1 RB3 9 RB4 10 OSC2 RB5 11 RB6 12 RB7 13 PIC16C84 VCC imp. be kodbe kodaki kodbki R1 470 R2 470 R3 470 R4 470 R5 +12V IC1 7812 C2 C VCC C1 C 470 R6 470 R7 470 R8 470 R9 470 D1 D2 D3 D4 D5 D6 D7 D8 D9 B 4 A 1 2 7400 U2A 3 9 10 7400 5 7400 U2C 8 TRL KULCS U2B 6 12 13 7400 U2D 11 VCC R10

REZONATOR

16 15

A+B

4 MHz

Kontrollerek alkalmazstechnikja

EGY LES FELADAT - TERVEZS


MILYEN RSZFELADATOKAT KELL MEGOLDANI: ZEMKPESSG ELLENRZSE FORDULATSZM MRS MRT ADATOK ALAPJN LED KIJELZS TLLPS TROLSA S KIJELZSE TLLPS TRLSE KULCCSAL
PORTOK BELLTSA SSZES LED KIGYUJTSA EGYENKNT EEPROMBL RAM-BA RS

INICIALIZLS

FORDULATSZM MRS MRS ALAPJN KIJELZS I KDSOROZAT KI-BE N TRLS ? N

OK ? I TRLS

EEPROM KEZELSRE VIGYZNI !!!


N

>4000 ? I I RAM-BAN ? N RAM TROLBA RNI EEPROM-BA RNI

NEM RAM !!!

LFIGYELS
T JEL ELBB (rgi) JEL (j) rgi XOR j POZITIV L NEGATV L (rgi XOR j) AND j

figyel

mov and mov mov nop nop mov and mov xor jz

w,ra w,#01 uj,w regi,uj

;ra.0.bitje a JEL ;els minta ;uj := regi

elvar

w,ra w,#01 uj,w w,regi elvar

;0.bit a fordszm

;regi=uj, nincs vlts

valtas and jz w,uj ;lvlts j? elvar ;nem ;L FELDOLGOZSA


Kontrollerek alkalmazstechnikja

EGY LES FELADAT


FORDULATONKNT EGY IMPULZUS fordulatszm peridusid *4 fszam 3sec alatt (ford/perc) (msec) sec-knt ------------------------------------------------------------------------------------------500 120 480 8.3 25 ------------------------------------------------------------------------------------------1000 60 240 16.6 50 1500 40 160 24.9 75 2000 30 120 33.3 100 2500 24 92 41.7 125 3000 20 80 50 150 3500 17.1 69 58.3 175 4000 15 60 66.7 200 4500 13.3 53 75 225 5000 12 48 83.3 250 --------------------------------------------------------------------------------------------HA PERDUSIDT MRNK, AKKOR: A mrst rdemes 0.25 msec-os megszaktssal vgezni (=4kHz) Nem lineris! (1/x fggvny) HA IDEGYSG ALATT BEJV IMPULZUSSZMOT MRNK, AKKOR: jobb a 3 mp alatti fordulatszmot mrni, vagy 3 impulzus/fordulat ez lineris !!! INT_SERVICE RTCCPOL CALL SISWS BTFSS INTCON,2 GOTO EX67 MOVLW 218 MOVWF RTCC BCF INTCON,2 setb kodaki clrb kodaki setb kodaki ;"PUSH" W AND STATUS REGISTERS ;RTCC INTERRUPT? ;IF NOT, (FALSE INTERRUPT?) EXIT ;INNEN INDUL A SZMLL ;CLEAR RTCC INTERRUPT FLAG ;hogy lssuk az it-t

RTCCSER INCF INT_COUNT,1 MOVLW 100 SUBWF INT_COUNT,0 BTFSS STATUS,2 ELTELT? GOTO CLRF dec EX67 CALL SIRWS RETFIE ;"POP" W AND STATUS REGISTERS ;ENABLE GLOBAL INT AND RETURN Kontrollerek alkalmazstechnikja EX67 INT_COUNT sec ;IF NOT, EXIT ;IF YES, CLEAR INT_COUNT ;10 Hz INT RATE

;ZERO_FLAG 1 SEC.

You might also like