Instruktur : Ferry Wahyu Wibowo, S.Si.,...
Transcript of Instruktur : Ferry Wahyu Wibowo, S.Si.,...
Timer 1
Timer 2
Capture/Compare/PWM
Pulse Width Modulation (PWM)
Digital to Analog Conversion (DAC)
Rangkuman
2
Perawatan fungsi pencacahan berkesinambungan
Perekaman (‘capturing’) dalam pewaktu hardware
Mentrigger event pada suatu waktu
Membangkitkan waktu secara berulang
Mengukur frekuensi, misal kecepatan motor
3
Piranti Pin Fitur
16F84A 18 1 8-bit timer1 5-bit port1 8-bit port
16F873A16F876A
28 3 port paralel,3 timer/counter,2 capture/compare/PWM,2 serial, 5 10-bit ADC, 2 komparator
16F874A16F877A
40 5 port paralel,3 timer/counter,2 capture/compare/PWM,2 serial, 8 10-bit ADC, 2 komparator
4
T0CS: memilih sumber clock
T0SE: memilih source edge
PSA: Prescaler assignment bit
PS2:PS0: Prescaler rate select
7
T1CKPS1:T1CKPS0: Input Clock Prescale Select, 1:1-1:8
T1OSCEN: Oscillator Enable Control
T1SYNC’: External Clock Input Synchronization Control
TMR1CS: Clock Source Select
TMR1ON: Timer1 On
10
Timer 0 dan 1 digunakan untuk mencacahpulsa yang dibangkitkan oleh sensor optikpada poros enkoder.
Program mengendalikan Derbot maju selama1m. Lalu, berputar 180◦ pada titik danberjalan maju selama 1m lagi. Program me-loop secara simultan.
11
;Inisialisasi
movlw B'01000100' ;set port A ke kanan
movwf adcon1 ;analog/digital campuran
movlw B'11101000' ;T0: masukan eksternal,
movwf option_reg ;rendah ke transisi tinggi,
;tidak ada prescale
movlw B'00000011' ;T1: tidak ada prescale,
movwf t1con ;oscillator disabled,
;masukan sync eksternal
13
opto_move
clrf tmr0 ;clear timer
clrf tmr1l
clrf tmr1h
clrf flags
btfss portc,0 ;increment T1 jika ip nol,
incf tmr1l ;sebagai rising edge pertama
;tidak dideteksi
call leftmot_fwd ;motor mulai berjalan
call rtmot_fwd
14
counter pertamakali harus falling edge sebelummulai mencacah.
opto_loop
movlw D'91' ;uji selama 1m
subwf tmr0,0
btfsc status,z
bcf porta,mot_en_left ;disable motor jika =
movlw D'91'
subwf tmr1l,0
btfsc status,z
bcf porta,mot_en_rt ;disable motor jika =
…
goto opto_loop
15
Jika frekuensi osilator 4MHz, nilai ‘clock tick’ yang lebih lamban dapat diperoleh dari Timer 0 dan Timer 1?
T0: nilai interupsi lebih lamban denganprescaler ÷256.
Frekuensi masukan ke T0 adalah 1 MHz/256, atau 3,906 kHz.
Timer 8-bit membagi frekuensi dengan 256 untuk menghasilkan frekuensi clock tick, yang berupa 3,906 kHz/256, atau 15,26 Hz.
17
T1: nilai interupsi lebih lamban denganprescaler ÷8.
Frekuensi masukan ke T1 adalah 1 MHz/8, atau 125 kHz.
Timer 16-bit membagi frekuensi dengan 216
untuk menghasilkan frekuensi clock tick, yang akan berupa 125 kHz/ 216, atau 1,91 Hz.
18
Timer 2 Register8-bit register:
•TMR2 (11h)
Control Register:
•T2CON (12h)
•PR2 (92h), period register
20
TOUTPS3:TOUTPS0: Output Postscale Select, 1:1-1:16
TMR2ON: Timer 2 On
T2CKPS1:T2CKPS0: Clock Prescale Select, 1:1, 1:4, 1:16
21
Jika frekuensi osilator 4MHz, nilai ‘clock tick’ yang lebih lamban dapat diperoleh dari Timer 2?
Nilai interupsi lebih lamban dengan prescaler÷16 dan postscaler ÷16 .
Frekuensi masukan adalah 1 MHz/16, atau62.5 kHz.
Jika PR2 adalah preset ke 255, frekuensi dibagimenjadi 256 untuk menghasilkan frekuensireset, yang akan berupa 62,5 kHz/256, atau244,14 Hz.
Dengan postscaler 16, maka frekuensiinterupsi akan berupa 15,26 Hz.
23
2 modul CCP
Setiap modul CCP terdiri dari register 16-bit yang dapat beroperasi sebagai:1. 16-bit Capture register
2. 16-bit Compare register
3. Pulse width modulation Master/Slave Duty Cycle register
24
CCP Registers16-bit register:
•CCPR1L (15h)•CCPR1H (16h)•CCPR2L (1bh)•CCPR2H (1ch)
Control Register: •CCP1CON (17h)•CCP2CON (1dh)
25
30
Waktu konstan kecil
dibandingkan dengan waktu
‘on’.
Arus muncul dari 10
sampai 90% dari nilai
final dalam waktu
2.2L/R
31
Konstanta waktu lebih besar
dibandingkan dengan waktu
‘on’ , pulsa lebar
Konstanta waktu lebih
besar dibandingkan
dengan waktu ‘on’, pulsa
sempit.
Mode PWMCatatan : Timer 8-bit dikonkat
dengan 2-bit clock internal Q, atau2 bit dari prescaler, untuk
membuat dasar waktu 10-bit.
32
T = (PR2 + 1) × (periode clock masukan Timer 2)
= (PR2 + 1) × {Tosc × 4 × (Nilai prescale Timer 2)}
ton = (pulse width register) × (periode clock masukanPWM timer),
= (pulse width register) × {Tosc × (nilai prescaleTimer 2)}
pulse width register = CCPR1L | CCP1CON<5:4> + 1
34
PR2 dimuati dengan 249D. Frekuensi osilatorclock adalah 4 MHz. baik pre- atau postscale. Cari periode PWM.
T = (PR2 + 1) × {Tosc × 4 × (nilai prescaleTimer 2)}
= 250 × (250 ns × 4 × 1)
= 250 μs
sehingga frekuensi PWM = 4.00 kHz.
35
;set up PWM
movlw B'00000100' ;switch on Timer2,
movwf t2con ;tidak ada pre atau postscale
movlw B'00001100' ;enable PWM
movwf ccp1con
movwf ccp2con
movlw 0f9 ;249
movwf pr2
...
38
leftmot_fwd ;jalankan motor kiri maju
bsf porta,mot_en_left
movlw D'176'
movwf CCPR2L
return
leftmot_rev ;jalankan motor kiri mundur
bsf porta,mot_en_left
movlw D'80'
movwf CCPR2L
return
39
Menggunakan semua resource PWM atautidak ada pada mikrokontroler yang harganyamurah.
Keluaran PWM dapat dibangkitkan menurutloop tunda software saja.
Keluaran PWM dapat dibangkitkan padainterupsi timer.
40
clrf pointer
sin_loop
movf pointer,w
call sin_table ;ambil most significant byte
movwf ccpr1l ;pindahkan ke keluaran PWM
incf pointer,f ;increment pointer
movf pointer,w
call sin_table ;ambil MS byte
andlw B'11000000' ;hanya menggunakan ms 2 bit
48
movwf temp
bcf status,c ;adjust untuk CCP1CON
rrf temp,f
rrf temp,w
iorlw B'00001100' ;set beberapa CCP1CON bit
movwf ccp1con
incf pointer,f
movf pointer,w
…
call delay1
goto sin_loop
49
Tegangan analog keluaran tergantunglangsung pada tingkat logik aliran PWM. Perubahannya tergantung pada akurasitegangan catu daya.
Low-pass filter tidak dapat membangkitkansinyal yang berubah cepat.
PWM yang berjalan lebih cepat menurunkanresolusi.
Akan ada beberapa ripple pada keluarananalog.
50
51
Timer dan counter diperlukan, timer untuk mengukur
periode referensi waktu dan counter untuk mencacah
jumlah event pada saat itu.
Timer2_Int
decfsz int_cntr
goto int_end
;membuat pengukuran
movf tmr0,w ;simpan nilai counter
movwf tmr0_temp
movf tmr1l,w
movwf tmr1_temp
clrf tmr0 ;clear counter
clrf tmr1l
53
btfss portc,0 ;inc T1 jika = 0, pertama kali
incf tmr1l ;rising edge tidak terlihat
movlw D'250' ;reload counter interupsi
movwf int_cntr
int_end
bcf pir1,tmr2if
retfie
54
Pewaktuan merupakan unsur penting dari desainembedded system, yang digunakan dalamaktivitas embedded, seperti komunikasi serial danpulse width modulation.
Jangkah timer yang ada, dengan fasilitas add-on yang dikembangkan kemampuan untukmengambil, membandingkan, membuat interupsiulang atau membangkitkan aliran pulsa PWM.
Pada aplikasi yang kompleks, mikrokontrolermempunyai beberapa timer berjalan secarasimultan.
55