Top Banner
Modul Praktikum Mikrokontroler3 Elka D3 2013 taufiq[at]eepis[minus]its[dot]edu 1 Praktek 1 Digital I/O TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah : 1. Mengakses perangkat digital I/O 2. Mengerti struktur pemrograman C di CodeVisionAVR ver.2.03.4 Standart 3. Memprogram digital I/O sebagai Running led dengan berbagai metode 4. Mengaplikasi fungsi digital I/O pada mikrokontroler AVR TEORI Port I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau ouput dengan cara merubah isi Data Direction Register (DDRx). Pada bit DDRx menentukan arah pin pada port I/O yang akan digunakan nantinya. Jika diinginkan Port D dikonfigurasi sebagai output maka DDRC harus di-set sebagai 0xFFh. Dan jika difungsikan sebagai input maka nilainya pada DDRC adalah 0x00h Contoh : Untuk contoh kasus ini DDRC = 0 apabila konfigurasi hardware input (push button) terhubung pada VCC (bukan pada ground). Setiap pin I/O mikrokontroler AVR memiliki internal pull-up. Misalnya Port C terkonfigurasi sebagai input dimana sisi hardware input (push button) terhubung dengan ground (bukan VCC), maka internal pull-up harus diaktifkan. Contoh : Dan ketika port-port yang lainnya tidak digunakan, ada baiknya port tersebut di jadikan mode input dengan aktif internal pull-up. Namun jika projek dari pengguna mikrokontroler AVR tidak bermasalah dengan penggunan sumber daya, port yang tidak digunakan bisa dijadikan mode input yang bersifat floating point atau kondisi default. Kondisi pasif tersebut dibuat sedemikian rupa, jika ada insiden masuknya sumber daya ke salah satu port secara tidak sengaja masih bisa ditoleransi jika port tersebut pada mode input.
23

Modul Avr-eepis 2013 Ver1.3

Nov 07, 2014

Download

Documents

Hannasy Arif
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 1

Praktek 1 – Digital I/O

TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :

1. Mengakses perangkat digital I/O

2. Mengerti struktur pemrograman C di CodeVisionAVR ver.2.03.4 Standart

3. Memprogram digital I/O sebagai Running led dengan berbagai metode

4. Mengaplikasi fungsi digital I/O pada mikrokontroler AVR

TEORI Port I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau ouput dengan cara

merubah isi Data Direction Register (DDRx). Pada bit DDRx menentukan arah pin pada port I/O yang

akan digunakan nantinya. Jika diinginkan Port D dikonfigurasi sebagai output maka DDRC harus di-set

sebagai 0xFFh. Dan jika difungsikan sebagai input maka nilainya pada DDRC adalah 0x00h

Contoh :

Untuk contoh kasus ini DDRC = 0 apabila konfigurasi hardware input (push button) terhubung pada

VCC (bukan pada ground).

Setiap pin I/O mikrokontroler AVR memiliki internal pull-up. Misalnya Port C terkonfigurasi

sebagai input dimana sisi hardware input (push button) terhubung dengan ground (bukan VCC), maka

internal pull-up harus diaktifkan.

Contoh :

Dan ketika port-port yang lainnya tidak digunakan, ada baiknya port tersebut di jadikan mode

input dengan aktif internal pull-up. Namun jika projek dari pengguna mikrokontroler AVR tidak

bermasalah dengan penggunan sumber daya, port yang tidak digunakan bisa dijadikan mode input

yang bersifat floating point atau kondisi default. Kondisi pasif tersebut dibuat sedemikian rupa, jika

ada insiden masuknya sumber daya ke salah satu port secara tidak sengaja masih bisa ditoleransi jika

port tersebut pada mode input.

Page 2: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 2

PROSEDUR PERCOBAAN

Prosedur Umum

1. Secara keseluruhan beberapa percobaan dibawah ini menggunakan wizard sehingga kode di-

generate secara otomatis.

2. Atur semua kode program yang ada kemudian diletakkan sesuai pada bagian-bagian kode hasil

generate wizard.

3. Pastikan hasil compile tidak menghasilkan error dengan menekan F9.

4. Selanjutnya download program tersebut ke MS-16 via USB dengan menekan Shift-F9 dan

tekan tombol Program the chip.

5. Amati dan analisa hasilnya kemudian catat hasil tersebut sebagai laporan sementara.

Prosedur Khusus

Rangkaian skematik Digital Input dan Output yang terdapat pada modul Interface (IF-01) adalah

sebagai berikut :

Input – DIP Switch dan Push Button

