Anda di halaman 1dari 22

LAPORAN PRAKTIKUM

ANTARMUKA MENGGUNAKAN TIMER/COUNTER DALAM MIKROKONTROLER ATMEGA8535

UNTUK MEMENUHI TUGAS MATAKULIAH

LABORATORIUM PTE-03

Yang dibina oleh Ibu Dyah Lestari

LABORATORIUM PTE-03 Yang dibina oleh Ibu Dyah Lestari Disusun Oleh: 1. Indri Feni Fatmawati (150534603271)

Disusun Oleh:

1. Indri Feni Fatmawati

(150534603271)

2. Lina Dessy Lidyawati

(150534603708)

3. M. Zainuri

(150534604998)

4. M. Khasbi Rahbini

(150534600531)

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI S1 PENDIDIKAN TEKNIK ELEKTRO

Oktober 201

MODUL VIII MENGGUNAKAN TIMER/COUNTER DALAM MIKROKONTROLER ATMEGA8535

TUJUAN

Mahasiswa mampu menggunakan fitur timer/counter mikrokontroler.

Mahasiswa mampu menggunakan mikrokontroler untuk membuat timer.

Mahasiswa mampu menggunakan mikrokontroler untuk menghitung banyaknya pulsa yang masuk.

TIMER/COUNTER

Timer/counter dalam ATmega8535 ada 3 yaitu:

Timer/counter 0

Timer/counter 1

Timer/counter 2

Interrupt timer berasal dari dua sumber yaitu:

Overflow interrupt, dimana interrupt terjadi jika TCNTn mencapai 255 untuk timer 8 bit dan 65535 untuk timer 16 bit.

Compare match interrupt, dimana interrupt terjadi jika nilai OCR sama dengan TCNTn.

ATmega8535 dapat digunakan

untuk berbagai macam fungsi, yaitu:

Timer/delay time Pada dasarnya ketika Timer/Counter difungsikan sebagai Timer, sistem hanya menghitung pulsa clock. Frekuensi pulsa clock yang dihitung tersebut bisa sama dengan frekuensi kristal yang digunakan atau dapat diperlambat menggunakan prescaler dengan faktor 8, 64, 256, atau 1024.Contohnya jika sebuah sistem mikrokontroler menggunakan kristal dengan frekuensi 4 MHz dan timer yang digunakan adalah timer 8 bit, maka maksimum waktu timer yang bisa dihasilkan adalah:

Secara umum fitur Timer/Counter mikrokontroler

=

=

1

(ℎ + 1)

1

4000000

(255 + 1)

= 0,000064

Untuk menghasilkan timer yang lebih lama dapat digunakan prescaler, misalnya 1024, maka maksimum waktu timer yang bisa dihasilkan adalah:

=

1

(ℎ + 1)

1

= 0,065536

(255 + 1) 1024

=

4000000

Untuk menghitung nilai TCNT supaya menghasilkan waktu timer tertentu dipergunakan rumus berikut:

=

Dimana:

(1 + ℎ) – ( )

TCNT

= nilai Timer (Heksadesimal)

fCLK

= Frekuensi clock kristal yang digunakan (Hz)

Ttimer

= Waktu timer yang diinginkan (detik)

N

= prescaler (1,8,64,256,1024)

1+FFh

= nilai maksimum timer adalah FFh dan overflow saat FFh ke 00h

Counter Secara prinsip, memfungsikan Timer/Counter sebagai Counter sama dengan fungsi

sebagai Timer akan tetapi sumber clock bukan berasal dari frekuensi kristal, tetapi input dari kaki Tn. Dengan memanfaatkan counter naik, maka bisa diberikan nilai TCNT yang sesuai

dengan rumus berikut:

TCNT = (1+FFH) jumlah counter Sehingga jika diinginkan membuat counter 5, maka nilai TCNT adalah FBH.

Mode CTC Dengan mode ini, maka mikrokontroler bisa membangkitkan sinyal dengan frekuensi tertentu sesuai dengan rumus berikut:

=

/

2. . (1 + )

Jika diinginkan untuk membangkitkan sinyal dengan frekuensi 1 kHz, maka dengan frekuensi

clock 4 MHz, dan N=16, maka diperoleh nilai OCR sebagai berikut:

=

/

2. . (1 + )

/

2. .

− 1

