Professional Documents
Culture Documents
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
SPI
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
Oscilltor kivlszts
2
Utasts dekdol
8
6 Kzvetlen cm
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 TRISA
RA0-RA3
f5
4
TRISB
RB0-RB7
f6
8
PIC16C56 FELPTSE
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
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
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
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
PIC
OSC1
fosc/4
PIC
OSC1
Kls rajel
PIC
OSC1
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
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
C P U
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
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
Mirt j?
A07-A00
8 000
RETLW
STACK1
RETLW
STACK2
Els lap
0.5K
1K
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.
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
* Az ALU-n keresztl
-a fjl regiszterekbl -a fjl regiszterekhez
(BANK 0) 1F
RAM FELPTSE
Kontrollerek alkalmazstechnikja
UTASTSKSZLET
Utastsok kzvetlen cmzssel
d 1 cl
x x
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
PC k0 k1
; ; ;
kn
A tbla vge
Kontrollerek alkalmazstechnikja
Utasitskszlet - sszefoglal
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
Indirekt cmre hivatkozsnl hasznlt Idzt/szmll regiszter Utastsszmll Program sttusz regiszter Indirekt cmet tartalmaz A port B port C port (ha van)
ALU
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
PIC PERIFRIK
I/O PORT FELPTSE
VDD Q1 Adatbuszrl D Q Adat latch CK Q P
rs
Az adatbuszhoz
I/O lb
- I/O - RTCC - A/D - soros I/O - PWM - capture/ compare - prh.( slave) port - idztk
Adat Busz
RTCC (8)
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
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
; ; ; ; 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
WDT egedlyezs/tiltsa a programozhat biztostkkal (WDT_ON/OFF) Egyszer 8 bites szmll Mivel sajt bels RC oszcilltor mkdteti, ezrt kristlyhibt is jelez
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
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
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
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
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
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 !!!
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 Nem kivnt harmonikusok Fpwm
Kontrollerek alkalmazstechnikja
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>
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
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
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
S START
SCL S
8 MASTER ADJA
9 ACK
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
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
OERR
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 HARDVER KIALAKITSA
PROGRAMTERVEZS KDOLS
VGE
A RENDSZERFEJLESZTS BLOKKVZLATA
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
*.ASM
MPASM
Assemblls
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
88:88
I/O
Beacon
Freq I/O
Piezo
I/O I/O
Alarm RF Comms to all peripheral devices Pulse RF via addressable XMT/ protocol RCV
BASIC STAMP I.
Serial EEPROM
Vcc 4.7K
CS CLK DI DO
1 2 3 PC fel
93LCXX
1 2 3
18
93LC56 4.7K
PIC16CXX 93LCXX EEPROM 3-vezetkes interfsz 16K-64k bites EEPROM Egyszer szofver 20 kdsor
4 5 6 7 8 9
MCLR Vss
+5V
I/O PORT-ok
Kontrollerek alkalmazstechnikja
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
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
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
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
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
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
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>]
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
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
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)
12 14 16
2K 4K 8K
32 128 256
73 192 454
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
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
FSR,F INDF,W
Programozs
PIC16CXXX Tbla kezels Tblk az ADDWF PCL and RETLW utastsokkal kezelhetk
ORG MOVF CALL ... ORG Table ADDWF DT ABCD TableEnd
t t t
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
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
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
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
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.
(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
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
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
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...
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
RRF RLF
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
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
Equal
.
. NotEqual . .
Bombabiztos tervezs
Watchdog hardver
"CLRWDT" Reset
RC oszcill.
8-bites szmll
Utoszt
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
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.ASMalkalmazstechnikja Kontrollerek
KIMENETEK SZMA: 9 LED + 2 KULCS BEMENETEK SZMA: 1 FORD.SZM IMPULZUS, 1 KULCS BEM. EEPROM KELL A TLLPS TROLSA MIATT
REZONATOR
16 15
A+B
4 MHz
Kontrollerek alkalmazstechnikja
INICIALIZLS
OK ? I TRLS
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
elvar
;0.bit a fordszm
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.