Input DIP Switch dan Push Button terhubung dengan PORTC, dimana pada skematik

setiap saklar terhubung pada GROUND. Serta sebanyak 4-bit LSB terhubung parallel

pada DIP Switch 8-bit. Sehingga ketika mendefinisikan PORTC sebagai input

menggunakan mode Input dengan Internal Pull-up.

Dengan tujuan ketika tombol tidak aktif mendapatkan kondisi yang pasti yaitu

mendapatkan logika ‘1’ dan aktif mendapatkan logika ‘0’. Syarat skematik ini tidak bisa

digunakan jika menggunakan mode input tipe Tri-state (Hi-Z) atau istilah lainnya

floating input

Page 3: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 3

Output – BarLED

Dari skematik diatas, tiap BarLED terhubung dengan Resistor Pack sebesar 1K ohm.dan

tiap LED akan aktif jika diberikan keluaran logika “0’ dari PORTD. Sehingga ketika

PORTD di-inisialisasi sebagai Output yaitu DDRD=0xff dan PORTD=0x00 maka BarLED

tidak akan pernah menyala.

Berikut ini setting persiapan awal untuk mengakes AVR ATMega16 menggunakan CodeWizard AVR

dimana penggunaan Chip=ATmega16 dan Clock=11.059200, serta mengaktifkan PORTC sebagai Input

dengan Internal Pull-up dan PORTD sebagai Output, tampilan dari CodeWIzardAVR adalah sebagai

berikut :

Page 4: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 4

Percobaan ke :

1. LED menyala berjalan (metode matematis)

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Running LED

Version : 1.0

Date : 2013-03-11

Author : Taufiqurrahman

Company : D206 - EEPIS

Comments: Metode Matematis

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

#include <math.h>

#include <delay.h>

// Declare your global variables here

void main(void)

{

// Declare your local variables here

int i,a;

// 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=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

PORTB=0x00;

DDRB=0x00;

// 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

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

PORTD=0xFF;

DDRD=0xFF;

Page 5: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 5

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 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: Timer 2 Stopped

// Mode: Normal top=FFh

// 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;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

while (1)

{

Page 6: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 6

// Place your code here

for (i=0;i<=7;i++){

a = pow(2,i);

PORTD=a;

delay_ms(500);

}

};

}

2. LED menyala berjalan (metode geser bit)

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Running LED

Version : 1.0

Date : 2013-03-11

Author : Taufiqurrahman

Company : D206 - EEPIS

Comments: Metode Geser Bit

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

// Declare your global variables here

void kiri()

{

unsigned char b=0x7f;

int i;

for(i=0;i<8;i++){

b=((b<<1)|(b>>7)); // instruksi geser bit ke kiri

PORTD=b;

delay_ms(200);

}

}

void delay(int n){

int i;

for(i=0;i<n;i++)

{

int b;

for(b=0;b<=10;i++);

}

}

void main(void)

{

Page 7: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 7

// 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=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

PORTB=0x00;

DDRB=0x00;

// 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=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

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

PORTD=0xFF;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 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;

Page 8: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 8

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// 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;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

while (1)

{

// Place your code here

kiri();

};

}

3. Running Led (Look Up Table Method)

#include <mega16.h>

#include <delay.h>

void main(void)