1

+ =

=

/

2. .

=

4000000

2.16.1000 1

= 124

Mode PWM Dengan mode ini, maka mikrokontroler bisa membangkitkan sinyal dengan frekuensi tertentu dan duty cycle tertentu sesuai dengan rumus sebagai berikut. Untuk Fast PWM:

= /

. 256

Untuk Phase Correct PWM:

/

=

2. . 256 Dimana nilai OCR yang berkisar dari 0 sampai 255 akan mempengaruhi duty cycle sinyal yang dibangkitkan.

ALAT DAN BAHAN YANG DIGUNAKAN

1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama

1 buah multimeter dengan fasilitas frequency counter

1 buah ISP Downloader AVR

1 buah sistem minimum AVR

1 buah I/O

1 buah kabel printer USB

2 buah kabel pita hitam

PROSEDUR

TIMER

1. Rangkailah peralatan yang diperlukan seperti gambar dibawah. Hubungkan soket

jumper PORTC pada minimum system dengan soket jumper pada OUTPUT Trainer I/O.

Kabel Kabel hitam Kabel USB downloader Minimum I/O ISP Downloader system AVR 2. Buka program
Kabel
Kabel hitam
Kabel USB
downloader
Minimum
I/O
ISP Downloader
system AVR
2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut.

Nilai Clock Value adalah Nilai Clock Frequency Chip (F clock ) dibagi dengan prescaller dimana prescaller tersebuat bernilai 1, 8, 64, 256, atau 1024

Contoh jika nilai F clock = 4 Mhz maka jika kita ingin menggunakan prescaller 1024 setting Clock Value nya adalah 4Mhz/1024=3,906 Khz

l o c k = 4 Mhz maka jika kita ingin menggunakan prescaller 1024 setting Clock
l o c k = 4 Mhz maka jika kita ingin menggunakan prescaller 1024 setting Clock

4.

Perhatikan blok program berikut.

4. Perhatikan blok program berikut. 5. Tuliskan script berikut dalam interrupt: 6. Compile dan Build program

5. Tuliskan script berikut dalam interrupt:

program berikut. 5. Tuliskan script berikut dalam interrupt: 6. Compile dan Build program jika ada yang

6. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.

7. Perhatikan dan catat nyala LED.

8. Ubah nilai TCCR0 menjadi 0x04 dan 0x03.

9. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbeda-beda.

10. Ulangi langkah 3-9 untuk Timer2 dengan TCNT=0x80;

11. Buat Project baru untuk Timer1 dengan TCNT = 0xd5d0

12. Perhatikan blok berikut 13. Tuliskan script berikut dalam blok interrupt

12. Perhatikan blok berikut

12. Perhatikan blok berikut 13. Tuliskan script berikut dalam blok interrupt
12. Perhatikan blok berikut 13. Tuliskan script berikut dalam blok interrupt

13. Tuliskan script berikut dalam blok interrupt

14. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan

14. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.

15. Perhatikan dan catat nyala LED.

16. Ubah nilai TCCR1B sehingga menjadi 0x04, 0x03, 0x02, 0x01.

17. Perhatikan perbedaan nyala LED dengan nilai TCCR yang berbeda-beda.

18. Buatlah program menggunakan Timer 16bit (Timer1) dengan nilai TCCR1B=0x05, Ubah nilai TCNT sehingga menghasilkan timer 1 detik.

COUNTER

1. Rangkailah peralatan yang diperlukan seperti dalam gambar dibawah. Hubungkan soket

jumper PORTC pada minimum system dengan soket jumper pada OUTPUT LED. Hubungkan kaki IS1 ke PORTB.0 (T0).

Kabel Kabel hitam Kabel USB downloader Minimum I/O ISP Downloader system AVR 2. Buka program
Kabel
Kabel hitam
Kabel USB
downloader
Minimum
I/O
ISP Downloader
system AVR
2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut.

PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut. 4. Perhatikan blok program
PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut. 4. Perhatikan blok program

4. Perhatikan blok program berikut.

PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut. 4. Perhatikan blok program
PORTC untuk LED serta Timer seperti gambar dibawah. Kemudian simpanlah file tersebut. 4. Perhatikan blok program

5.

Tuliskan script berikut dalam interrupt:

