Instruktur : Ferry Wahyu Wibowo, S.Si.,...

55
Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs. 1

Transcript of Instruktur : Ferry Wahyu Wibowo, S.Si.,...

Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

1

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

5

6

T0CS: memilih sumber clock

T0SE: memilih source edge

PSA: Prescaler assignment bit

PS2:PS0: Prescaler rate select

7

8

Timer 1 Register16-bit register:

•TMR1L (0Eh)

•TMR1H (0Fh)

Control Register:

•T1CON (10h)

9

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

12

;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

16

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

19

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

22

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

CCPxX:CCPxY: PWM Least Significant bit

CCPxM3:CCPxM0: Mode Select bit

26

27

28

29

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

33

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

36

37

;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

41

cblock 20

var1 ;reserve 1 byte for var1

var2 ;reserve 1 byte for var2

endc

42

43

44

45

fc = 1/(2π*100nF* 20kΩ)

= 80 Hz

46

47

T = 250 μs

f = 4 kHz

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.

52

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