{

// Declare your local variables here

unsigned char LED[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

int a;

// Port D initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

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

PORTD=0xFF;

DDRD=0xFF;

while (1)

{

// Place your code here

for(a=0;a<=7;a++)

{

PORTD = LED[a];

delay_ms(100);

}

};

}

Page 9: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 9

TUGAS 1. Amati kondisi LED pertama kali dan pergerakan LED.

2. Catat pemakaian memory flash yang dipakai dari masing-masing metode.

3. Kemudian jelaskan setiap baris terhadap syntax dari semua percobaan diatas kemudian

tarik kesimpulan.

4. Modifikasi program dari percobaan diatas agar bisa mendapatkan penggunaan memory

flash yang paling minimal untuk project Running LED yang baru.

5. Buat laporan resmi!

Page 10: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 10

Praktek 2 – TIMER 8-bit dan 16-bit

TUJUAN Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :

1. Mengakses Timer dengan mode normal, compare match interrupt dan CTC

2. Memprogram timer dengan ketiga mode tersebut

3. Mengaplikasi fungsi timer pada mikrokontroler AVR

TEORI Jenis timer yang diberikan oleh AVR ada dua yaitu timer dengan resolusi 8-bit dan 16-bit.

Sedangkan fitur timer dari masing-masing resolusi tersebut adalah sebagai berikut :

1. TIMER 0 dan 2 (resolusi 8-bit)

Features a. Single Compare Unit Counter b. Clear Timer on Compare Match (Auto Reload) c. Glitch-free, Phase Correct Pulse Width Modulator (PWM) d. Frequency Generator e. External Event Counter f. 10-bit Clock Prescaler (1, 8, 64, 256, 1024) g. Overflow and Compare Match Interrupt Sources (TOV0 and OCF0)

Page 11: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 11

2. TIMER 1 (resolusi 16-bit)

Features a. True 16-bit Design (i.e., Allows 16-bit PWM) b. Two Independent Output Compare Units c. Double Buffered Output Compare Registers d. One Input Capture Unit e. Input Capture Noise Canceler f. Clear Timer on Compare Match (Auto Reload) g. Glitch-free, Phase Correct Pulse Width Modulator (PWM) h. Variable PWM Period i. Frequency Generator j. External Event Counter k. Four Independent Interrupt Sources (TOV1, OCF1A, OCF1B, and ICF1)

Page 12: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 12

Secara umum mode pada Timer/Counter 0, 1 dan 2, diantaranya :

a. Normal

Mode yang paling sederhana dalam penggunaan timer adalah mode Normal (WGM01:00=0).

Didalam mode normal ini arah hitungan timer bersifat hitung naik (incrementing). Pola kerja

dari timer mode normal ini menghitung hingga TOP=0xff dan kembali restart ke 0x00 (untuk

timer resolusi 8-bit). Dan nilai hitungan timer dapat diisi setiap saat pada register TCNTx

b. CTC (Clear Timer on Compare Match)

Didalam mode CTC menggunakan register OCRx untuk memanipulasi nilai hitungan timer

(WGM01:00=2). Mode CTC ini mulai menghitung naik (incrementing) dan otomatis kembali Nol

ketika nilai register TCNTx sama dengan nilai register OCRx. Fenomena ini dikatakan

mekanisme autoreload, dimana internal AVR secara otomatis memberikan isi register TCNT

bernilai 0 kembali dan berjalan hitung naik kembali dan seterusnya. Sehingga timer dengan

mode CTC ini lebih presisi dibandingkan mode normal.

Dari mode CTC ini, terdapat istilah pembagi clock (prescaller = N) yang harus diketahui dalam

menghitung waktu atau frekuensi yang akan ditentukan nantinya, rumusan tersebut yaitu :

atau

Page 13: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 13

Rumusan waktu maksimum dari suatu timer adalah sebagai berikut.

Dimana : Fclk = nilai frekuensi kristal yang digunakan.

α = nilai bit timer yang digunakan, bisa 8-bit atau 16-bit.

jika 8-bit maka α = 255

jika 16-bit maka α = 65535

N = Prescaller, faktor pembagi mulai 8, 64, 256 1024.

Contoh :

Diketahui Fclk = 11.059200 Mhz dan menggunakan TIMER 0/2, maka α = 255

Hitung waktu maksimum timer tersebut dengan prescaller 1.

Jawab :

Sehingga jika ingin didapatkan waktu maksimum dari timer 1 yang memiliki resolusi 16 bit dengan

prescaller =1 didapatkan

Gunakan rumus berikut ini untuk menentukan Timer Value berdasarkan Interval Timer yang

diinginkan :

Dimana :

Interval Timer = Waktu yang diinginkan

Clock Value= Frekuensi kristal per prescaler,

Timer Value = besaran waktu yang akan ditanamkan pada mikrokontroler

α = nilai bit timer yang digunakan, bisa 8-bit atau 16-bit.

jika 8-bit maka α = 255

jika 16-bit maka α = 65535

Page 14: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 14

PROSEDUR PERCOBAAN

Prosedur Umum

1. Secara keseluruhan beberapa percobaan dibawah ini menggunakan wizard sehingga kode di-

generate secara otomatis.

2. Atur semua kode program yang ada kemudian diletakkan sesuai pada bagian-bagian kode hasil

generate wizard.

3. Pastikan hasil compile tidak menghasilkan error dengan menekan F9.

4. Selanjutnya download program tersebut ke MS-16 via USB dengan menekan Shift-F9 dan

tekan tombol Program the chip.

5. Amati dan analisa hasilnya kemudian catat hasil tersebut sebagai laporan sementara.

Prosedur Khusus

Percobaan ke :

1. Generate delay 1 detik TIMER1 menggunakan mode normal

Page 15: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 15

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Flip-flop using TIMER1 mode Normal

Version : 1.0

Date : 2013-03-11

Author : Taufiqurrahman

Company : D206 - EEPIS

Comments: Timer 1 overflow interrupt service routine

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

#define BarLED PORTD

int kondisi=0;

// Timer 1 overflow interrupt service routine

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

// Reinitialize Timer 1 value

TCNT1H=0xD5;

TCNT1L=0xD0;

// Place your code here

if(kondisi){

BarLED=0xff;

kondisi=0;

}else{

BarLED=0x00;

kondisi=1;

}

}