5. Tuliskan script berikut dalam interrupt: 6. Compile dan Build program jika ada yang error perbaiki

6. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.

7. Tekan push button IS1 Perhatikan dan catat nyala LED.

8. Lakukan hal serupa dengan Timer dengan mengganti nilai TCNT0 menjadi 0xFC dan 0xF0 (lihat tabel counter pada data hasil percobaan).

CTC

1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.2. Hubungkan PORTB

pada minimum system dengan kabel data pada OUTPUT TRAINER. Kabel Kabel hitam Kabel USB downloader
pada minimum system dengan kabel data pada OUTPUT TRAINER.
Kabel
Kabel hitam
Kabel USB
downloader
Minimum
I/O
ISP Downloader
system AVR

2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTB untuk LED serta Timer. Kemudian simpanlah file tersebut.

set juga bagian PORTB untuk LED serta Timer. Kemudian simpanlah file tersebut. 4. Klik Yes jika
set juga bagian PORTB untuk LED serta Timer. Kemudian simpanlah file tersebut. 4. Klik Yes jika

5. Perhatikan blok program berikut.

5. Perhatikan blok program berikut. 6. Compile dan Build program jika ada yang error perbaiki program.

6. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.

7. Lihat nyala LED di PORTB.3.

8. Ukur frekuensi pada PORTB.3 dengan frequency counter di AVOmeter

9. Ubah Nilai OCR0 menjadi 0x3E dan 0x1E (lihat tabel CTC pada data hasil percobaan)

10. Lihat nyala LED di PORTB.3.

11. Ukur frekuensi pada PORTB.3 dengan frequency counter di AVOmeter

12. Amati Nyala LED

13. Buatlah program yang dapat membangkitkan sinyal dengan frekuensi 1 Hz.

PULSE WIDTH MODULATION (PWM)

1. Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.2. Hubungkan PORTB

pada minimum system dengan kabel data pada OUTPUT TRAINER.

Kabel Kabel hitam Kabel USB downloader Minimum I/O ISP Downloader system AVR 2. Buka program
Kabel
Kabel hitam
Kabel USB
downloader
Minimum
I/O
ISP Downloader
system AVR
2. Buka program Code Vision AVR

3. Buatlah project baru. Pada saat mengeset chip dan clock, set juga bagian PORTB untuk LED serta Timer. Kemudian simpanlah file tersebut.

untuk LED serta Timer. Kemudian simpanlah file tersebut. 4. Klik Yes jika muncul dialog diatas 5.
untuk LED serta Timer. Kemudian simpanlah file tersebut. 4. Klik Yes jika muncul dialog diatas 5.

4. Klik Yes jika muncul dialog diatas

5. Perhatikan blok program berikut.

serta Timer. Kemudian simpanlah file tersebut. 4. Klik Yes jika muncul dialog diatas 5. Perhatikan blok
6. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan

6. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan Khanzama AVR Programer. Klik auto program.

7. Lihat nyala LED di PORTB.3.

8. Ukur frekuensi pada PORTB.3

9. Ubah Nilai OCR0 menjadi 0x00 dan 0xFF (lihat tabel PWM pada data hasil percobaan)

10. Amati Nyala LED

11. Ulang langkah 3-9 dengan mode Fast PWM.

12. Buatlah program yang dapat mengubah nilai Duty Cycle sesuai dengan input Potensiometer ! Potensiometer 0 V (minimum) Duty Cycle 0% Potensiomter 5V (Maksimum) Duty Cycle 100%

DATA HASIL PERCOBAAN

TIMER

 
 

No

TIMER

TCCRx

TCNTx

Kondisi Led

Delay

1

   

0x50

00000000

11111111

Tidak

Timer0

0x05

Nyala berkedip dengan cepat

terdeteksi

2

   

0x50

11111111

0

Timer0

0x04

Nyala terus

3

   

0x50

11111111

0

Timer0

0x03

Nyala terus

6

   

0x80

11111111

0

Timer2

0x05

Nyala terus

7

   

0xD5D0

00000000

11111111

2

s

Timer1

0x05

Nyala berkedip dengan lambat

 

8

   

0xD5D0

00000000

11111111

Tidak

Timer1

0x04

Nyala berkedip dengan waktu berkedip lebih cepat dari pada 0x05

terdeteksi

9

   

0xD5D0

00000000

11111111

Tidak

Timer1

0x03

Nyala berkedip dengan waktu berkedip lebih cepat dari pada 0x04

terdeteksi

10

   

0xD5D0

00000000

11111111

Tidak

Timer1

0x02

Nyala berkedip dengan cepat

trdeteksi

11

   

0xD5D0

11111111

0s

Timer1

0x01

Nyala terus

12

Timer1

   

00000000

11111111

1

s

Counter

 

No

TIMER

TCCRx

TCNTx

Jumlah Penekanan Tombol IS1 Hingga LED Menyala

Jumlah Penekanan Tombol IS1 Hingga LED Mati

1

Timer0

0x06

0xFB

1

 

5

2

Timer0

0x06

0xFC

1

 

4

3

Timer0

0x06

0xF0

1

 

2

CTC

 
   

Nilai

 

Nyala LED

   

OCR0/OCR1A/OCR1B/OCR2

N

Frekuensi

 

0x7C

64

00000010

250Hz

 

0x3E

64

00001000

496Hz

 

0x1E

64

00001000

1kHz

 

0x7A11

 

64

00001000

1 Hz

PWM

 

Fast PWM

 

Nilai

Nyala

Tegangan

Frekuensi

OCR0

LED

LED

 

00001000

   

0x00

Berkedip

3.4 V

cepat

50Hz

 

00001000

   

0x50

Berkedap

2.4 V

lambat

50Hz

 

00001000

   

0xFF

Nyala

19.3 mV

terus

50Hz

 

Phase Correct PWM

 

Nilai

Nyala

Tegangan

Frekuensi

OCR0

LED

LED

0x00

00000000

-10.6 mV

0

0x50

00001000

300 mV

50Hz

0xFF

00000000

-10.5 V

50Hz

ANALISA DATA

TIMER

1. Analisa data hasil pada tabel Timer dengan menggunakan rumus :

Hitung Nilai T timer :

0 = ((1 + 255) − 0) ∙

1 = ((1 + 65535) − 1) ∙

TIMER

TCCRx

TCNTx

Fclock (Hz)

Prescaler

8 / 16 bit

T (s)

Keterangan

Timer0

0x05

0x50

4.000.000

1.024

255

0,45 s

Delay tidak terlihat

Timer0

0x04

0x50

4.000.000

1.024

255

0,45 s

Delay tidak terlihat

Timer0

0x03

0x50

4.000.000

1.024

255

0,45 s

Delay tidak terlihat

Timer2

0x05

0x80

4.000.000

1.024

255

0,037 s

Delay tidak terlihat

Timer1

0x05

0xD5D0

4.000.000

1.024

255

2,76 s

Delay terlihat

Timer1

0x04

0xD5D0

4.000.000

1.024

255

2,76 s

Delay terlihat

Timer1

0x03

0xD5D0

4.000.000

1.024

255

2,76 s

Delay terlihat

Timer1

0x0 2

0xD5D0

4.000.000

1.024

255

2,76 s

Delay terlihat

Timer1

0x01

0xD5D0

4.000.000

1.024

255

2,76 s

Delay terlihat

Dari data hasil percobaan Semakin kecil nilai TCCRxnya dengan nilai TCNTx yang sama maka akan mengakibatkan nilai delay semakin kecil dan bahkan hingga delay bernilai 0.hal ini terjadi pada timer0 dan timer1.Namun dari hasil penghitungan nilai TCCRx tidak mempengaruhi hasil T,tetapi sebenarnya mempengaruhi hanya saja dalam penghitungan mahasiswa masih belum bisa mendapatkan rumus yang sesuai untuk menghitung nilai T dengan menggunkan nilai TCCRx.

2. Bagaimana anda mendapatkan timer dengan dakn T timer 1 detik dengan menggunakan

Timer1?

Jawab: dengan memberi nilai TCNTx nya sebesar 61629,75 atau dapat dibulatkan menjadi 61630 yang dimana didalam bilangan hexanya menjadi F0BE maka nilai Ttimernya menjadi 1s.Pemberiaan nilai ini didasarkan dari rumus :

TCNT = (1 + FFFFH) ( )

= (1+65535)- ( 1 4000000 )

= 65536-3906,25

= 61629,75

1024

61630F0BE