// 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=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

Page 16: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 16

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

PORTB=0x00;

DDRB=0x00;

// 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=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

PORTD=0x00;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 10.800 kHz

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: On

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x05;

TCNT1H=0xD5;

TCNT1L=0xD0;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

Page 17: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 17

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

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

TIMSK=0x04;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

// Global enable interrupts

#asm("sei")

while (1)

{

// Place your code here

};

}

2. Generate delay 1 detik TIMER0 menggunakan mode normal match compare output

dengan cara yang sama seperti percobaan 1, buat interval waktu sebesar 100µS didapatkan

nilai Compare = 76H

Page 18: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 18

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Flip-flop using TIMER0 mode Normal

Version : 1.0

Date : 2013-03-11

Author : Taufiqurrahman

Company : D206 - EEPIS

Comments: Timer 0 mode normal compare match output interrupt

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

#define BarLED PORTD

int kondisi=0,looping=0;

// Timer 0 output compare interrupt service routine

interrupt [TIM0_COMP] void timer0_comp_isr(void)

{

// Place your code here

TCNT0 = 0x00; //jika sudah compare match maka set awal lagi (autoreload)

if(looping++ == 10000){

if (kondisi){

BarLED=0xAA;

kondisi=0;

}else{

BarLED=0x55;

kondisi=1;

}

looping=0;

}

}

// 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=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

Page 19: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 19

PORTB=0x00;

DDRB=0x00;

// 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=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

PORTD=0x00;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: 1382.400 kHz

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x02;

TCNT0=0x00;

OCR0=0x76;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 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: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

Page 20: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 20

MCUCR=0x00;

MCUCSR=0x00;

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

TIMSK=0x02;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

// Global enable interrupts

#asm("sei")

while (1)

{

// Place your code here

};

}

3. Generate delay 1 detik TIMER1 menggunakan mode CTC (Clear Timer on Compare Match

Interrupt)

Mekanisme berikut ini adalah membuat delay 1 detik pada timer 1. Agar memperoleh waktu

yang lebih presisi, didapatkan nilai Compare A = 2A2FH

Page 21: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 21

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

This program was produced by the

CodeWizardAVR V2.03.4 Standard

Automatic Program Generator

Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.

http://www.hpinfotech.com

Project : Flip-flop using TIMER1 mode CTC

Version : 1.0

Date : 2013-03-11

Author : Taufiqurrahman

Company : D206 - EEPIS

Comments: Timer 1 mode CTC interrupt

Chip type : ATmega16

Program type : Application

Clock frequency : 11.059200 MHz

Memory model : Small

External RAM size : 0

Data Stack size : 256

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

#include <mega16.h>

#define LED_DETIK PORTD

// Timer 1 output compare A interrupt service routine

interrupt [TIM1_COMPA] void timer1_compa_isr(void)

{

// Place your code here

LED_DETIK=~LED_DETIK;

}

// 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=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

PORTB=0x00;

DDRB=0x00;

// 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=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

Page 22: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 22

PORTD=0x00;

DDRD=0xFF;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 10.800 kHz

// Mode: CTC top=OCR1A

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: On

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x0D;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x2A;

OCR1AL=0x2F;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// 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=0x10;

// Analog Comparator initialization

// Analog Comparator: Off

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

ACSR=0x80;

SFIOR=0x00;

Page 23: Modul Avr-eepis 2013 Ver1.3

Modul Praktikum Mikrokontroler– 3 Elka –D3 2013

taufiq[at]eepis[minus]its[dot]edu 23

// Global enable interrupts

#asm("sei")

while (1)

{

// Place your code here

};

}

TUGAS 1. Hitung konstanta prescaler tiap percobaan.

2. Hitung waktu sesungguhnya setiap nilai heksa yang dihasilkan untuk tiap mode timer

berdasarkan rumus yang ada.

3. Cuplik register pada timer hasil generator program

4. Catat pemakaian memory flash yang dipakai dari masing-masing percobaan.

5. Kemudian jelaskan setiap baris terhadap syntax dari semua percobaan diatas kemudian

tarik kesimpulan.

6. Buat laporan resmi berdasarkan hasil pengamatan.!