Dari penghitungan tersebut kemudi dapat ditentukan register-register dalam programnya yang menjadikan outputan Ttimer 1 detik

TCCRIA=0X00;

TCCRIA=0X05;

TCNT1H=0Xf0;

TCNT1L=0XBE;

OCR1A=0X00;

OCR1B=0X00;

ICR1H=0X00;

ICRIL=0X00;

COUNTER

TIMSK=0X04;

TIFR=0X00;

1.

Analisa data hasil pada tabel counter Untuk mengetahui berapa kali jumlah penekanan yaitu dengan rumus:

TCNT=(1+FFH)-jumlah counter

a. TCNT

=(1+FFH)-jumlah counter

FB(hexa)

=(1+255)-jumlah counter

251(desimal)

=256-jumlah counter

Jumlah counter

=256-251

Jumlah counter

=5 (sesuai dengan percobaan)

b. TCNT

=(1+FFH)-jumlah counter

FC(hexa)

=(1+255)-jumlah counter

252(desimal)

=256-jumlah counter

Jumlah counter

=256-252

Jumlah counter

=4 (sesuai dengan percobaan)

c. TCNT

=(1+FFH)-jumlah counter

0F(hexa)

=(1+255)-jumlah counter

240(desimal)

=256-jumlah counter

Jumlah counter

=256-240

Jumlah counter

=16 (tidak sesuai dengan percobaan)

Ketika timer o dengan TCCR 0x06 dan TCNT 0xFB , maka jumlah penenkanan untuk hidup adalah 1 dan jumlah penekanan untuk mematikan adalah 5, berbeda waktu TCNTnya diubah menjadi 0xFC maka jumlah penekanan untuk hidupnya adalah 1 dan matinya adalah 4, dan jika TCNTnya adalah 0xF0 maka jumlah penekanan untuk mati seharusnya 16 dan hidupnya adalah 1,namun dalam hasil percobaan dan perhitungan berbeda,hal ini terjadi bisa dikarenakan kesalahan dari praktikan dan trainer karna terjadi keeroran sedikit pada trainer dan kurangnya pengetahuan dari praktikan.Jadi dari percobaan counter dapat membuktikan bahwa TCNT berpengaruh pada jumlah penekanan untuk menghidupkan ataupun mematikan timer conter.

CTC

1.

Hitung nilai frekuensi

2.

Nilai

 

Nyala LED

 

OCR0/OCR1A/OCR1B

N

Frekuensi

 

/OCR2

0x7C

64

00000010

250Hz

0x3E

64

00001000

496Hz

0x1E

64

00001000

1kHz

=

=

/

2. . (1 + 0)

4000000

2.64. (1 + 124) = 250 Hz (sesuai percobaan)

=

/

2. . (1 + 0)

=

4000000

2.64. (1 + 62)

= 496,03 Hz (sesuai percobaan)

=

/

2. . (1 + 0)

=

4000000

2.64. (1 + 30)

= 1,008 kHz (sesuai percobaan)

Pada data hasil perhitungan dan percobaan didapatkan hasil yang sama.Dimana dari kesamaan hasil tersebut dapat dianalisa bahwa semakin kecil nilai OCRnya maka semakin besar nilai frekuensinya

2 Bagaimana cara anda membangkitkan sinyal dengan frekuensi 1 detik menggunakan Timer/Counter mode CTC? Jawab:

Dengan menggunakan rumus OCRn= 2.. kita dapat mengeset nilai frekuensi sebesar 1

detik dengan menentukan nilai OCRn nya.

1/

1

=

/

2. . (1 + 0)

=

4000000

2.64.(1+00)

128 (1+OCR0) = 4000000

128.OCR0

OCR0

OCR0

= 4000000-128 = = 31249 7A11

3999872

128

PWM

 

Fast PWM

   

=

4000000

 

Nyala LED

(praktek)

 

Tegangan

Frekuensi

1024.256

Nilai

OCR0

LED

(praktek)

(hasil

perhitungan)

= 15,258 Hz

 

00001000

     

0x00

Berkedip

 

3.4 V

cepat

 

15,258Hz

 

00001000

   

0x50

Berkedap

 

2.4 V

lambat

 

15,258Hz

 

00001000

   

0Xff

Nyala terus

 

19.3 mV

15,258Hz

 

Phase Correct PWM

 

=

/

2. . 256

Nilai

Nyala LED

 

Tegangan

Frekuensi

OCR0

LED

 

4000000

       
     

7,62 Hz

 

=

0x00

00000000

 

-10.6 mV

 

2.1024.256

0x50

00001000

 

300 mV

7,62 Hz

 

= 7,62 Hz

0Xff

00000000

 

-10.5 V

7,62 Hz

 

D = X 100%

= 255 X 100%

= 0%

0

 

D = X 100%

= 255 X 100%

= 31,37%

80

 

D = X 100%

= 255 X 100%

= 100%

255

Pada hasil penghitungan dengan hasil percobaan nilai frekuensinya tidak sesuai hal ini dapat disebabkan karena kesalahan dari praktikan yang kurang teliti dan kurang memahami cara praktik materi PWM.Dan dari data hasil perhitungan duty circle dapat dianalisa bahwa semakin besar nilai OCR maka semakin besar pula nilai duty circlenya.

1. Jelaskan perbedaan mode Fast PWM dengan Phase Correct PWM Jawab:

Perbedaan utama antara mode Fast PWM dan Phase Correct PWM selain dari frekuensi kerja adalah ketelitian dalam menghasilkan sinyal PWM pada phase correct

menggunakan dual slope yang artinya jumlah bit counter yang berperan seakan akan

Hal ini menyebabkan waktu Ton terhadap suatu sinyal menjadi lebih Dalam mengontrol Sudut Putaran Motor ,terutama pada motor DC Servo,

maka fitur ini sangat diperlukan mengingat Motor DC Servo mengandalkan ketelitian PWM dalam mengontrol sudut putaran motor.

salah satu mode operasi dalam T/C AVR adalah mode CTC. dimana mode tersebut memiliki 3 jenis bentukan sinyal output yang dapat dipilih yaitu Toggle, Clear, dan Set. Pada penggunaannya toggle berfungsi mengubah keadaan logika pada PIN OCn setiap

hal ini membuat CTC dapat menghasilkan sebuah sinyal

pulsa yang konstan sesuai dengan waktu comparematch terjadi. sedangkan untuk Clear

kali CompareMatch Terjadi

menjadi 16bit teliti 2x lipat

dan Set berfungsi untuk mengubah keadaan pin OCn menjadi SET atau CLEAR ketika

CompareMatch Terjadi.perbedaan penggunaanya terlihat jelas pada saat menggunakan fungsi CTC untuk menghasilkan sinyal dan pada saat menggunakan CTC untuk melakukan counter dimana ketika counter telah comparematch maka pin OCn akan

satu hal yang perlu di

ditandai dengan Set atau Clear tergangtung penggunaannya

perhatikan adalah pin OCn tidak akan berubah keadaan jika tidak dirubah secara manual atau di setting terlebih dahulu

2. Mengapa nyala led pada mode Fast PWM berkedip lebih cepat daripada mode Phase Correct PWM? Jawab:

Hal ini terjadi karena pada fast PWM memiliki nilai frekuensi yang lebih besar dari phase corect PWM,sehingga jumlah golombangnya lebih banyak dan mengakibatkan jarak tiap Ton lebih dekat dan led semakin cepat menyala.

3. Source Code Program langkah no 11. Jawab:

/***************************************************** This program was produced by the CodeWizardAVR V2.05.3 Standard Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project :

Version :

Date

Author : Vije Edward Company :

: 14/11/2016

Comments:

Chip type

: ATmega8535

Program type

: Application

AVR Core Clock frequency: 4,000000 MHz

Memory model

: Small

External RAM size

: 0

Data Stack size

: 128

*****************************************************/

#include <mega8535.h>

// Declare your global variables here

void main(void)

{

// Declare your local variables here

// Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out

Func0=Out

// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0

PORTB=0x00;

DDRB=0xFF;

// Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 3,906 kHz // Mode: Fast PWM top=0xFF // OC0 output: Non-Inverted PWM

TCCR0=0x6D;

TCNT0=0x00;

OCR0=0xFF;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// USART initialization // USART disabled

UCSRB=0x00;

// Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// ADC initialization // ADC disabled

ADCSRA=0x00;

// SPI initialization // SPI disabled

SPCR=0x00;

// TWI initialization // TWI disabled

TWCR=0x00;

while (1)

{

// Place your code here

}

}