rencana program kegiatan pembelajaran...

132

Upload: others

Post on 25-Jan-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

RENCANA PROGRAM KEGIATAN PEMBELAJARAN SEMESTER

(RPKPS)

MIKROKONTROLER

( 5223-141-3 )

OLEH:

TARYUDI, ST.,MT

RPKPS INI DIBIAYAI OLEH DANA PNBP

FAKULTAS TEKNIK UNIVERSITAS NEGERI JAKARTA

TAHUN ANGGARAN 2012,

BERDASAR SURAT PERINTAH KERJA DENGAN

NOMOR : 267/UN39.5.FT/PP/2012

TANGGAL : 04 SEPTEMBER 2012

PROGRAM STUDI

TEKNIK ELEKTRONIKA

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS NEGERI JAKARTA

TAHUN 2012

RENCANA PROGRAM KEGIATAN

PEMBELAJARAN SEMESTER

(RPKPS)

MIKROKONTROLER

( 5223-141-3 )

Oleh:

Taryudi, ST.,MT

RPKPS INI DIBIAYAI OLEH DANA PNBP

FAKULTAS TEKNIK UNIVERSITAS NEGERI JAKARTA

TAHUN ANGGARAN 2012,

BERDASAR SURAT PERINTAH KERJA DENGAN

NOMOR : 267/UN39.5.FT/PP/2012

TANGGAL : 04 SEPTEMBER 2012

JURUSAN TEKNIK ELEKTRO

FAKULTAS TEKNIK

UNIVERSITAS NEGERI JAKARTA

TAHUN 2012

I. RENCANA PROGRAM KEGIATAN PEMBELAJARAN SEMESTER

(RPKPS)

1.1 Rencana Pembelajaran

A. Nama Matakuliah : Mikrokontroler

B. Kode Matakuliah/SKS : 52231413 / 3 SKS

C. Semester : Genap

D. Deskripsi Matakuliah :

Matakuliah Mikrokontroler ini mempelajari arsitektur,

pemrograman, interfacing dan aplikasi mikrokontroler yang

digunakan untuk mengendalikan perangkat input/output dasar

pada sistem kendali elektronika. Metode pembelajaran

dilakukan melalui ceramah, diskusi, studi kasus, penugasan dan

praktikum serta membuat projek akhir semester.

Gambar peta kompetensi dapat dilihat pada Gambar 1.

E. Tujuan Pembelajaran:

Tujuan Pembelajaran dari matakuliah ini adalah agar

Mahasiswa memahami arsitektur, pemrograman, interfacing

dan aplikasi mikrokontroler yang digunakan untuk

mengendalikan perangkat input/output dasar pada sistem

kendali elektronika.

F. Outcome Pembelajaran:

Outcome Pembelajaran dari matakuliah ini adalah agar

mahasiswa mampu:

1. Menjelaskan konsep dasar Mikrokontroler

2. Menjelaskan perangkat keras Mikrokontroler

3. Mengidentifikasi Organisasi dan Arsitektur Mikrokontroler

4. Memahami pemrograman Mikrokontroler

5. Melakukan pemrograman mikrokontroler

6. Melakukan interfacing mikrokontroler dengan perangkat

luar

7. Merencanakan dan membuat sistem kendali elektronika

berbasis mikrokontroler.

8. Melakukan pengujian dan analisa dari sistem kendali

elektronika berbasis mikrokontroler

G. Alokasi waktu Kegiatan

No Jenis Kegiatan Jumlah Jam Keterangan

1 Kuliah Teori 14 pertemuan x 2

sks x 50 menit Pemberian materi

2 UTS dan UAS 2 x 90 menit

Pelaksanaan pengujian materi yang

telah diberikan pada waktu kuliah

dan tugas terstruktur

3 Tugas

terstruktur 100 menit/minggu

Pemberian tugas sesuai dengan

materi terkait

4 Praktikum 10 x 1 sks x 100

menit Pelaksanaan praktikum

5 Projek Akhir

Semester

4 x 1 sks x 100

menit Pelaksanaan pembuatan tugas

6 Ujian Projek

akhir semester

2 x 1 sks x 100

menit

Pelaksanaan ujian dan presentasi

hasil projek akhir semester

Gambar 1. Peta kompetensi pelaksanaan matakuliah Mikrokontroler

Memahami perangkat keras Mikrokontroler, membuat

sistem minimum

mikrokontroler

Melakukan Pemrograman

mikrokontroler

Mampu merancang dan

membuat perangkat

lunak sistem kendali

elektronika berbasis

mikrokontroler

Mengidentifikasi Organisasi

dan Arsitektur Mikrokontroler

Memahami teknik pemrograman Mikrokontroler

Merancang dan membuat

interfacing mikrokontroler

Mampu Merancang dan

membuat perangkat

keras sebuah sistem

kendali elektronika

berbasis Mikrokontroler

Mampu Membuat sebuah system

kendali elektronika berbasis

Mikrokontroler

Melakukan pengujian dan analisis

hasil projek akhir

Memahami Konsep

dasar Mikrokontroler

H. Jadwal Kegiatan Mingguan

Minggu

ke

Tatap

Muka Topik

Subtansi Metode

1 1 Kontrak kuliah Penyampaian SAP, Silabus, dan

Penilaian Ceramah

Diskusi

2 2

Memahami konsep

dasar

mikrokontroler

1. Pendahuluan

2. Sistem Mikroprosesor dan

Mikrokontroler

Ceramah

Diskusi

3 3

Menjelaskan

Perangkat keras

Mkrokontroler

1. Konfigurasi pin Mikrokontroler

2. Sistem Minimum Mikrokontroler

Ceramah

Diskusi

Demo alat

4 4

Menjelaskan

Organisasi dan

Arsitektur

Mikrokontroler

1. CPU

2. Memori

3. Input/ Output Device

Ceramah

Diskusi

Demo alat

5-6 5-6

Menjelaskan teknik

pemrograman

mikrokontroler

1. Bahasa Pemrograman yang

digunakan pada mikrokontroler

2. Teknik pemrograman

mikrokontroler

Ceramah

Diskusi

Demo alat

Praktikum

7-8 7 – 8

Melakukan

Pemrograman

mikrokontroler

1. Menggunakan text editor

program

2. Menggunakan Simulator

mikrokontroler

3. Menggunakan emulator dan

Downloader Mikrokontroler

4. Membuat projek sistem

minimum mikrokontroler

Ceramah

Diskusi

Demo alat

Praktikum

9 9 Ujian Tengah Semester Essay

10

10

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

1. Mengakses perangkat luar

(modul LED)

2. Mengendalikan Relay

elektromekanik

Ceramah

Diskusi

Praktikum

11 11

Melakukan

interfacing

mikrokontroler

dengan perangkat

1. Mengakses LCD dot metrik Ceramah

Diskusi

Praktikum

I. Kriteria Penilaian

1. Penilaian Kuliah Teori

No. Komponen Penilaian Kriteria Penilaian Bobot (%)

1. Kehadiran Persentase kehadiran minimal 80 % ,

jika kurang dari 80 %, maka tidak

diijinkan mengikuti ujian akhir

semester

10

2. Tugas Mandiri Ketepatan waktu pengumpulan

tugas, dan kemampuhan menjawab

soal-soal yang diberikan pada tugas

mandiri

10

2. Tugas Kelompok Ketepatan waktu pengumpulan

tugas, dan kemampuhan menjawab

soal-soal yang diberikan pada tugas

kelompok

10

3. Ujian Tengah Semester Kemampuhan menjawab soal ujian

yang diberikan

30

4. Ujian Akhir Semester Kemampuhan menjawab soal ujian

yang diberikan

40

Jumlah 100

luar

12 12

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

1. Mengakses perangkat input dasar

(saklar push button)

2. Mengakses keypad matrik 3x4

Ceramah

Diskusi

Praktikum

Tugas Projek

13 13

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

1. Mengakses ADC (Analog to

Digital Converter)

2. Komunikasi serial

Ceramah

Diskusi

Praktikum

Tugas Projek

14-15

14 – 15

Merencanakan dan

membuat sistem

kendali elektronika

berbasis

mikrokontroler.

1. Disain thermometer Digital

2. Merancang dan membuat Projek

akhir berbasis Mikrokontroler

Ceramah

Diskusi

Tugas projek

Presentasi

16 16 Ujian Akhir semester Essay

2. Penilaian Praktikum

No. Komponen Penilaian Kriteria Penilaian Bobot (%)

1. Kehadiran Persentase kehadiran minimal 80

% , jika kurang dari 80 %, maka

tidak diijinkan mengikuti ujian

akhir semester

10

2. Tugas Mandiri Ketepatan waktu pengumpulan

tugas, dan kemampuhan

menjawab soal-soal yang

diberikan pada tugas mandiri

20

2. Tugas Kelompok Ketepatan waktu pengumpulan

tugas, dan kemampuhan

menjawab soal-soal yang

diberikan pada tugas kelompok,

serta Laporan Praktikum

30

4. Projek akhir semester Kemampuhan merancang,

membuat dan mempresentasikan

projek akhir semester

40

Jumlah 100

3. Penilaian akhir Perkuliahan

No. Komponen Penilaian Kriteria Penilaian Bobot (%)

1. Hasil akhir Perkuliahan

Teori

Nilai akhir perkuliahan Teori

50

2. Hasil akhir perkuliahan

Praktikum

Nilai Akhir Perkuliahan

Praktikum

50

Jumlah 100

Untuk dinyatakan menguasai kompetensi, mahasiswa harus mampu

mengumpulkan minimal 60 poin (C ) yang merupakan penggabungan antara hasil

belajar Teori dan Praktikum. Poin tersebut dinyatakan dalam angka dan huruf

sebagai berikut:

4. Tabel Penguasaan Kompetensi

No Nilai Tingkat Penguasaan

1 A 80- 100

4 B 70 – 79

7 C 60 – 69

8 D 50-59

J. Daftar Pustaka

1. Hintz, K.J., Tabak, D., 1992. Microcontrollers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New York.

2. MacKenzie, I. Scott, 1995, The 8051 Microcontroller, 2nd edition,

Prentice Hall, Inc., New Jersey.

3. Senccer Yeralan, Ashutosh Ahluwalia, 1995, Programming and

Interfacing The 8051 Microcontroller, Addison-Wesley, California,

New York.

4. Pratomo Andi, “Panduan Praktis Pemrograman AVR

Microkontroler AT90S2313”, Andi , Yogjakarta, 2005.

5. Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri

ATMega8535 Simulasi, Hardware, dan Aplikasi”, Andi ,

Yogjakarta, 2006.

6. M.Ary Heryanto, Wisnu Adi P, ” Pemrograman Bahasa C untuk

Mikrokontroler ATMega 8535” Andi, Yogyakarta, 2008.

1.2 Monitoring dan Umpan balik

Monitoring dan umpan balik untuk mata kuliah ini dijabarkan dalam

bentuk tabulasi di bawah yang berisi tentang perencanaan setiap

minggu, jenis kegiatan selaras dengan target yang hendak dicapai.

Mgg

Ke

Jenis kegiatan Target Sumber

verifikasi

1

Menyampaikan

Pengantar Kuliah

Dan Kontrak

kuliah

a. Mengetahui metode pembelajaran dan

penilaian

b. Mengetahui SILABUS dan SAP

perkuliahan

c. Mengetahui sumber belajar

GBPP/

SILABUS

2

Menjelaskan

konsep dasar

mikrokontroler

a. Memahami konsep dasar mikrokontroler

b. Membedakan antara Mikrokontroler dan

mikroprosesor

Kunci

jawaban

Latihan soal

3

Menjelaskan

Perangkat keras

Mkrokontroler

a. Mengetahui perangkat keras

mikrokontroler

b. Mengetahui konfigurasi dan fungsi setiap

pin/kaki mikrokontroler

c. Merancang sistem minimum

mikrokontroler

Kunci

jawaban

Latihan soal

4

Menjelaskan

Organisasi dan

Arsitektur

Mikrokontroler

a. Mengetahui organisasi dan arsitektur

Memori Mikrokontroler

b. Mengetahui pemetaan memori pada

mikrokontroler

Kunci

jawaban

Latihan soal

5-6

Menjelaskan

teknik

pemrograman

mikrokontroler

a. Mengetahui teknik pemrograman

mikrokontroler dan mempraktekanya

b. Membuat sistem minimum mikrokontroler

dan downloader

Kunci

jawaban

Latihan soal

7 – 8

Melakukan

Pemrograman

mikrokontroler

a Mampu memprogram mikrokontroler untuk

sistem pengendali elektronika sederhana.

b. Mengetahui trouble shooting program yang

dibuat

Kunci

jawaban

Latihan soal

9 UTS Nilai rata-rata Mahasiswa mencapai 70 atau B Kunci

Jawaban

UTS

10

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

a. Mampu membuat dan mengendalikan

(modul LED)

b. Mampu Mengendalikan Relay

elektromekanik

Hasil

rancangan

dan hasil

praktikum

11

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

a. Mengetahui cara mengakses LCD dot

matrik 2x16

b. Mampu mengendalikan LCD dot metrik

sebagai display

Hasil

rancangan

dan hasil

praktikum

12

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

a. Mampu Mengakses perangkat input dasar

(saklar push button)

b Mampu Mengakses keypad matrik 3x4

Hasil

rancangan

dan hasil

praktikum

13

Melakukan

interfacing

mikrokontroler

dengan perangkat

luar

a Mampu Mengakses ADC (Analog to

Digital Converter)

b Mampu membuat Komunikasi serial

antara dua buah mikrokontroler

Hasil

rancangan

dan hasil

praktikum

14 – 15

Merencanakan

dan membuat

sistem kendali

elektronika

berbasis

mikrokontroler.

a Mampu merancang thermometer Digital

b Mampu Merancang dan membuat Projek

akhir berbasis Mikrokontroler

c Presentasi Hasil projek akhir

Hasil

rancangan

dan hasil

praktikum

16 Ujian Akhir

Semester

Nilai rata-rata Mahasiswa mencapai 70% Kunci

jawaban

BATANG TUBUH BAHAN AJAR

PRAKATA

Puji syukur dipanjatkan kepada Tuhan Yang Maha Esa, karena atas berkat

dan rahmatNya, buku ajar “ Mikrokontroler” ini dapat diselesaikan dengan baik.

Buku ini disusun dengan tujuan agar dapat digunakan sebagai buku pegangan

Mahasiswa, khususnya Program Studi Teknik Elektronika, Jurusan Teknik

Elektro, Universitas Negeri Jakarta, ketika mengambil Mata kuliah

Mikrokontroler. Buku ini juga penulis dedikasikan bagi siapa saja yang berminat

untuk mengembangkan bidang otomasi industri yang menjadi salah satu cabang

ilmu dari Teknik Elektronika.

Kami menyadari bahwa, tanpa bantuan dan bimbingan dari berbagai pihak,

sangatlah sulit bagi kami untuk menyelesaikannya. Oleh karena itu, kami

mengucapkan terima kasih kepada:

(1) Dekan Fakultas Teknik yang telah menyetujui penelitian ini;

(2) Ketua Jurusan Teknik Elektro, dan Kaprodi Teknik Elektronika yang telah

memfasilitasi kegiatan penelitian ini; dan

(3) Rekan-rekan Dosen Jurusan Teknik Elektro, khususnya di lingkup Kelompok

Bidang Ilmu (KBI) Instrumentasi Kendali.

Segala kritik dan saran untuk kesempurnaan buku ini sangat penulis harapkan.

Semoga buku ajar ini dapat dimanfaatkan oleh mahasiswa Jurusan Teknik Elektro

FT-UNJ khususnya dan pembaca sekalian.

Jakarta, Desember 2012

Penulis,

DAFTAR ISI

HALAMAN JUDUL................................................………...................... i

PRAKATA...................................….......................................................... ii

DAFTAR ISI ............................................................................................... iii

DAFTAR GAMBAR.................................................................……........... vii

DAFTAR TABEL......................................................................... ....... viii

BAB 1 PENGANTAR MIKROKONTROLER……................................ 1

A. Kompetensi Dasar .............................................................................. 1

B. Media Pembelajaran ........................................................................... 1

1.1 Sistem Mikrokontroler................................................................... 1

1.1.1. Central Processing unit ....................................................... 2

1.1.2. Memori .............................................................................. 3

1.1.3. Input/Output ...................................................................... 3

1.1.4. Bus ...................................................................................... 4

1.2 Mikroprosesor dan Mikrokontroler................................................ 5

1.3 Mikrokontroler ............................................................................. 6

1.4. Perkembangan Mikrokontroler ................................................... 7

1.5. Arsitektur RISC dan CISC Dalam Mikrokntroler ...................... 8

1.5.1. RISC ( Reduce Instruction Set Computer ) ........................ 8

1.5.2. CISC (Complex Instruction Set Computer) ....................... 9

C. Latihan Soal ........................................................................................ 10

D. Ringkasan ............................................................................................ 10

E. Sumber Belajar .................................................................................... 11

BAB 2 MIKROKONTROLER AVR ...............……................................ 12

C. Kompetensi Dasar .............................................................................. 12

D. Media Pembelajaran ........................................................................... 12

2.1 Perkembangan Mikrokontroler AVR ............................................ 12

2.2 Sejarah Singkat Mikrokontroler AVR ........................................... 13

2.3. Varian Mikrokontroler AVR ........................................................ 17

C. Latihan Soal ........................................................................................ 18

D. Ringkasan ............................................................................................ 18

E. Sumber Belajar .................................................................................... 19

BAB 3 MIKROKONTROLER ATMega 8535……................................ 20

A. Kompetensi Dasar .............................................................................. 20

B. Media Pembelajaran ........................................................................... 20

3.1 Mikrokontroler ATMega 8535...................................................... 20

3.2 Konfigurasi Pin ATMega 8535 .................................................... 21

3.3. Bagian –bagian Mikrokontroler ATMega 8535 ......................... 25

3.4. Arsitektur Mikrokontroler AVR .................................................. 27

3.5. Komunikasi serial dengan UART ............................................... 29

C. Latihan Soal ........................................................................................ 32

D. Ringkasan ............................................................................................ 32

E. Sumber Belajar .................................................................................... 33

v

BAB 4 SISTEM MINIMUM MIKROKONTROLER

ATMega 8535................................................................................ 34

A. Kompetensi Dasar .............................................................................. 34

B. Media Pembelajaran ........................................................................... 34

4.1 Pendahuluan .................................................................................. 34

4.2. Skematik Sistem Minimum ATMega 8535 ................................. 34

4.2.1 Skematik Regulator ............................................................. 34

4.2.2. Skematik LCD pada Sistem Minimum ATMega 8535 ....... 35

4.2.3. Skematik Sistem Minimum ATMega 8535 ......................... 35

4.3. Cara Pembuatan ............................................................................ 36

4.4. Menguji sistem minimum ATMega 8535 .................................... 37

C. Latihan Soal ........................................................................................ 38

D. Ringkasan ............................................................................................ 38

E. Sumber Belajar .................................................................................... 38

BAB 5 PEMROGRAMAN MIKROKONTROLER

ATMega 8535................................................................................ 39

A. Kompetensi Dasar .............................................................................. 39

B. Media Pembelajaran ........................................................................... 39

5.1 Perangkat bantu pemrograman

Mikrokontroler................................................................................ 39

5.2. Bahasa Pemrograman C ............................................................... 40

5.2.1 Dasar Pemrograman ............................................................ 40

5.2.2. Tipe data .............................................................................. 40

5.2.3. Konstanta ............................................................................. 41

5.2.4. Variabel ............................................................................... 41

5.2.5. Deklarasi Variabel ............................................................... 42

5.2.6. Program kontrol ................................................................... 43

5.2.6.1. Percabangan ......................................................... 43

5.2.6.2. Percabangan switch .............................................. 43

5.2.7. Looping ................................................................................ 44

5.2.7.1. For......................................................................... 44

5.2.7.2. While ..................................................................... 45

5.2.7.3 Do ...While ............................................................ 45

5.2.8. Array .................................................................................. 46

5.2.9. Fungsi ................................................................................ 46

5.2.9.1. Fungsi dengan nilai balik .................................... 47

5.2.9.2. Fungsi tanpa nilai balik ....................................... 47

5.2.9.3. Pernyataan return ................................................. 48

5.2.9.4. Parameter dalam sebuah fungsi ........................... 48

5.2.9.5. Include ................................................................. 49

5.3. Code Vision AVR ........................................................................ 49

5.3.1. Code Vision Chip Programmer .......................................... 50

5.3.2. Pemrograman Code Vision AVR ........................................ 51

C. Latihan Soal ........................................................................................ 60

D. Ringkasan ............................................................................................ 60

E. Sumber Belajar .................................................................................... 60

BAB 6 MENGAKSES PERANGKAT OUTPUT SEDERHANA

( LED) ..................................................................................... 61

A. Kompetensi Dasar .............................................................................. 61

B. Media Pembelajaran ........................................................................... 61

6.1. Diagram skematik ........................................................................ 61

6.2. Memprogram Mikrokontroler ...................................................... 65

C. Latihan Soal ........................................................................................ 69

D. Ringkasan ............................................................................................ 69

E. Sumber Belajar .................................................................................... 70

BAB 7 MENGAKSES PERANGKAT INPUT SEDERHANA ............. 71

A. Kompetensi Dasar .............................................................................. 71

B. Media Pembelajaran ........................................................................... 71

7.1. Membuat program sederhana pada ATMega 8535 .................... 71

7.2. Penekanan tombol ........................................................................ 77

C. Latihan Soal ........................................................................................ 79

D. Ringkasan ............................................................................................ 79

E. Sumber Belajar .................................................................................... 79

BAB 8 MENGAKSES ANALOG TO DIGITAL CONVERTER PADA

MIKROKONTROLER ATMEGA 8535..................................... 80

A. Kompetensi Dasar .............................................................................. 80

B. Media Pembelajaran ........................................................................... 80

8.1. Analog to Digital ........................................................................ 80

8.2. Mode Operasi ............................................................................... 81

8.3. Register Pengendali ADC ............................................................ 81

8.4. Contoh Aplikasi ADC Pada ATMega8535 ................................. 86

8.4.1. Skematik ............................................................................. 86

8.4.2. Flowchart ............................................................................ 87

8.4.3. Program ............................................................................... 88

C. Latihan Soal ........................................................................................ 92

D. Ringkasan ............................................................................................ 92

E. Sumber Belajar .................................................................................... 92

BAB 9 MENGAKSES TIMER DAN COUNTER PADA

MIKROKONTROLER ATMEGA 8535..................................... 93

A. Kompetensi Dasar .............................................................................. 93

B. Media Pembelajaran ........................................................................... 93

9.1. Timer dan Counter........................................................................ 93

C. Latihan Soal ........................................................................................ 99

D. Ringkasan ............................................................................................ 99 E. Sumber Belajar .................................................................................... 100

BAB 10 MENGGUNAKAN PULSE WIDTH MODULATION (PWM)

MIKROKONTROLER ATMEGA 8535..................................... 101

A. Kompetensi Dasar .............................................................................. 101

B. Media Pembelajaran ........................................................................... 101

10.1. Pulse Width Modulation............................................................ 101

C. Latihan Soal ........................................................................................ 109

D. Ringkasan ............................................................................................ 109

E. Sumber Belajar .................................................................................... 109

DAFTAR PUSTAKA ...............................................……....................... 110

DAFTAR TABEL

Halaman

Tabel 2.1 Keluarga Mikrokontroler AVR

Tabel 2.2 Beberapa seri mikrokontroler AVR buatan ATMEL

Tabel 3.1 Fungsi khusus Port B

Tabel 3.2 Fungsi khusus Port D

Tabel 6.1 Konfigurasi Pin Port

13

18

23

24

64

DAFTAR GAMBAR

Halaman

Gambar 1.1 Diagram blok mikrokomputer dasar

Gambar 1.2 Diagram blok Mikroprosesor

Gambar 1.3 Diagram blok Mikrokomputer

Gambar 1.4 Diagram blok Mikrokontroler

Gambar 3.1 konfigurasi pin ATMega 8535

Gambar 3.2 Diagram blok Mikrokontroler AVR

Gambar 3.3 Register status UART

Gambar 3.4 Register kendali UART

Gambar 4.1 Diagram skematik regulator

Gambar 4.2 Skematik LCD pada Sismin ATMega 8535

Gambar 4.3 Skematik system minimum ATMega 8535

Gambar 4.4 Contoh system minimum ATMega 8535

Gambar 4.5 Downloader

Gambar 5.1 Programmer setting pada CodevisionAVR

Gambar 5.2 Create New file

Gambar 5.3 Code Wizard confirm

Gambar 5.4 Code Wizard chip type selection

Gambar 5.5 Code Wizard port seting

Gambar 5.6 Window code vision AVR

Gambar 5.7 Contoh program pada code vision AVR

Gambar 5.8 System properties

Gambar 5.9 Device manager

Gambar 5.10 Setting programer

Gambar 5.11 Setting port programer

Gambar 5.12 Setting chip

Gambar 5.13 Proses downloading program

Gambar 6.1 Skematik diagram system minimum mikrokontroler

Gambar 6.2 Konfigurasi pin ATMega 8535

Gambar 6.3 Flow chart digram pemrograman mikrokontroler

Gambar 7.1 Skematik diagram system minimum mikrokontroler

Gambar 7.2 Create new file

Gambar 7.3 Confirm

Gambar 7.4 Code wizardAVR

Gambar 7.5 Code wizard setting

Gambar 7.6 Window codevision AVR

Gambar 7.7 Window codevision AVR

Gambar 7.8 Window codevision AVR

Gambar 8.1 Register ADMUX

Gambar 8.2 ADCSRA

Gambar 8.3 Register ADC

1

2

6

7

21

28

30

31

35

35

36

37

37

50

51

51

51

52

53

55

56

57

58

58

58

59

62

62

65

73

73

73

74

74

75

75

76

81

82

83

Gambar 8.4 SFIOR

Gambar 8.5 Skematik diagram volt meter digital

Gambar 9.1 Skematik diagram counter dengan AVR ATMega 8535

Gambar 10.1 Diagram PWM

Gambar 10.2 Skematik diagram system pengendali motor berbasis

PWM mikrokontroler ATMega 8535

Gambar 10.3 Driver motor DC

Gambar 10.4 Flowchart diagram system

84

86

94

102

102

103

104

BAB 1

Pengantar Mikrokontroler

A. Kompetensi Dasar :

1. Memahami konsep dasar sebuah sistem mikrokomputer

2. Memahami perkembangan mikrokontroler

3. Memahami perbedaan arsitektur RISC dan CISC

B. Media Pembelajaran

1. Handout materi ajar

2. Komputer dan LCD Proyektor

1.1. Sistem Mikrokomputer

Sebuah system Mikrokomputer sederhana merupakan sebuah sistem yang

terdiri atas beberapa bagian utama yaitu Central processing unit (CPU),

Memori, I/O device, dan Bus. seperti diperlihatkan pada Gambar 1.1 berikut

Gambar 1.1 Diagram blok mikrokomputer dasar

Setiap bagian dari sebuah system komputer mempunyai fungsi dan peranan

penting dalam melaksanakan tugasnya.

1.1.1 Central Processing Unit

Central processing unit atau CPU atau mikroprosesor fungsinya

mengontrol jalannya komputer. CPU menangkap (fetch) instruksi yang

dikodekan dalam biner dari memori, menterjemahkannya menjadi sederetan

aksi sederhana dan menyelesaikan aksi tersebut. CPU berisikan arithmetic

logic unit atau ALU, yang dapat melakukan operasi penjumlahan,

pengurangan, OR, AND, invert, atau Ex-OR dalam bentuk biner jika

diinstruksikan untuk melakukanya. CPU juga berisi pencacah program

(address counter) yang digunakan untuk menahan alamat dari instruksi

berikutnya atau data yang akan ditangkap dari memori, register insruksi,

penerjemah instruksi, register pemakaian umum yang digunakan untuk

menyimpan sementara data biner, dan rangkaian yang akan membangkitkan

sinyal kendali bus. Diagram blok sederhana suatu mikroprosesor diperlihatkan

pada Gambar 1.2.

Gambar 1.2 Diagram blok Mikroprosesor

1.1.2 Memori

Unit memori suatu komputer terdiri atas dua jenis yaitu memori primer

(RAM dan ROM) dan memori sekunder yang umumnya berbentuk floppy disk

magnetik, hard disk magnetik, atau optikal laser disk. RAM atau Random

Access Memory yaitu memori yang bisa dibaca atau ditulis secara acak. RAM

datanya akan hilang bila catu dayanya dimatikan. ROM atau Read Only

Memory yaitu memori yang hanya bisa dibaca. Memori ini datanya

dipertahankan walaupun catu dayanya dimatikan. Memori mempunyai dua

fungsi. Fungsi yang pertama menyimpan kode biner yaitu urutan instruksi

yang diinginkan dan komputer melaksanakannya. Fungsi yang kedua

menyimpan data yang dikodekan dalam biner, dengan data itulah komputer

dapat bekerja. Data tersebut misalnya merupakan rekaman daftar barang suatu

pasar swalayan, data pengukuran suhu dan sebagainya.

Yang termasuk memori jenis ROM, antara lain:

1. Programmable ROM (PROM), memori yang dapat diprogram satu

kali, One Time PROM (OTPROM).

2. Erasable Programmable ROM (EPROM), memori yang dapat

diprogram dan dihapus dengan sinar ultra violet. Oleh karena itu biasa

disebut UVPROM

3. Electrically Erasable ROM (EEPROM), memori yang dapat diprogram

dan dihapus secara lektrik.

Kapasitas suatu memori dinyatakan dalam bit atau byte. Satu byte sama

dengan 8 bit. Satu kilo-bit sama dengan 1024 bit. Satu kilo byte sama dengan

1024 byte atau sama dengan 8096 bit. Satu mega-byte sama dengan 1024 kilo-

byte.

1.1.3 Input/Output

Bagian input/output atau I/O memungkinkan komputer untuk mengambil

data dari rangkaian luar atau mengirim data ke rangkaian luar. Perlengkapan

seperti papan ketik, video display terminal, printer, modem semuanya

dihubungkan ke bagian I/O. Ini menjadikan pemakai dan komputer dapat

berkomunikasi satu sama lainnya. Piranti sebenarnya yang digunakan untuk

antarmuka bus komputer dengan perangkat luar sering disebut port. Port pada

komputer fungsinya hanya gerbang penyampai untuk sistem yang ada

disekitarnya. Input port menyampaikan data dari papan ketik, konverter digital

ke analaog atau sumber lain yang akan dibaca oleh komputer di bawah kendali

CPU. Output port digunakan untuk mengirimkan data dari komputer ke

beberapa perlengkapan seperti video display terminal, printer, atau konverter

digital ke analog. Secara phisik port inpu/output sering hanya berupa

kumpulan D-FF yang diparalel, data dilewatkannya jika di-enable-kan oleh

sinyal kontrol dari CPU.

1.1.4 Bus

Untuk berkomunikasi antara CPU, unit memori dan unit input/output

komputer menggunakan bus, yaitu sejumlah saluran paralel yang

menghubungkan elemen-elemen dalam komputer. Dikenal tiga macam bus

yitu address bus, data bus dan control bus. Address bus terdiri atas 16, 20, 24

atau lebih jalur sinyal paralel. Dengan jalur ini CPU mengeluarkan alamat

lokasi memori yang akan ditulis atau dibaca. Jumlah lokasi memori yang

dapat dialamti oleh CPU didasarkan pada jumlah jalur alamat. Jika CPU

mempunyai N jalur alamat maka CPU dapat berhubungan langsung dengan

alamat 2 pangkat N (2N

) lokasi memori. Sebagai contoh CPU dengan 16 jalur

dapat mengalamati 216 atau 65.536 lokasi memori, CPU dengan 20 jalur

alamat dapat mengalamati 220 atau 1.048.576 lokasi dan CPU dengan 24 jalur

alamat dapat mengalamti 224 atau 16.777.216 lokasi. Jika CPU membaca data

dari atau menulis data ke port , alamat port juga dikirimkan pada address bus.

Data bus terdiri atas 8, 16, 32, atau 64 jalur sinyal paralel. Data bus pada

gambar 2-2 ditandai oleh tanda panah ganda (bolak-balik) oleh karena itu

disebut bidirectional. Ini berarti bahwa CPU pada jalur ini dapat membaca

data dari memori atau port I/O dan juga pada jalur ini CPU dapat mengirim

data ke memori atau port I/O. Dalam suatu sistem banyak piranti yang

outputnya disambungkan ke data bus, tetapi hanya satu piranti pada waktu

tertentu yang akan di-enable-kan. Piranti lainnya yang terhubung pada data

bus harus dalam kondisi three-state yaitu kondisi berimpedansi tinggi, sehinga

dapat diambangkan jika piranti tersebut tidak sedang digunakan.

Control bus terdiri atas 4 sampi 13 jalur sinyal paralel. CPU mengirimkan

sinyal pada control bus untuk meng-enable-kan output piranti memori atau

piranti port yang dialamati. Control bus standar antara lain memory read,

memory write, I/O read dan I/O write. Contoh membaca 1 byte data dari

lokasi memori, CPU mengirimkan alamat dari byte data yang diinginkan pada

data bus dan CPU mengirimkan sinyal control memori read pada control bus.

Memori membaca sinyal enable dan piranti memori mengeluarkan data yang

dialamati pada data bus selanjutnya data tersebut dibaca oleh CPU.

1.2. Mikroprosesor dan Mikrokomputer

Ketika berbicara mengenai suatu komputer tentu akan teringat dengan

beberapa istilah yang berhubungan dengannya seperti, minikomputer,

mikrokomputer, mikroprosesor dan mikrokontroler. Istilah-istilah tersebut

terkadang dikaitkan dengan ukuran phisik, memori bahkan jumlah

input/outputnya. Mikroprosesor adalah CPU yang dikemas dalam keping

semikonduktor tunggal. Mikroprosesor merupakan perangkat serbaguna yang

cocok untuk berbagai aplikasi. Bila CPU suatu komputer disusun dalam papan

rangkaian tercetak tunggal disebut dengan minikomputer. Sebuah komputer yang

dibangun dengan mikroprosesor disebut mikrokomputer. Gambar 1.3

memperlihatkan diagram blok suatu mikrokomputer yang terdiri atas CPU (Z-80),

Memori (EPROM dan RAM), dan Input/output (PPI-8255).

Pemilihan input/output dan perangkat memori suatu mikrokomputer tergantung

kepada aplikasi tertentu. Perhatikan Gambar 2.5, input/ouputmya dipilih jenis

programmable peripheral interface (PPI) 8255 yang mampu melayani 3x8

input/output yaitu port-A, port-B dan Port-C. Memori programnya dibangun dari

EPROM dengan kapasitas 8 kilo byte dan memori datanya dibangun dari RAM

dengan kapasitas 8 kilo byte. Perangkat input/output dan memori dalam rangkaian

di atas dapat dikembangkan sesuai dengan kebutuhan.

Gambar 1.3 Diagram blok Mikrokomputer

1.3. Mikrokontroler

Saat ini sangat mudah untuk mendefinisikan mikrokomputer keping

tunggal (single chip microcomputer) atau sering disebut mikrokontroler, yang

mana mikrokontroler merupakan suatu rangkaian terpadu yang berisikan lima

komponen utama suatu komputer. Kelima bagian tersebut meliputi input,

output, memori, ALU, dan unit kontrol. Mikrokomputer keping tunggal

pertama adalah seri 8048 yang dibuat oleh Intel pada tahun 1976. Perbedaan

utama antara mikrokomputer dan mikrokontroler terdapat pada kapabilitas

input/output, kemampuan menangani interupsi, dan himpunan instruksi. Hal

tersebut karena mikrokontroler dirancang khusus untuk berinteraksi langsung

dengan perangkat luar, baik dengan alat pendeteksi atau pengendali. Diagram

blok suatu mikrokontroler diperlihatkan dalam Gambar 1.4.

Gambar 1.4. Diagram blok Mikrokontroler

Dalam gambar tersebut terlihat beberapa bagian seperti CPU, RAM,

ROM, pewaktu (timer), port serial, port paralel dan kendali interupsi dikemas

dalam keping tunggal. Tidak seperti komputer, yang kemampuannya

ditentukan oleh program dan diprogram ulang, mikrokontroler hanya

diprogram permanen sekali untuk suatu tugas tertentu. Perbandingan ini yang

membedakan arsitekturnya dari keduanya. Sistem komputer mempunyai

perbandingan RAM yang lebih besar dibanding ROM, dengan program-

program pengguna (user programs) dieksekusi pada RAM yang berkapasitas

besar, sementara sub-program antarmuka perangkat kerasnya dieksekusi dari

ROM berkapasitas sedang. Dipihak lain yaitu mikrokontroler mempunyai

perbandingan ROM yang lebih besar dibanding RAM. Program kontrol yang

relative besar disimpan di ROM, sementra RAM hanya digunakan untuk

menyimpan data sementara. Oleh karena itu program yang tersimpan di ROM

mikrokontroler secara permanen biasa disebut firmware.

1.4.Perkembangan Mikrokontroler

Sejak tahun 1970-an. Motorola mengeluarkan seri mikrokontroler 6800

yang terus dikembangkan hingga sekarang menjadi 68HC05, 68HC08,

68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor

Z80-nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan

kemudian diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan

mikrokontrolernya yang populer di dunia yaitu 8051, yang karena begitu

populernya maka arsitektur 8051 tersebut kemudian diadopsi oleh vendor lain

seperti Phillips, Siemens, Atmel, dan vendor-vendor lain dalam produk

mikrokontroler mereka. Selain itu masih ada mikrokontroler populer lainnya

seperti, AVR dari Atmel, Basic Stamps, PIC dari Microchip, MSP 430 dari

Texas Instrument dan masih banyak lagi. Selain mikroprosesor dan

mikrokontroler, sebenarnya telah bemunculan chip-chip pintar lain seperti

DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di masa

depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi

semua desain elektronik di dunia sehingga mampu memberikan kemampuan

komputasi yang tinggi serta meminimumkan jumlah komponen-komponen

konvensional.

1.5. Arsitektur RISC dan CISC Dalam Mikrokontroler

Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam,

berdasarkan arsitekturnya:

1.5.1. RISC (Reduced Instruction Set Computer)

Type RISC atau Reduced Instruction Set Computing yang justru lebih

kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya

ada sekitar 30-an instruksi). Merupakan suatu arsitektur komputer atau arsitektur

komputasi modern dengan instruksi-instruksi dan jenis eksekusi yang paling

sederhana.

Karakteristik RISC ada 3 yaitu :

1. Operasi berbentuk dari register-ke register.

2. Penggunaan mode pengalamatan sederhana.

3. Penggunaan format-format instruksi sederhana.

Ciri-ciri RISC

1. Instruksi berukuran tunggal.

2. Ukuran yang umum adalah 4 byte.

3. Jumlah pengalamatan data sedikit.

4. Tidak terdapat operasi yang menggabungkan operasi load/store dengan

operasi aritmatika.

5. Dll.

Contoh dari RISC

1. Komputer vektor,

2. Mikrokontroler AVR.

3. mikroprosesor Intel 960.

4. Itanium (IA64) dari Intel Corporation.

5. PowerPC dan Arsitektur POWER dari International Business Machine.

6. Dll.

1.5.2. CISC (Complex Instruction Set Computing)

Type CISC atau Complex Instruction Set Computing yang lebih kaya

instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255

instruksi) atau sebuah arsitektur dari set instruksi dimana setiap instruksi akan

menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari memory,

operasi aritmetika dan penyimpanan ke dalam memory, semua dalam satu

instruksi.

Karakteristik CISC ada 2 yaitu :

1. Program-program yang dihasilkan menjadi relatif lebih kecil, dan

penggunaan memory akan semakin berkurang.

2. Meminimumkan jumlah perintah yang diperlukan untuk mengerjakan

pekerjaan yang diberikan.

Ciri-ciri CISC

1. Jumlah instruksi banyak.

2. Banyak terdapat perintah bahasa mesin.

3. Instruksi lebih kompleks.

Contoh dari CISC

1. Prosesor System/360.

2. Mikrokontroler AT 89S51

3. Prosesor VAX.

4. Prosesor PDP-11.

5. CPU AMD.

6. Intel x86.

7. Dll.

C. Latihan Soal

1. Jelaskan yang dimaksud dengan mikrokomputer !

2. Jelaskan perkembangan mikrokontroler !

3. Jelaskan perbedaan antara Mikroprosesor dan mikrokontroler !

4. Jelaskan perbedaan arsitektur CISC dan RISC !

D. Ringkasan

1. Mikrokontroler merupakan sebuah single chip mikrokomputer dimana

didalamnya sudah terdapat CPU, Memori, I/O device yang terintegrasi dan

dengan adanya bus data, bus address serta bus control.

2. Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam,

berdasarkan arsitekturnya, yaitu CISC dan RISC

3. Type CISC atau Complex Instruction Set Computing yang lebih kaya instruksi

tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 instruksi)

atau sebuah arsitektur dari set instruksi dimana setiap instruksi akan

menjalankan beberapa operasi tingkat rendah, seperti pengambilan dari

memory, operasi aritmetika dan penyimpanan ke dalam memory, semua dalam

satu instruksi.

4. Type RISC atau Reduced Instruction Set Computing yang justru lebih kaya

fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya

ada sekitar 30-an instruksi). Merupakan suatu arsitektur komputer atau

arsitektur komputasi modern dengan instruksi-instruksi dan jenis eksekusi

yang paling sederhana.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers:

Architecture, Implementation, and Programming,.

McGraw-Hill, Inc., New York.

BAB 2

Mikrokontroler AVR

A. Kompetensi Dasar :

1. Memahami perkembangan mikrokontroler AVR

2. Memahami type-type mikrokontroler AVR

3. Memahami fiture-fiture mikrokontroler AVR

B. Media Pembelajaran

1. Handout materi ajar

2. Komputer dan LCD Proyektor

2.1. Perkembangan Mikrokontroler AVR

Mikrokontroler seri AVR pertama kali diperkenalkan ke pasaran sekitar tahun

1997 oleh perusahaan Atmel, yaitu sebuah perusahaan yang sangat terkenal

dengan produk mikrokontroler seri AT89S51/52-nya yang sampai sekarang masih

banyak digunakan di lapangan. Tidak seperti mikrokontroler seri AT89S51/52

yang masih mempertahankan arsitektur dan set instruksi dasar mikrokontroler

8031 dari perusahaan INTEL.

Mikrokontroler AVR ini diklaim memiliki arsitektur dan set instruksi yang

benar-benar baru dan berbeda dengan arsitektur mikrokontroler sebelumnya yang

diproduksi oleh perusahaan tersebut. Tetapi walaupun demikian, bagi para

programmer yang sebelumnya telah terbiasa dengan mikrokontroler seri

AT89S51/52, dan berencana untuk beralih ke mikrokontroler AVR, maka secara

teknis tidak akan banyak kesulitan yang berarti, hal ini dikarenakan selain konsep

dan istilah-istilah dasarnya hampir sama, pemrograman level assembler-nya pun

relative tidak jauh berbeda.

2.2. Sejarah Singkat Mikrokontroler AVR

Arsitektur mikrokontroler jenis AVR pertamakali dikembangkan pada tahun

1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil

Bogen dan Vegard Wollan. AVR sendiri adalah singkatan dari Alf and Vegard

RISC atau Advanced Virtual RISC dimana RISC adalah Reduced Instruction Set

Computer. Mikrokontroler AVR menggunakan teknologi RISC dimana set

instruksinya dikurangi dari segi ukurannya dan kompleksitas mode

pengalamatannya.

Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi berukuran 16 bit

dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan

mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32 bit

dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin

membutuhkan 12 periode clock.

Keseluruhan seri AVR ini pada dasarnya memiliki organisasi memori dan set

instruksi yang sama (sehingga dengan demikian jika kita telah mahir

menggunakan salah satu seri AVR, untuk beralih ke seri yang lain akan relative

mudah). Perbedaan antara tinyAVR, AVR dan megaAVR pada kenyataannya

hanya merefleksikan tambahan-tambahan fitur yang ditawarkannya saja (misal

adanya tambahan ADC internal pada seri AVR tertentu, jumlah Port I/O serta

memori yang berbeda, dan sebagainya). Diantara ketiganya, megaAVR umumnya

memiliki fitur yang paling lengkap, disusul oleh AVR, dan terakhir tinyAVR.

Tabel 2.1 Keluarga Mikrokontroler AVR

NO

Keluarga

Mikrokontroler AVR

Kelebihan

Mikrokontroler AVR

1. AVR

a.

AT90VC8544

8-Kbyte In-System programmable Flash Program

Memory, 256 byte SRAM, 512 Byte EEPROM, 8-

channel 10-bit A/D.

Up to 4 MIPS throughput at 4 MHz. 3.6 and 5 volt

operation.

b.

AT90S1200

1-Kbyte In-System programmable Flash Program

Memory, 64-Byte EEPROM, 32-Byte Register File.

Up to 12 MIPS

throughput at 12 MHz.

c.

AT90S2313

2-Kbyte In-System programmable Flash Program

Memory, 128 Byte SRAM and EEPROM. Up to 10

MIPS throughput at10 MHz.

d.

AT90S2323

2-Kbyte In-System programmable Flash Program

Memory, 128 Byte SRAM and EEPROM. Up to 10

MIPS throughput of 10 MHz. 5V operation.

3V version: AT90LS2323

e.

AT90S2343

2-Kbyte In-System programmable Flash Program

Memory, 128 Byte SRAM and EEPROM. Up to 10

MIPS throughput of 10 MHz. 5V operation.

3V version: AT90LS2343

2. MEGA AVR

a.

ATmega8

8-Kbyte self-programming Flash Program Memory,

1-Kbyte SRAM, 512 Byte EEPROM, 6 or 8

channel 10-bit A/D. Up to 16 MIPS throughput at

16 MHz. 5V operation.

3V version: ATmega8L

b.

ATmega8515

8-Kbyte self-programming Flash Program Memory,

512 Byte SRAM and EEPROM. Up to 16 MIPS

throughput at 16 MHz. 5V operation. 3V version:

ATmega8515L

c.

ATmega8535

8-Kbyte self-programming Flash Program Memory,

512 Byte SRAM and EEPROM, 8 channel 10-bit

A/D. Up to 16 MIPS throughput at 16 MHz. 5V

operation.

3V version: ATmega8535L

d.

ATmega162

16-Kbyte self-programming flash Program

Memory, 1-Kbyte SRAM, 512 Byte EEPROM,

JTAG interface for on-chipdebug. Up to 16 MIPS

throughput at 16 MHz.

1.8V version: ATmega162V

e.

ATmega16

16-Kbyte self-programming Flash Program

Memory, 1-Kbyte SRAM, 512 Byte EEPROM, 8

channel 10-bit A/D, JTAG interface for on-chip-

debug. Up to 16 MIPS throughput at, 16 MHz. 5V

operation. 3V version: ATmega16L

f.

ATmega32

32-Kbyte self-programming Flash Program

Memory, 2-Kbyte SRAM, 1-Kbyte EEPROM, 8

channel 10-bit A/D, JTAG, interface for on-chip-

debug. Up to 16 MIPS throughput at 16, MHz. 5V

operation. 3V version: ATmega32L

g.

ATmega64

64-Kbyte self-programming Flash Program

Memory, 4-Kbyte SRAM, 2-Kbyte EEPROM, 8

channel 10-bit A/D, JTAG interface for on-chip-

debug. Up to 16 MIPS throughput at16 MHz. 5V operation.

3V version: ATmega64L

h.

ATmega128

128-Kbyte self-programming Flash Program

Memory, 4-Kbyte SRAM, 4-Kbyte EEPROM, 8

channel 10-bit A/D, JTAG interface for on-chip-

debug. Up to 16 MIPS throughput at 16 MHz. 5V

operation. 3V version: ATmega128L

3. LCD AVR

a.

ATmega169

16-Kbyte self-programming Flash Program

Memory, 1-Kbyte SRAM, 512 Byte EEPROM, 8

channel 10-bit A/D, JTAG interface for on-chip-

debug. 4 x 25 Segment LCD driver.

Up to 16 MIPS throughput at 16 MHz. 5V

operation.

3V version: ATmega169L

1.8V version: ATmega169V

4. TINYAVR

a.

ATtiny11

1-Kbyte In-System programmable Flash Program

Memory, 32 byte SRAM. Up to 6 MIPS throughput

at 6 MHz.

b.

ATtiny12

1-Kbyte In-System programmable Flash Program

Memory, 32 Byte SRAM, 64 Byte EEPROM. Up to

12 MIPS throughput at 12 MHz.

c.

ATtiny15L

1-Kbyte In-System programmable Flash Program

Memory, 64 Byte EEPROM, 32 Byte Register File,

4 channel 10-bit A/D.

Up to 1.6 MIPS throughput at 1.6MHz. 3V

operation.

d.

ATtiny26

2-Kbyte In-System programmable Flash Program

Memory, 128 Byte SRAM and EEPROM, 11

channel 10-bit A/D. Universal Serial Interface.

High Frequency PWM. Up to 16 MIPS

throughputat 16 MHz. 5V operation.

3V version: ATtiny26L

e.

ATtiny28L

2-Kbyte In-System programmable flash Program

Memory, 128 Byte SRAM, 32 Byte Register File,

Keyboard interrupt.

Up to 4 MIPS throughput at 4 MHz. 3V operation.

1.8V version: ATtiny28V

5. USB AVR

a.

AT43USB320A

512 Byte SRAM, Full Speed USB, 3 Function

Endpoints, 4 Hub Ports. Up to 12 MIPS throughput

at 12 MHz. 5V operation.

b.

AT43USB325E/M

16-Kbyte EEPROM or Mask ROM, 512 Byte

SRAM, Full Speed, USB, 4 Function Endpoints, 4

Hub Ports, 5 LED Driver. Up to 12 MIPS

throughput at 12 MHz. 5V operation.

c. AT43USB325 16-Kbyte Mask ROM, 512 Byte SRAM, Full Speed

USB, 3 Function Endpoints, 2 Hub Ports, 4 LED

Driver. Up to 12 MIPS throughput at 12 MHz. 5V

operation.

24-Kbyte Mask ROM, 1-Kbyte SRAM, Low-Full

d.

AT43USB351M

Speed USB, 5 Function Endpoints. Up to 24 MIPS

throughput at 24 MHz. 5V operation.

e.

AT43USB353M

24-Kbyte Mask ROM, 1-Kbyte SRAM, Full Speed

USB, 4 Function, Endpoints, 2 Hub Ports. Up to 24

MIPS throughput at 24 MHz. 5V operation

f.

AT43USB355E/M

24-Kbyte EEPROM or Mask ROM, 1-Kbyte

SRAM, Full Speed, USB, 4 Function Endpoints, 2

Hub Ports. Up to 12 MIPS throughput at 12 MHz.

5V operation.

g.

AT76C711

Full Speed USB to Fast Serial Asynchronous

Bridge.

6.. Secure AVR

a.

AT90SC19236R

192-Kbyte Mask ROM, 36-Kbyte EEPROM, 4-

Kbyte RAM. 3-5V operation.

b.

AT90SC19264RC

192-Kbyte Mask ROM, 64-Kbyte EEPROM, 6-

Kbyte RAM, Crypto Engine. 3-5V operation.

c.

AT90SC25672R

256-Kbyte Mask ROM, 72-Kbyte EEPROM, 6-

Kbyte RAM. 3-5V operation.

d.

AT90SC320856

32-Kbyte Mask ROM, 8-Kbyte Flash, 56-Kbyte

EEPROM, 1.5-Kbyte RAM. 3-5V operation.

e.

AT90SC3232CS

32-Kbyte Flash, 32-Kbyte EEPROM, 3-Kbyte

RAM, Crypto Engine. 3-5V operation.

f.

AT90SC4816R/RS

48-Kbyte Mask ROM, 16-Kbyte EEPROM, 1.5-

Kbyte RAM. 3-5V operation

g. AT90SC6404R 64-Kbyte Mask ROM, 4-Kbyte EEPROM, 2-Kbyte

RAM. 3-5V operation

h. AT90SC6432R 64-Kbyte Mask ROM, 32-Kbyte EEPROM, 2-

Kbyte RAM. 3-5V operation

i.

AT90SC6464C

64-Kbyte Flash, 64-Kbyte EEPROM, 3-Kbyte

RAM, Crypto Engine. 3-5V operation. USB

version: AT90SC6464C-USB

j. AT90SC9608RC 96-Kbyte Mask ROM, 8-Kbyte EEPROM, 3-Kbyte

RAM, Crypto Engine. 3-5V operation.

k. AT90SC9616RC 96-Kbyte Mask ROM, 16-Kbyte EEPROM, 3-

Kbyte RAM, Crypto Engine. 3-5V operation.

l. AT90SC9636R 96-Kbyte Mask ROM, 36-Kbyte EEPROM, 3-

Kbyte RAM.

3-5V operation.

m. AT97SC3201 Trusted Computing Platform Compliant Security

Processor, On-Chip Secure Key Storage, 33 MHz

LPC Interface.

3.3V operation

7. DVD AVR

a.

AT78C1501

DVD/CD Interface Controller, ATAPI Compatible,

Ultra DMA Support at 66 MB/sec.

b.

AT78C1502

DVD Servo Controller, On-Chip Debugger

Monitor. Up to 120 MIPS throughput at 40 MHz.

3V and 5V operation.

8. RF AVR

a.

AT86RF401

11-19 MHz, 2-Kbyte In-System programmable

Flash Program, Memory, 128 Byte SRAM and

EEPROM. 2V operation.

9. FPGA AVR

a.

AT94K05AL

4-16 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, JTAG

interface for on-chip-debug, 5K FPGA, Gates. 3V

operation.

b.

AT94K10AL

20-32 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, JTAG

interface for on-chip-debug, 10K FPGA

Gates. 3V operation.

c.

AT94K40AL

20-32 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, JTAG

interface for on-chip-debug, 40K FPGA Gates. 3V

operation.

d.

AT94S05AL

4-16 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, 256 Byte

EEPROM, JTAG interface for on-chip-debug, 5K

FPGA Gates. 3V operation.

e.

AT94S10AL

20-32 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, 512 Byte

EEPROM, JTAG interface for on-chip-debug, 10K

FPGA Gates. 3V operation.

f.

AT94S40AL

20-32 Kbyte In-System programmable Flash

Program Memory, 4-16 Kbyte SRAM, 1-Kbyte

EEPROM, JTAG interface for on-chip-debug, 40K

FPGA Gates. 3V operation

2.3 Varian Mikrokontroler AVR

Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas,

namun kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang

relatif tidak berbeda. Tabel dibawah ini membandingkan beberapa seri

mikrokontroler AVR buatan Atmel.

Tabel 2.2 Beberapa seri mikrokontroler AVR buatan Atmel

C. Latihan Soal

C. Latihan Soal

1. Jelaskan perkembangan mikrokontroler AVR!

2. Jelaskan keunggulan mikrokontroler AVR dibanding dengan mikrokontroler

jenis lainya!

3. Jelaskan parameter apa yang dapat dijadikan pertimbangan saudara pada saat

memilih salah satu type mikrokontroler AVR yang akan digunakan sebagai

pengendali pada sebuah sistem kendali elektronika. !

D. Ringkasan

1. Mikrokontroler seri AVR pertama kali diperkenalkan ke pasaran sekitar tahun

1997 oleh perusahaan Atmel, yaitu sebuah perusahaan yang sangat terkenal

dengan produk mikrokontroler seri AT89S51/52-nya yang sampai sekarang

masih banyak digunakan di lapangan. Tidak seperti mikrokontroler seri

AT89S51/52 yang masih mempertahankan arsitektur dan set instruksi dasar

mikrokontroler 8031 dari perusahaan INTEL.

Seri Flash

(kbytes)

RAM

(bytes)

EEPROM

(kbytes)

Pin

I/O

Timer

16-bit

Timer

8-bit

UART PWM ADC

10-

bit

SPI ISP

ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya

ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya

ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya

ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya

ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya

ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya

ATtiny12 1 - 0.0625 6 - 1 - - - - Ya

ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya

ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya

ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya

2. Mikrokontroler AVR ini diklaim memiliki arsitektur dan set instruksi yang

benar-benar baru dan berbeda dengan arsitektur mikrokontroler sebelumnya

yang diproduksi oleh perusahaan tersebut. Tetapi walaupun demikian, bagi

para programmer yang sebelumnya telah terbiasa dengan mikrokontroler seri

AT89S51/52, dan berencana untuk beralih ke mikrokontroler AVR, maka

secara teknis tidak akan banyak kesulitan yang berarti, hal ini dikarenakan

selain konsep dan istilah-istilah dasarnya hampir sama, pemrograman level

assembler-nya pun relative tidak jauh berbeda.

3. Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun

kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang relatif

tidak berbeda. Tabel dibawah ini membandingkan beberapa seri

mikrokontroler AVR buatan Atmel.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan ketiga.

2. Buku : Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri

ATMega8535 Simulasi, Hardware, dan Aplikasi”, Andi ,

Yogjakarta, 2006.

BAB 3

Mikrokontroler ATMega 8535

A. Kompetensi Dasar :

1. Mampu menjelaskan fiture mikrokontroler ATMega 8535

2. Memahami konfigurasi pin Mikrokontroler ATMega 8535

3. Memahami organisasi dan arsitektur mikrokontroler ATMega 8535

B. Media Pembelajaran

1. Handout materi ajar

2.Modul latih Mikrokontroler ATMega 8535

3. Komputer dan LCD Proyektor

3.1. Mikrokontroler Atmega 8535

ATmega8535 adalah mikrokontroler CMOS 8-bit daya-rendah berbasis

arsitektur RISC. Kebanyakan instruksi dikerjakan pada satu siklus clock,

ATmega8535 mempunyai throughput mendekati 1 MIPS per MHz, hal ini

membuat ATmega8535 dapat bekerja dengan kecepatan tinggi walaupun dengan

penggunaan daya rendah.

Arsitektur Mikrokontroler ATmega8535 memiliki beberapa fitur atau

spesifikasi yang menjadikannya sebuah solusi pengendali yang efektif untuk

berbagai keperluan. Fitur-fitur tersebut antara lain:

1. Saluran I/O sebanyak 32 buah, yang terdiri atas Port A, B, C dan D

2. ADC (Analog to Digital Converter) dengan resolusi 10-bit sebanyak 8

saluran melalui Port A

3. Tiga buah Timer/Counter dengan kemampuan perbandingan

4. CPU yang terdiri atas 32 register

5. Watchdog Timer dengan osilator internal

6. SRAM sebesar 512 byte

7. Memori Flash sebesar 8 kb dengan kemampuan Read While Write

8. Unit Interupsi Internal dan Eksternal

9. Port antarmuka SPI untuk mendownload program ke flash

10. EEPROM sebesar 512 byte yang dapat diprogram saat operasi

11. Antarmuka komparator analog

12. Port USART untuk komunikasi serial

3.2. Konfigurasi Pin ATMega8535

Mikrokontroler ATMega8535 mempunyai jumlah pin sebanyak 40 buah,

dimana 32 pin digunakan untuk keperluan port I/O yang dapat menjadi pin

input/output sesuai konfigurasi. Pada 32 pin tersebut terbagi atas 4 bagian (port),

yang masing-masingnya terdiri atas 8 pin. Pin-pin lainnya digunakan untuk

keperluan rangkaian osilator, supply tegangan, reset, serta tegangan referensi

untuk ADC. Untuk lebih jelasnya, konfigurasi pin ATMega8535 dapat dilihat

pada Gambar 3.1.

(XCK/T0) PB0 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

31

30

29

28

27

26

25

24

23

22

21

40

39

38

37

36

35

34

33

32

(T1) PB1

(INT2/AIN0) PB2

(SS) PB4

(MOSI) PB5

(MISO) PB6

(SCK) PB7

RESET

VCC

GND

XTAL2

XTAL1

(RXD) PD0

(TXD) PD1

(INT0) PD2

(INT1) PD3

(OC1B) PD4

(OC1A) PD5

(ICP) PD6

(0C0/AIN1) PB3

PA0 (ADC0)

PA1 (ADC1)

PA2 (ADC2)

PA3 (ADC3)

PA4 (ADC4)

PA5 (ADC5)

PA6 (ADC6)

PA7 (ADC7)

AREF

GND

AVCC

PC7 (TOSC2)

PC6 (TOSC1)

PC5

PC4

PC3

PC2

PC1 (SDA)

PC0(SCL)

PD7 (OC2)

Gambar 3.1 Konfigurasi Pin ATmega8535

Berikut ini adalah susunan pin-pin dari ATMega8535;

VCC merupakan pin yang berfungsi sebagai pin masukkan catu daya

GND merupakan pin ground

Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC

Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu Timer/Counter, Komparator Analog, dan SPI

Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu TWI, Komparator Analog, dan Timer Oscilator

Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu Komparator Analog, Interupsi Iksternal dan komunikasi serial

USART

Reset merupakan pin yang digunakan untuk mereset mikrokontroler

XTAL1 dan XTAL2 merupakan pin masukkan clock eksternal (osilator

menggunakan kristal, biasanya dengan frekuensi 11,0592 MHz).

Berikut adalah penjelasan fungsi tiap kaki.

1. Port A

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan

internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat

memberi arus 20 mA dan dapat mengendalikan display LED secara

langsung. Data Direction Register port A (DDRA) harus disetting terlebih

dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin

memfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1

jika sebagai output. Selain itu, kedelapan pin port A juga digunakan untuk

masukan sinyal analog bagi A/D converter.

2. Port B

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan

internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat

memberi arus 20 mA dan dapat mengendalikan display LED secara

langsung. Data Direction Register port B (DDRB) harus disetting terlebih

dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin

memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1

jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi

alternatif khusus seperti yang dapat dilihat dalam Tabel 3.1

Tabel 3.1 Fungsi Khusus Port B

Port Pin Fungsi Khusus

PB0 T0 = timer/counter 0 external counter input

PB1 T1 = timer/counter 0 external counter input

PB2 AIN0 = analog comparator positive input

PB3 AIN1 = analog comparator negative input

PB4 SS = SPI slave select input

PB5 MOSI = SPI bus master output / slave input

PB6 MISO = SPI bus master input / slave output

PB7 SCK = SPI bus serial clock

3. Port C

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan

internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat

memberi arus 20 mA dan dapat mengendalikan display LED secara

langsung. Data Direction Register port C (DDRC) harus disetting terlebih

dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin

memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1

jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga

memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2.

4. Port D

Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan

internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat

memberi arus 20 mA dan dapat mengendalikan display LED secara

langsung. Data Direction Register port D (DDRD) harus disetting terlebih

dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin

memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1

jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-

fungsi alternatif khusus seperti yang dapat dilihat dalam Tabel 3.2.

Tabel 3.2 Fungsi Khusus Port D

Port Pin Fungsi Khusus

PD0 RDX (UART input line)

PD1 TDX (UART output line)

PD2 INT0 ( external interrupt 0 input )

PD3 INT1 ( external interrupt 1 input )

PD4 OC1B (Timer/Counter1 output compareB match

output)

PD5 OC1A (Timer/Counter1 output compareA match

output)

PD6 ICP (Timer/Counter1 input capture pin)

PD7 OC2 (Timer/Counter2 output compare match

output)

5. RESET

RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi

masukan low selama minimal 2 machine cycle maka system akan di-reset.

6. XTAL1

XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke

internal clock operating circuit.

7. XTAL2

XTAL2 adalah output dari inverting oscillator amplifier.

8. AVcc

Avcc adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus

secara eksternal terhubung ke Vcc melalui lowpass filter.

9. AREF

AREF adalah kaki masukan referensi bagi A/D Converter. Untuk

operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus

dibeikan ke kaki ini.

10. AGND

AGND adalah kaki untuk analog ground. Hubungkan kaki ini ke GND,

kecuali jika board memiliki anlaog ground yang terpisah.

3.3. Bagian-bagian Mikrokontroler Atmega 8535

Mikrokontroler Atmega 8535 memiliki bagian terpenting seperti Memori

Ram, Rom, Osilator, Timer, Comparator, ADC, PWM, dan lainnya. Konstruksi

ATmega8535 Mikrokontroler ATmega8535 memiliki 3 jenis memori, yaitu

memori program, memori data dan memori EEPROM. Ketiganya memiliki ruang

sendiri dan terpisah.

a. Memori program

ATmega8535 memiliki kapasitas memori progam sebesar 8 Kbyte yang

terpetakan dari alamat 0000h – 0FFFh dimana masing-masing alamat memiliki

lebar data 16 bit. Memori program ini terbagi menjadi 2 bagian yaitu bagian

program boot dan bagian program aplikasi.

b. Memori data

ATmega8535 memiliki kapasitas memori data sebesar 608 byte yang terbagi

menjadi 3 bagian yaitu register serba guna, register I/O dan SRAM. ATmega8535

memiliki 32 byte register serba guna, 64 byte register I/O yang dapat diakses

sebagai bagian dari memori RAM (menggunakan instuksi LD atau ST) atau dapat

juga diakses sebagai I/O (menggunakan instruksi IN atau OUT), dan 512 byte

digunakan untuk memori data SRAM.

c. Memori EEPROM

ATmega8535 memiliki memori EEPROM sebesar 512 byte yang terpisah dari

memori program maupun memori data. Memori EEPROM ini hanya dapat

diakses dengan menggunakan register-register I/O yaitu register EEPROM

Address, register EEPROM Data, dan register EEPROM Control. Untuk

mengakses memori EEPROM ini diperlakukan seperti mengakses data eksternal,

sehingga waktu eksekusinya relatif lebih lama bila dibandingkan dengan

mengakses data dari SRAM.

d. Osilator

Analogi fungsi Kristal Oscillator adalah jantung pada tubuh manusia.

Perbedaannya, jantung memompa darah dan seluruh kandungannya, sedangkan

XTAL memompa data. Dan fungsi rangkaian RESET adalah untuk membuat

mikrokontroler memulai kembali pembacaan program, hal tersebut dibutuhkan

pada saat mikrokontroler mengalami gangguan dalam meng-eksekusi program.

e. Timer

Timer adalah modul dalam hardware yang bekerja untuk menghitung

waktu/pulsa. Timer/Counter merupakan fitur di setiap mikrokontroler yang sangat

banyak peranannya dalam perancangan sebuah sistem. Dengan sebuah timer kita

bisa menunda suatu eksekusi dari suatu perintah, sehingga sistem mikrokontroler

yang berjalan cepat (mungkin dalam orde nano atau mikro detik), dapat sinkron

dengan operator (manusia). Dengan timer pula kita dapat menghitung lebar

pulsa/frekuensi dari suatu sinyal, menghitung kecepatan jatuh suatu benda,atau

kecepatan suatu kendaraan, dengan timer/counter kita dapat menghitung jumlah

mobil yang lewat dalam jalan tol misalnya, dan ada lebih banyak lagi fungsi

timer/counter dalam sebuah mikrokontroler.

Karena fungsinya yang relatif lebih banyak dalam suatu sistem, maka banyak

vendor memasang timer dalam mikrokontroler tidak hanya satu, dengan panjang

data yang tidak hanya 8 bit, tapi juga 16 bit. Dalam mikrokontroler AVR ada

Timer 0 yang berkapasitas 8 bit, dan Timer 1 yang berkapasitas 16 bit. Pada

beberapa jenis AVR juga tersedia Timer2 yang berkapasitas 8 bit (misal

ATMEGA8535).

f. Comparator

Comparator adalah bagian yang dapat membandingkan dua buah input berupa

tegangan yang masuk ke kaki komparator di mikrokontroler.

g. UART

UART (Universal Asynchronous Receive Transmit) adalah jalur komunikasi data

khusus secara serial asynchronous

h. PWM

PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa

i. ADC

ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal

analog dalam range tertentu untuk kemudian dikonversi menjadi suatu nilai digital

dalam range tertentu

j. SPI

SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial

secara serial synchronous.

k. ISP

ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk

dapat diprogram langsung dalam sistem rangkaiannya dengan membutuhkan

jumlah pin yang minimal.

3.4. Arsitektur Mikrokontroler AVR

Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang

memisahkan memori dan bus untuk data dan program, serta sudah menerapkan

single level pipelining. Selain itu mikrokontroler AVR juga

mengimplementasikan RISC (Reduced Instruction Set Computing) sehingga

eksekusi instruksi dapat berlangsung sangat cepat dan efisien. Blok sistem

mikrokontroler AVR dapat dilihat dalam dibawah ini :

Gambar 3.2. Diagram blok mikrokontroler AVR

Salah satu seri mikrokontroler AVR yang banyak menjadi andalan saat ini adalah

tipe ATtiny2313 dan ATmega8535. Seri ATtiny2313 banyak digunakan untuk

sistem yang relatif sederhana dan berukuran kecil. Berikut adalah feature-feature

mikrokontroler seri ATtiny2313.

Kapasitas memori Flash 2 Kbytes untuk program

Kapasitas memori EEPROM 128 bytes untuk data

Maksimal 18 pin I/O

8 interrupt

8-bit timer

Analog komparator

On-chip oscillator

Fasilitas In System Programming (ISP)

Sedangkan ATmega8535 banyak digunakan untuk sistem yang kompleks,

memiliki input sinyal analog, dan membutuhkan memori yang relatif lebih besar.

Berikut adalah feature-feature mikrokontroler seri ATmega8535.

Memori Flash 8 Kbytes untuk program

Memori EEPROM 512 bytes untuk data

Memori SRAM 512 bytes untuk data

Maksimal 32 pin I/O

20 interrupt

Satu 16-bit timer dan dua 8-bit timer

8 channel ADC 10 bit

Komunikasi serial melalui SPI dan USART

Analog komparator

4 I/O PWM

Fasilitas In System Programming (ISP).

3.5. KOMUNIKASI SERIAL DENGAN UART

AVR ATMega8535 memiliki 4 buah register I/O yang berkaitan dengan

komunikasi UART, yaitu UART I/O Data Register (UDR), UART Baud Rate

Register (UBRR), UART Status Register (USR) dan UART Control Register

(UCR).

1. REGISTER DATA I/O UART (UDR)

Proses pengiriman data secara serial dapat dimulai setelah UDR diberi karakter

data. Pada sisi penerima, UART memiliki buffer sehingga UDR dapat dibaca

ketika sebuah data baru sedang digeser masuk.

2. REGISTER BAUD RATE UART (UBRR)

UBRR digunakan untuk menentukan clock yang dibangkitkan oleh baud rate

generator.

Nilai baud rate ditentukan dengan mengisi register UBRR sesuai persamaan 1.1

1*16

baud

fclockUBRR (1.1)

Misal, diinginkan baud rate sebesar 9600 bps. Dengan kristal 11.059.200 Hz

maka register UBRR akan bernilai 71.

3. REGISTER STATUS UART (USR)

Register USR menyimpan berbagai flag status seperti interupsi, overflow, dan

framing error. Susunan bit register USR ditunjukkan dalam Gambar 3.2.

bit 7 6 5 4 3 2 1 0

RXC TXC UDRE FE OR - - -

Gambar 3.3. Register status UART

Penjelasan bit-bit register USR adalah sebagai berikut

1. RXC (Receive Complete) ; bernilai 1 otomatis setelah UART menerima

sebuah karakter secara lengkap,

2. TXC (Transmit Complete) ; bernilai 1 jika sebuah karakter telah selesai

digeser keluar dari register geser kirim,

3. UDRE (UART Data Register Empty) ; bernilai 1 jika UDR kosong,

4. FE (Framing Error) ; bernilai 1 jika Stop Bit tidak diterima dengan benar,

yaitu jika Stop Bit terbaca 0,

5. OR (Overrun) ; bernilai 1 jika ada karakter yang dipindahkan dari register

geser terima ke UDR sebelum karakter yang diterima sebelumnya dibaca.

4. REGISTER KONTROL UART (UCR)

Register UCR mengendalikan berbagai fungsi penerima dan pengirim, serta

interupsinya. Susunan bit register UCR ditunjukkan dalam Gambar 3.3.

Bit 7 6 5 4 3 2 1 0

RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8

Gambar 3.5 Register kendali UART

Penjelasan bit-bit register UCR adalah sebagai berikut

1. RXCIE (Receive Complete Interrupt Enable) ; jika bernilai 1, UART akan

membangkitkan interupsi ketika sebuah karakter selesai diterima,

2. TXCIE (Transmit Complete Interrupt Enable) ; bernilai 1 setelah karakter

terkirim dan membangkitkan interupsi,

3. UDRIE (UART Data Register Empty Interrupt Enable) ; jika bernilai 1,

sebuah interupsi terjadi ketika UDR kosong (bit UDRE bernilai 1),

4. RXEN (Receiver Enable) ; jika bernilai 1, penerima UART diaktifkan dan

pin RxD menjadi pin input yang terhubung ke UART,

5. TXEN (Transmitter Enable) ; jika bernilai 1, pengirim UART diaktifkan dan

pin TxD menjadi pin output dari pengirim UART,

6. CHR9 (9-Bit Characters) ; jika bernilai 1, ukuran karakter yang dikirim

menjadi 9-bit, dan bit ke-9 berada pada bit RXB8 dan TXB8,

7. RXB8 (Receive Data Bit 8) ; jika CHR9 bernilai 1, bit ini adalah bit ke-9 dari

data yang diterima,

8. TXB8 (Transmit Data Bit 8) ; jika CHR9 bernilai 1, bit ini adalah bit ke-9

dari data yang dikirim, jadi TXB8 harus diisi sebelum pengiriman.

C. Latihan soal

1. Jelaskan fiture mikrokontroler ATMega 8535!

2. Jelaskan bagaimana setting untuk penggunaan Port Input/Output

Mikrokontroler ATMega 8535 !

3. Jelaskan perbedaan mikrokontroler ATMega 8535 dan ATtiny 2313

4. Jelaskan beberapa fungsi masing-masing kaki mikrokontroler ATMega 8535

D. Ringkasan

1. ATmega8535 adalah mikrokontroler CMOS 8-bit daya-rendah berbasis

arsitektur RISC. Kebanyakan instruksi dikerjakan pada satu siklus clock,

ATmega8535 mempunyai throughput mendekati 1 MIPS per MHz, hal ini

membuat ATmega8535 dapat bekerja dengan kecepatan tinggi walaupun

dengan penggunaan daya rendah.

2. Arsitektur Mikrokontroler ATmega8535 memiliki beberapa fitur atau

spesifikasi yang menjadikannya sebuah solusi pengendali yang efektif untuk

berbagai keperluan. Fitur-fitur tersebut antara lain:

Saluran I/O sebanyak 32 buah, yang terdiri atas Port A, B, C dan D

ADC (Analog to Digital Converter) dengan resolusi 10-bit sebanyak

8 saluran melalui Port A

Tiga buah Timer/Counter dengan kemampuan perbandingan

CPU yang terdiri atas 32 register

Watchdog Timer dengan osilator internal

SRAM sebesar 512 byte

Memori Flash sebesar 8 kb dengan kemampuan Read While Write

Unit Interupsi Internal dan Eksternal

Port antarmuka SPI untuk mendownload program ke flash

EEPROM sebesar 512 byte yang dapat diprogram saat operasi

Antarmuka komparator analog

Port USART untuk komunikasi serial

3. Mikrokontroler AVR sudah menggunakan konsep arsitektur Harvard yang

memisahkan memori dan bus untuk data dan program, serta sudah

menerapkan single level pipelining. Selain itu mikrokontroler AVR juga

mengimplementasikan RISC (Reduced Instruction Set Computing) sehingga

eksekusi instruksi dapat berlangsung sangat cepat dan efisien

E. Sumber Belajar

1. Handout : PowerPoint pertemuan keempat.

2. Buku : Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri

ATMega8535 Simulasi, Hardware, dan Aplikasi”, Andi ,

Yogjakarta, 2006.

BAB 4

Sistem Minimum

Mikrokontroler ATMega 8535

A. Kompetensi Dasar :

1. Memahami cara membuat sistem minimum mikrokontroler ATMega 8535.

2. Mampu merencanakan sebuah system minimum mikrokontroler ATMega

8535.

3. Mampu melakukan pengujian system minimum mikrokontroler ATMega

8535.

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih Mikrokontroler ATMega 8535.

3. Komputer dan LCD Proyektor

4.1. Pendahuluan

Sistem minimum mikrokontroler ATMega 8535 merupakan serangkaian

komponen pendukung mikrokontroler sebagai syarat minimum sebuah

mikrokontroler dapat dioperasikan dan diaplikasikan sebagai pengendali. Syarat

tersebut yaitu: Power supply syatem, signal Clock, dan Reset system. Berikut ini

adalah rangkaian system minimum mikrokontoler ATMega 8535.

4.2. Skematik Sistem Minimum ATMega 8535

4.2.1. Skematik Regulator

Dalam rangkaian system minimum, dibutuhkan rangkaian regulator untuk

menstabilkan tegangan supply pada mikrokontroler agar tidak terjadi

kerusakan pada rangkaian tersebut.

Gambar 4.1 Diagram Skematik Regulator

4.2.2. Skematik LCD pada Sistem Minimum ATMega 8535

Jika pada rangkaian system minimum dibutuhkan tampilan display berupa

LCD dot matrik yang berfungsi untuk menampilkan karakter huruf atau

angka maka pada Gambar 4.2 berikut ini adalah skematiknya: LCD 16x2

diletakkan pada port D

Gambar 4.2 skematik LCD pada sistem minimum ATMega 8535

4.2.3. Skematik Sistem Minimum ATMega 8535

Berikut adalah skematik diagram system minimum ATMega 8535

Gambar 4.3 Skematik system minimum ATMega 8535

4.3. Cara pembuatan

Pembuatan sistem minimum mikrokontroler dapat dimulai dari pembuatan pcb

layout komponen menggunakan bantuan peangkat lunak pembuatan pcb. Setelah

semua rangkaian dibuat dalam sebuah layout pcb, langkah berikutnya adalah:

1. cetaklah layout tersebut dan kemudian pindahkan pada PCB untuk proses

penyablonan.

2. Kemudian setelah penyablonan larutkan PCB yang telah tercetak gambar

layout pada cairan ferry clorid sampai lapisan logam yang tidak terkena

sablon menjadi larut.

3. Bersihkan tinta sisa penyablonan dengan tiner atau cairan lainnya.

4. Amplas PCB tersebut agar lebih bersih

5. Cek kembali jalur pada PCB menggunakan AVOmeter, apakah masih ada

jalur yang tidak sempurna, seperti jalur yang terputus atau jalur yang

tersambung dengan jalur lain yang tidak di inginkan.

6. Siapkan komponen-kompenen yang telah disediakan

7. Pasang komponen tersebut pada PCB sesuai tata letak komponen.

8. Solder komponen tersebut.

9. Sistem Minimum ATMega siap di uji

Gambar 4.5 Contoh sistem minimum ATMega 8535

4.4. Menguji Sistem Minimum ATMega 8535

Untuk menguji system minimum yang sudah dibuat, dapat mengikuti langkah

berikut:

1. siapkanlah sebuah downloader, fungsi downloader ini untuk

mentransfer program ke Sistem Minimum yang program tersebut telah

kita buat di software pemrograman computer.

Gambar 4.6 downloader

2. buatlah sebuah program kemudian dlakukan pen-downloa-tan (dibahas

di BAB V)

3. berikan tegangan sumber 5 volt DC pada rangkaian system minimum,

apakah sismin tersebut bekerja, jika tidak cek kembali jalur rangkaian

pada layout PCB dan komponennya

C. Latihan Soal

1. Jelaskan yang syarat bekerjanya sebuah sistem minimum mikrokontroler!

2. Jelaskan cara penggunaan sistem minimum mikrokontroler dalam aplikasinya!

3. Jelaskan cara pembuatan sistem minimum mikrokontroler dan pengujianya!

D. Ringkasan

1. Sistem minimum mikrokontroler ATMega 8535 merupakan serangkaian

komponen pendukung mikrokontroler sebagai syarat minimum sebuah

mikrokontroler dapat dioperasikan dan diaplikasikan sebagai pengendali.

Syarat tersebut yaitu: Power supply syatem, signal Clock, dan Reset system.

Berikut ini adalah rangkaian system minimum mikrokontoler ATMega 8535.

2. Pembuatan system mikrokontroler dimulai dari pembuatan skematik diagram,

kemudian perancangan layout PCB menggunakan bantuan perangkat lunak,

kemudian merealisasikannya dengan memasang komponen dan kemudian

melakukan pengujian pada system minimum tersebut dan mencoba melakukan

download program sederhana pada mikrokontroler.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan keempat.

2. Buku : Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri

ATMega8535 Simulasi, Hardware, dan Aplikasi”, Andi ,

Yogjakarta, 2006.

BAB 5

Pemrograman Mikrokontroler

ATMega 8535

A. Kompetensi Dasar :

1. Mengetahui perangkat bantu pemrograman mikokontroler ATMega 8535.

2. Memahami langkah pemrograman mikrokontroler ATMega 8535

3. Mampu melakukan pemrograman mikrokontroler ATMega 8535

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih mikrokontroler

3. Komputer dan LCD Proyektor

5.1. Perangkat bantu Pemrograman Mikrokontroler

Untuk memprogram mikrokontroler ATMega 8535, dibutuhkan beberapa

peralatan, yaitu sebagai berikut:

1. Sistem Minimum ATMega 8535,

Yang paling utama dalam pemrograman mikrokontroler adalah Sistem

Minimum ATMega 8535. Pada BAB IV telah dibahas bagaimana cara

pembuatannya

2. Downloader

Downloader merupakan perangkat keras yang berfungsi untuk mentransfer

program yang telah dikompilasi menjadi bahasa mesin ke Sistem Minimum

ATMega 8535.

3. PC/ Komputer

Ini yang paling penting, untuk menjalankan sebuah software tentunya butuh

CPU. CPU ini juga berfungsi sebagai perantara antara downloader dengan

Sistem Minimum ATMega 8535

4. Software pemrograman

Banyak software pemrograman yang bisa digunakan, mulai dari bahas C++

hingga bahasa BASIC, untuk yang satu ini kita menggunakan Bahasa C dengan

software CodeVision AVR, software ini bisa di download dengan mudah di

Internet.

5.2 Bahasa Pemrograman C

5.2.1. Dasar Pemrograman

Program Bahasa C tidak mengenal aturan penulisan di kolom tertentu, jadi

bisa dimulai dari kolom manapun. Namun demikian, untuk mempermudah

pembacaan program dan untuk keperluan dokumentasi, sebaiknya penulisan

bahasa C diatur sedemikian rupa sehingga mudah dan enak dibaca.

5.2.2. Tipe Data

Tipe data merupakan bagian program yang paling penting karena tipe data

mempengaruhi setiap instruksi yang akan dilaksanakan oleh komputer. Misalnya

saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe datanya.

Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika

keduanya bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe

data yang tepat akan membuat proses operasi data menjadi lebih efisien dan

efektif. Dalam bahasa C terdapat lima tipe data dasar, yaitu :

No Tipe Data

Format

Ukuran

keterangan

Range

Minimum

Range

Maksimum

1

2

3

4

5

Char

int

float

long

void

1 byte

2 byte

4 byte

8 byte

0 byte

-128

-32768

1.28E-38

-2147483648

Tidak bertipe

+127

32767

3.4E38

2147483648

Tidak bertipe

5.2.3. Konstanta

Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses

program berlangsung. Konstanta nilainya selalu tetap. Konstanta harus

didefinisikan terlebih dahulu di awal program. Konstanta dapat bernilai integer,

pecahan, karakter dan string. Contoh konstanta : 50; 13; 3.14; 4.50005; ‘A’;

‘Bahasa C’. Selain itu, bahasa C juga menyediakan beberapa karakter khusus yang

disebut karakter escape, antara lain :

\a : untuk bunyi bell (alert)

\b : mundur satu spasi (backspace)

\f : ganti halaman (form feed)

\n : ganti baris baru (new line)

\r : ke kolom pertama, baris yang sama (carriage return)

\v : tabulasi vertical

\0 : nilai kosong (null)

\’ : karakter petik tunggal

\” : karakter petik ganda

\\ : karakter garis miring

5.2.4. Variable

Variabel adalah suatu pengenal (identifier) yang digunakan untuk

mewakili suatu nilai tertentu di dalam proses program. Berbeda dengan konstanta

yang nilainya selalu tetap, nilai dari suatu variable bisa diubah-ubah sesuai

kebutuhan. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram

dengan aturan sebagai berikut :

1. Terdiri dari gabungan huruf dan angka dengan karakter pertama

harus berupa huruf.

2. Bahasa C bersifat case-sensitive artinya huruf besar dan kecil

dianggap berbeda. Jadi antara Metal, dengan metal itu berbeda.

3. Tidak boleh mengandung spasi.

4. Tidak boleh mengandung symbol-simbol khusus, kecuali garis

bawah (underscore), seperti : $, ?, %, #, !, &, *, (, ), -, +, dan

sebagainya.

5. Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai.

Contoh penamaan yang salah : NIM, a, x, nama_mhs, f3098, f4, nilai,

budi, dan sebagainya.

Contoh penamaan variable yang salah : nilai_mahasiswa,

80%mahasiswa, rata-rata, ada spasi, penting, dan sebagainya.

5.2.5. Deklarasi Variable

Deklarasi diperlukan bila kita akan menggunakan pengenal (identifier)

dalam program. Identifier dapat berupa variable, konstanta dan fungsi.

Bentuk umum pendeklarasian suatu variable adalah :

Nama_tipe nama_variabel;

Contoh :

int x;

char y, huruf, nim[10];

float nilai;

double beta;

int array[5][4];

5.2.6. Program Kontrol

5.2.6.1. Percabangan

Perintah if dan if...else...

Perintah if dan if...else... digunakan untuk melakukan operasi

percabangan bersyarat. Sintask penulisan if dapat ditulis sebagai

berikut:

if(<expression>) <statement>;

Sintak Perintah if...else...dapat dituliskan sebagai berikut:

if(<expression>) <statement>;

else<statement2>;

Jika hasil testing expression memberikan hasil tidak nol statement

1 akan dilaksanakan. Sebaiknya permanfaatan perintah if untuk

beberapa kondisi dilakukan menggunakan blok-blok.

5.2.6.2. Percabangan Switch

Perintah percabangan if ... else... dapat digantikan dengan perintah

switch.

Dalam pernyataan switch, sebuah variable secara berurutan diuji

oleh beberapa konstanta bilangan bulat atau konstanta karakter

sintaks perintah switch dapat ditulis sebagai berikut:

Switch(variable)

{

case konstanta _1: statement;

break;

case konstanta_2: statement;

break;

case kostanta_n: statement;

break;

default: statement;

}

Hal-hal yang harus diperhatikan :

1. Switch hanya dapat memeriksa variable terhadap sebuah konstanta,

sedangkan if dapat memeriksa persyaratan perbandingan (lebih

besar, lebih kecil dan seterusnya)

2. Tidak ada dua konstanta yang sama di dalam sebuah switch.

3. Perintah switch jika dimanfaatkan dengan tetap dapat memberikan

hasil yang lebih baik daripada perintah if ... else... yang membentuk

tangga dan / atau bersarang.

5.2.7. Looping

Looping adalah pengulangan satu atau beberapa perintah sampai mencapai

keadaan tertentu. Ada tiga perintah looping, yaitu: for..., while ..., dan do ...

while... sintaks loop for dapat dituliskan sebagai berikut :

5.2.7.1. For

Untuk pengulangan yang melakukan proses increment

for( nama_variable = nilai_awal;syarat_loop;nama_variable ++)

{

Statement_yang_diulang;

}

// untuk pengulangan yang melakukan proses decrement for

(nama_variable=nilai_awal; syarat_loop;nama_variable- -

)

{

Statement_yang_diulang;

}

Syarat_loop adalah pernyataan relasional yang

menyatakan syarat berhentinya pengulangan , biasanya

berkaitan dengan variable control , nama_variable_,

menyatakan proses increment dan proses decrement pada

variable kontrol.

5.2.7.2. While

Perintah while dapat melakukan looping apabila persyaratannya

benar. Sintaks perintah while dapat dituliskan sebagai berikut:

Nama_variable = nilai_awal;

While ( syarat _ loop )

{

Statement _ yang _ akan diulang ;

Nama_ variable ++;

}

5.2.7.3. Do... while

Perintah while terlebih dahulu melakukan pengujian persyaratan

sebelum melakukan looping. Kadang-kadang hal ini menimbulkan

kerepotan-kerepotan yang tidak perlu, misalnya inisialisasi variable

control. Salah satu solusi adalah dengan menggunakan loop do... while.

Nama_varible = nilai_awal

Do

{

Statement _ yang _ akan _ diulang;

Nama_varible ++;

}

While ( syarat_loop)

5.2.8. Array

Array adalah deretan variable yang berjenis sama dan mempunyai nama

yang sama. Setiap anggota deretan (elemen) diberi nomor yang disebut indeks,

dimulai dari indeks nol. Array diatur agar mempunyai lokasi memori yang

bersebelahan dengan alamat terkecil menunjuk elemen array pertama dan alamat

terbesar menunjukan elemen terakhir. Elemen array dapat diakses dengan

menggunakan indeksnya. Bentuk deklarasi array adalah :

Tipe nama_array [ukuran]

Int nilai [100]

Nilai [1] = 10;

Nilai[2] = 3;

Cara penulisan array adalah :

Array satu dimensi :

Tipe_data nama_array [banyak_elemen];

Array dua dimensi :

Tipe_data nama_array [banyak_elemen1] [banyak_elemen2];

5.2.9. Fungsi

Sebuah program yang besar dapat dipecah menjadi beberapa subprogram

yang terpisah yang melakukan fungsi tertentu. Subprogram yang seperti itu

disebut fungsi. Sebagai contoh, sebuah program yang melakukan pengisian data

berulang kali dapat dilengkapi dengan sebuah fungsi yang bertugas untuk

melakukan proses pengisian data. Apabila program hendak melakukan proses

pengisian data, program dapat melakukan pemanggilan fungsi tersebut. Fungsi

adalah sebuah blok yang melingkupi beberapa perintah.

Deklarasi fungsi dapat dilakukan dengan cara:

Tipe nama_fungsi(argumen)

Parameter dalam fungsi dijelaskan sebagai berikut:

Tipe adalah nilai yang dihasilkan oleh fungsi, jika tidak

dinyatakan, hasil fungsi dianggap bertipe integer. Deklarasi tipe

void dapat dimanfaatkan untuk menghindari terjadinya nilai balik.

Argumen adalah deklarasi variable apa saja yang

dibutuhkan fungsi dan bersifat optimal.

5.2.9.1. Fungsi dengan nilai baik

Fungsi memberikan hasil yang berupa nilai.

Fungsi dengan nilai balik ( return value )

Contoh:

Long luas( )

{

Int sisi=10;

Return( sisi*sisi );

}

5.2.9.2. Fungsi tanpa nilai balik

Fungsi tidak memberikan hasil yang berupa nilai melainkan berupa

sebuah proses. Fungsi ini bertipe Void.

Contoh:

Void kedip ( )

{

PortD=0;

portD= 255;

delay _ms (500);

portD=0;

delay_ms (500)

return ;

}

5.2.9.3. Pernyataan return

Pernyataan return dapat menyatakan dua hal :

1. return mengakhiri jalannya fungsi dan kembali ke program

utama.

2. Mengirim nilai balik.

Fungsi dapat ditulis pada akhir program dengan membuat sebuah

prototype function di bagian awal program. Cara menulis fungsi yang

seperti itu memberikan kemudahan kepada programmer untuk membaca

ulang sebuah program yang besar.

5.2.9.4. Parameter dalam sebuah fungsi

Parameter dalam sebuah fungsi dibagi dua yaitu parameter formal

dan parameter actual. Parameter formal adalah parameter pada saat fungsi

itu dibuat, sedangkan parameter actual adalah parameter yang terdapat

pada saat pemanggilan fungsi.

Contoh:

// mendeklarasikan fungsi

Long func(int param_1, int param_2);

// mendefenisikan fungsi , param_1 dan param_ 2 disebut

parameter formal

long func(int param_1,int param_2)

{

return param_1*param_2;

}

// memanggil fungsi dan mengisikan nilai yang dihasilkan ke

sebuah variable x, nilai 20 dan 30 disebut parameter actual

x=func ( 20,30);

// mengisikan parameter _1=20 dan parameter _2=30

//hasil perkaliannya disimpan ke variable x.

5.2.9.5. Include

Include adalah suatu opsional untuk memanggil suatu fungsi.

Contoh :

#include <mega8535.h> // Menggunakan mikrokontroller

ATMega 8535.

#include <delay.h> // Untuk menggunakan fungsi delay.

5.3 CodeVisionAVR

CodeVisionAVR merupakan salah satu software compiler yang khusus

digunakan untuk mikrokontroler keluarga AVR. CodeVisionAVR merupakan

yang terbaik bila dibandingkan dengan compiler-compiler yang lain karena

beberapa kelebihan yang dimiliki oleh CodeVisionAVR antara lain :

Menggunakan IDE (Integrated Development Environment).

Fasilitas yang disediakan lengkap (mengedit program,

mengcompile program, mendownload program) serta tampilannya

terlihat menarik dan mudah dimengerti.

Mampu membangkitkan kode program secara otomatis dengan

menggunakan fasilitas CodeWizardAVR.

Memiliki fasilitas untuk mendownload program langsung dari

CodeVisionAVR dengan menggunakan hardware khusus seperti

Atmel STK500, Kanda System STK200+/300 dan beberapa

hardware lain yang telah didefinisikan oleh CodeVisionAVR.

Memiliki fasilitas debugger sehingga dapat menggunakan software

compiler lain untuk mengecek kode assemblernya, contohnya

AVRStudio.

Memiliki terminal komunikasi serial yang terintegrasi dalam

CodeVisionAVR sehingga dapat membantu pengecekan program

yang telah dibuat khususnya yang menggunakan fasilitas

komunikasi serial UART.

5.3.1. CodeVision Chip Programmer

Salah satu kelebihan dari CodeVisionAVR adalah tersedianya

fasilitas untuk mendownload program ke mikrokontroler yang

terintegrasi sehingga demikian CodeVisionAVR ini selain dapat

berfungsi sebagai software compiler juga dapat berfungsi sebagai

software programmer/downloader.

Jadi kita dapat melakukan proses download program yang telah

dikompile dengan menggunakan software CodeVisionAVR juga.

Gambar 5.1. Programmer setting pada CodeVisionAVR

5.3.2 Pemrograman CodeVision AVR

Berikut ini adalah contoh pemrograman sederhana untuk mengendalikan LED.

Langkah untuk melakukan pemrograman adalah sebagai berikut:

1. Buka software CodeVision AVR

2. Pilih File > New > Project > OK

Gambar 5.2. Create New file

3. Pilih Yes untuk menggunakan Wizard

Gambar 5.3. Code wizard confirm

4. Pilih Mikrokontroleer yang digunakan

Gambar 5.4. Code wizard chip type selection

5. Pada tab Chip, pilih Atmega8535

6. Pada tab Port, setting seperti berikut:

Gambar 5.5. Code wizard Port setting

Pada bagian ini dijelaskan bahwa, bagaimana cara kita mengatur kondisi port

dalam keadaan Input atau output

7. Kemudian Klik pada bar Program > Generate, Save and Exit. Simpan

file sebanyak tiga kali.

8. Akan muncul tampilan program seperti berikut

Gambar 5.6 Window code vision AVR

Tambahkan header #include <stdio.h> dan #include <stdlib.h>

Jika telah muncul tampilan seperti diatas, kita juga bisa mengatur keadaan port

pada pemrograman.

Konfigurasi port I/O pada ATmega8535 dapat dilakukan dengan melakukan

setingan:

Port I/O sebagai input:

Untuk menjadikan port I/O menjadi port input, DDR diset low atau

‘0’. Ketikkan kode

DDRx.0 = 0; // PORTx.0 menjadi port input

Untuk mengambil data dari port input kita gunakan perintah PINx .

Akses byte atau per bit dari port input sama dengan penjelasan pada

DDR dan port output diatas. Contoh dari penggunaan perintah PINB

(port B sebagai input) :

if (PINB.0 == 1)

{

PORTB.2 = 1;

} // jika pin B0 = 1, maka port B2 diberi logic high

Port input dapat di pullup dengan menambahkan perintah PORT

setelah DDR seperti pada contoh dibawah ini:

DDRB.0 = 0;

PORTB.0 = 1; //membuat portb.0 sebagai input dan di pullup

Contoh program kecil:

#include <mega8535.h>

void main()

{

DDRB.0 = 1;

PORTB.0 = 1;

DDRC= 0b00110011;

PORTC.3 = 1;

}

9. Ketikkan program pada bagian void main while(1)

Gambar 5.7 contoh program pada code vision AVR

Program:

#include <mega8535.h>

#include <delay.h>

void main(void)

{

PORTC=0xFF;

DDRC=0xFF;

while (1)

{

PORTC=0b00000001;

delay_ms(500);

PORTC=0b00000010;

delay_ms(500);

PORTC=0b00000100;

delay_ms(500);

PORTC=0b00001000;

delay_ms(500);

PORTC=0b00010000;

delay_ms(500);

PORTC=0b00100000;

delay_ms(500);

PORTC=0b01000000;

delay_ms(500);

PORTC=0b10000000;

delay_ms(500);

}

}

Setelah pemrograman selesai, kita lakukan pengunduhan program dengan cara

berikut:

10. Instal driver installer yang ada

11. Hubungkan DI-USB AVR ISP V2 / DI-USB to Serial TTL ke port USB

computer

12. Pastikan downloader sudah terhubung dengan port USB dari

komputer/laptop dengan membuka Device Manager pada windows:

Klik kanan My Computer> Properties > Hardware > Device Manager:

Gambar 5.8. System properties

Perhatikan yang ditandai oleh panah merah menunjukkan bahwa hardware sudah

terbaca oleh komputer:

Gambar 5.9 Device manager

13. Hubungkan bagian DI-USB AVR ISP V2 / DI-USB ke minsis yang akan

diprogram, dan pastikan jumper downloader dalam posisi running

programming

14. Install CVAVReval yang telah ada

15. Jalankan CVAVR Evaluation yang telah terinstall pada pc anda

16. Pilih menu Setting > Programmer, seperti gambar dibawah ini:

Gambar 5.10 setting programmer

Sesuaikan Communication Port dengan device manager :

Gambar 5.11 Setting port programmer

17. Setelah itu, kembali lagi apada jendela Codevisoin AVR. Pilih menu

Tools>Chip Programmer seperti gambar dibawah ini:

Gambar 5.12 Setting chip

18. Klik program ALL, maka program akan terunduh ke Sistem Minimum

ATmega 8535

Gambar 5.13. Proses downloading program

19. Sistem Minimum ATMega 8535 siap di uji dengan memebri supply 5 Volt

DC

C. Latihan Soal

1. Jelaskan peralatan yang diperlukan untuk memprogram mikrokontroler

ATMega 8535 !

2. Tuliskan perangkat lunak yang dapat digunakan untuk melakukan

pemrograman mikrokontroler dan jelaskan apa perbedaanya.

3. Jelaskan langkah langkah pemrograman mikrokontroler

D. Ringkasan

1. Untuk memprogram mikrokontroler ATMega 8535, dibutuhkan beberapa

peralatan, yaitu sebagai berikut:

a. Sistem Minimum ATMega 8535,

Yang paling utama dalam pemrograman mikrokontroler adalah Sistem

Minimum ATMega 8535.

b. Downloader

Downloader merupakan perangkat keras yang berfungsi untuk mentransfer

program yang telah dikompilasi menjadi bahasa mesin ke Sistem Minimum

ATMega 8535.

c. PC/ Komputer

Untuk menjalankan sebuah software tentunya butuh CPU. CPU ini juga

berfungsi sebagai perantara antara downloader dengan Sistem Minimum

ATMega 8535

d. Software pemrograman yang bisa digunakan, mulai dari bahas C++ hingga

bahasa BASIC, untuk yang satu ini kita menggunakan Bahasa C dengan

software CodeVision AVR, software ini bisa di download dengan mudah di

Internetsatu instruksi.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri

ATMega8535 Simulasi, Hardware, dan Aplikasi”, Andi ,

Yogjakarta, 2006.

BAB 6

Mengakses Perangkat Output

Sederhana (LED)

A. Kompetensi Dasar :

1. Memahami setting port mikrokontroler sebagai output

2. Memahami antarmuka mikrokontroler dengan perangkat output sederhana

3. Mampu melakukan pemrograman mikrokontroler untuk mengakses LED

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih mikrokontroler

3. Komputer dan LCD Proyektor

6.1. Diagram Skematik

Aplikasi sebuah mikrokontroler dapat digunakan untuk mengakses perangkat

output sederhana, salah satunya adalah LED yang dapat langsung dikendalikan

oleh mikrokontroler melalui port Input/Output mikrokontroler yang terlebih

dahulu diseting sebagai terminal output denga cara mengatur register DDR pada

port yang diinginkan. Gambar 6.1 berikut memperlihatkan skematik diagram

Mikrokontroler Sistem minimum Mikrokontroler Atmega8535/16/32

Gambar 6.1 Skematik diagram system minimum mikrokontroler

Konfigurasi Pin ATMega8535 diperlihatkan pada gambar 6.2 berikut ini

Gambar 6.2 Konfigurasi pin Atmega8535

Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin

ATMega8535 sebagai berikut:

1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.

2. GND merupakan pin ground.

3. Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan

ADC.

4. Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu Timer/Counter,komparator analog,dan SPI.

5. Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu TWI,komparator analog dan Timer Oscillator.

6. Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus,

yaitu komparator analog,interupsi eksternal,dan komunikasi serial.

7. RESET merupakan pin yang digunakan untuk me-reset

mikrokontroler.

8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal.

9. AVCC merupakan pin masukan tegangan untuk ADC.

10. AREF merupakan pin masukan tegangan referensi ADC.

Untuk memprogram mikrokontroler dapat menggunakan bahasa assembler

atau bahasa tingkat tinggi yaitu bahasa C.

Port Sebagai Input / Output Digital

Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB,

PortC, dan PortD. Keempat port tersebut merupakan jalur bi-directional

dengan pilihan internal pull-up.

Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan

PINxn. Huruf ‘x’ mewakili nama huruf dari port sedangkan huruf ‘n’

mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit

PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada

I/O address PINx. Bit DDxn dalam register DDRx (Data Direction

Register) menentukan arah pin. Bila DDxn diset 1, maka Px berfungsi

sebagai pin output. Bila DDxn diset 0 maka Px berfungsi sebagai pin

input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input,

maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up,

PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port

adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin

terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila

PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin

port akan berlogika 0.

Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0)

ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi

peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1) atau

kondisi output low (DDxn=1, PORTxn=0). Biasanya, kondisi pull-up

enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi

tidak memperhatikan perbedaan antara sebuah strong high driver dengan

sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register

SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port.

Peralihan dari kondisi input dengan pull-up ke kondisi output low juga

menimbulkan masalah yang sama. Maka harus menggunakan kondisi tri-

state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1,

PORTxn=0) sebagai kondisi transisi.

Tabel 6.1. Konfigurasi Pin Port

Tabel diatas menunjukkan konfigurasi pin pada port-port mikrokontroler.

Bit 2 – PUD = Pull-up Disable, bila bit diset bernilai 1 maka pull-up pada port I/O

akan dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk

menyalakan pull-up (DDxn=0, PORTxn=1).

6.2 Memprogram mikrokontroler

Berikut adalah flowchart diagram untuk melakukan pemrograman pada

mikrokontroler

Gambar 6.3 Flowchart diagram pemrograman mikrokontroler

START

FINISH

Siapkan Komputer, Sistem Minimum (SISMIN),

Downloader, serta perangkat pendukung lain

Buka software CodeVision AVR

Atur konfigurasi software CodeVision AVR

Masukkan list program

Simpan list program

Atur setingan untuk proses download list program ke sismin

Download list program ke sismin, tunggu hingga proses ini selesai

Jalankan program,

apakah sukses?

6.3. CONTOH PROGRAM

Menyalakan Lampu di PORT C

Pada gambar Sistem minimum Mikrokontroler Atmega8535/16/32 diatas,

PORTC dihubungkan denga 8 buah led, dimana 8 led tersebut terhubung common

anoda (anoda bersama), sehingga saat diberikan logika 0 pada port C maka akan

mendapatkan led menyala. Hal ini dikarenakan adanya beda potensial pada kaki

anoda dan katoda. Saat kita memberikan logika 1, maka Led akan padam.

Contoh Programnya:

1. Program Menghidupkan LED di PORTC

//Prog1: Menghidupkan LED di PortC

#include<mega8535.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

PORTC=0xF0; // keluarkan data F0 di PORT C (cat:F0=11110000)

}

2. Program Menghidupkan LED

//Prog2: Menghidupkan LED1,3,5,7

#include<mega8535.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

PORTC=0xAA; // keluarkan data AA(hex) ke PORTC cat:

AA=10101010

}

3. Program LED Berkedip (memakai delay)

//Prog3: LED berkedip pada Port C

#include<mega8535.h>

#include<delay.h>

void main(void)

{

DDRC=0xff; // inisialisasi PORTC sebagi keluaran

while(1) // perulangan yang tidak pernah terpenuhi

{

PORTC=0x00;

delay_ms(1000);

PORTC=0xff;

delay_ms(1000);

}

}

4. Program LED Berjalan

a) //prog4: LED berjalan

#include<mega8535.h>

#include<delay.h>

void main(void)

{

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

char i;

DDRC=0xff;

PORTC=0Xff;

while(1)

{

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

{

PORTC=urutan[i];

delay_ms(500);

}

}

}

Penjelasan :

#include<mega8535.h> : Inisialisasi Mikrokontroller yang dipakai,

memanggil library ( mempersiapkan perintah2 yang dapat

digunakan saat menggunakan mikrokontroler Atmega8535).

#include<delay.h> : memanggil library delay, dimana terdapat

fungsi2 delay/tunda yang dapat kita gunakan, seperti

delay_ms(“konstanta”) =tunda untuk milisecond,

delay_us(“konstanta”) =tunda untuk microsecond.

DDRn : Menyiapkan PORTn sebagai Keluaran (0xff) atau

masukan (0x00)

PORTn : Keluarkan data di PORTn

n : mewakili A,B,C,dan D (PORT)

Karena common Annoda maka pada saat logika “0”, lampu LED akan

menyala. Untuk penggunaan biner, maka penulisannya adalah

0b10101010. Untuk penggunaan Hexa, maka penulisannya adalah 0xaa.

C. Latihan Soal

1. Jelaskan bagaimana cara mengakses perangkat output (LED) menggunakan

mikrokontroler AVR!

2. Buatlah flowchart diagram untuk mengendalikan 8 buah lampu LED yang akan

menyala jika terjadi penekanan tombol pushbutton !

3. Buatlah program untuk mengendalikan 8 buah LED yang dapat menyala secara

bergeser berdasarkan penekanan tombol push button !

D. Ringkasan

Atmega 8535 mempunyai empat buah port yang bernama PortA, PortB,

PortC, dan PortD. Keempat port tersebut merupakan jalur bi-directional dengan

pilihan internal pull-up.

Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan

PINxn. Huruf ‘x’ mewakili nama huruf dari port sedangkan huruf ‘n’ mewakili

nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada

I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn

dalam register DDRx (Data Direction Register) menentukan arah pin. Bila DDxn

diset 1, maka Px berfungsi sebagai pin output. Bila DDxn diset 0 maka Px

berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi

sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan

resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output.

Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin

terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila

PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port

akan berlogika 0.

Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0)

ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan

apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1) atau kondisi output low

(DDxn=1, PORTxn=0). Biasanya, kondisi pull-up enabled dapat diterima

sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan

antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu

masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan

semua pull-up dalam semua port. Peralihan dari kondisi input dengan pull-up ke

kondisi output low juga menimbulkan masalah yang sama. Maka harus

menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high

(DDxn=1, PORTxn=0) sebagai kondisi transisi.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New

York.

BAB 7

Mengakses

Perangkat Input Sederhana

A. Kompetensi Dasar:

1. Memahami perangkat input yang bisa diakses dengan mikrokontroler

2. Mampu merencanakan program untuk mengakses perangkat input

3.Mampu membuat program untuk mengakses perangkat nput sederhana

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih mikrokontroler

2. Komputer dan LCD Proyektor

7.1. MEMBUAT PROGRAM SEDERHANA PADA ATMEGA8535

Basic Input

Pada proyek ini kita akan membuat code sederhana yaitu memberikan nilai

logika 0 atau 1 pada port output ATmega8535. Port I/O akan diset menjadi port

output. Port yang sama dapat dialihkan fungsinya menjadi port input dengan

mengatur DDR (Data Direction Register) dari tiap-tiap port. Layout dari tiap-tiap

port dari ATmega8535 dengan packaging PDIP:

Konfigurasi port I/O pada ATmega8535 dapat dilakukan dengan melakukan

settingan:

Port I/O sebagai input:

Untuk menjadikan port I/O menjadi port input, DDR diset low atau ‘0’. Ketikkan

kode

DDRx.0 = 0; // PORTx.0 menjadi port input

Untuk mengambil data dari port input kita gunakan perintah PINx . Akses byte

atau per bit dari port input sama dengan penjelasan pada DDR dan port output

diatas. Contoh dari penggunaan perintah PINB (port B sebagai input) :

if (PINB.0 == 1)

{

PORTB.2 = 1;

} // jika pin B0 = 1, maka port B2 diberi logic high

Port input dapat di pullup dengan menambahkan perintah PORT setelah DDR

seperti pada contoh dibawah ini:

DDRB.0 = 0;

PORTB.0 = 1; //membuat portb.0 sebagai input dan di pullup

Contoh program kecil:

#include <mega8535.h>

void main()

{

DDRB.0 = 1;

PORTB.0 = 1;

DDRC= 0b00110011;

PORTC.3 = 1;

}

Contoh Aplikasi Akses Input Mikrokontroler Sederhana

a. Skematik Diagram

Input menggunakan saklar pada Port B, dan LED pada port C. Masing-masing

saklar dapat menyalakan satu LED.

Gambar 7.1 Skematik diagram sistem minimum mikrokontroler

b. Pemrograman

1. Buka software CodeVision AVR

2. Pilih File > New > Project > OK seperti pada gambar 7.2

Gambar 7.2 Create New File

3. Pilih Yes untuk menggunakan Wizard

Gambar 7.3 Confirm

4. Pilih Mikrokontroleer yang digunakan

Gambar 7.4 CodeWizardAVR

5. Pada tab Chip, pilih Atmega8535

6. Pada tab Port, setting seperti berikut:

Gambar 7.5 CodeWizard Setting

7. Klik pada bar Program > Generate, Save and Exit. Simpan file

sebanyak tiga kali.

8. Akan muncul tampilan program seperti berikut

Gambar 7.6 Window Codevision avr

Tambahkan header #include <stdio.h> dan #include <stdlib.h>

Gambar 7.7 Window Codevision Avr

9. Ketikkan program pada bagian void main while(1)

Gambar 7.8 Window codevision avr

c. Flow Chart Sistem

START

Inisialisasi Port Input

DDRB.0 = 0;

PORTB.0 = 1;

Saklar Input

ditekan

Lampu LED

menyala

END

7.2 Penekanan Tombol

Port-port mikrokontroler dilengkapi pull up internal, sehingga kondisi default-nya

adalah high. Untuk menjadikan Port ini sebagai input, kita tinggal memberikan

logika high atau membiarkannya dalam kondisi default. Jika kita menginginkan

sebuah masukan terbaca kita sebaiknya menggunakan masukan berupa sinyal

Low. Prinsip kerja Hardware ,saat kita menekan tombol SW maka signal reendah

akan dikrim ke PORTA pada mikrokontroler, Dengan demikian port ini akan

mempunyai logika sesuai dengan penekanan tombol . Kemudian akan memicu

PORTC unruk mengeluarkan data.( Tergantung Programnya bagaimana)

Contoh Programnya:

1. Penekanan Tombol di PORTA

#include<mega8535.h>

void main(void)

{

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTA=PORTC=0xff;

while(1)

{ PORTC=PINA;

};

}

2. Penekanan Tombol di PORTA 2

#include<mega8535.h>

void main(void)

{

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTA=PORTC=0xff;

while(1)

{

if (PINA.0==0) {PORTC=0x5f;}

else if

(PINA.1==0) {PORTC=0xAf;}

else if

(PINA.2==0) {PORTC=0x9f;}

else if

(PINA.3==0) {PORTC=0x6f;}

else

{PORTC=0x0f};

}

}

Penjelasan:

DDRA=0x00; // PORTA diinisialisasikan sebagai masukan

DDRC=PORTB=PORTC=0xff; : PORTC sebagai keluaran.

Data di PORTC dan PORTB adalah tinggi semua ( 0xff ). Biner:

(11111111).

PINB.0 : Kita bisa mengakses langsung ke PIN PORTB

nomor 0 ( catatan: PIN dan PORT berbeda. PIN untuk satu saja

kalau PORT untuk keseluruhan PIN. Satu PORT ada 8 PIN )

While (1) : Dipakai karena agar program mengulang kembali

instruksi yang berada di bawahnya. Ciri perulangan while adalah

dia akan terus melakukan perulangan karena tidaka akan terpenuhi.

Inti penekanan Tombol adalah Membuat sebuah PORT menjadi masukan. Dan

aksinya tentunya akan dilakukan di PORT yang diset sebagai keluaran.

C. Latihan Soal

1. Jelaskan bagaimana menseting port mikrokontroler sebagai input!

2. Buatlah flowchat dari sistem pengendali runing LED menggunakan saklar push

button sebagai input untuk aktivasi runing LED!

3. Gambarkan skematik diagram dari sistem pada soal nomer 2!

D. Ringkasan

1. Konfigurasi port I/O pada ATmega8535 dapat dilakukan dengan melakukan

settingan:

Port I/O sebagai input:

Untuk menjadikan port I/O menjadi port input, DDR diset low atau ‘0’.

Ketikkan kode

DDRx.0 = 0; // PORTx.0 menjadi port input

Untuk mengambil data dari port input kita gunakan perintah PINx . Akses byte

atau per bit dari port input sama dengan penjelasan pada DDR dan port output

diatas

2. Port-port mikrokontroler dilengkapi pull up internal, sehingga kondisi default-

nya adalah high. Untuk menjadikan Port ini sebagai input, kita tinggal

memberikan logika high atau membiarkannya dalam kondisi default. Jika kita

menginginkan sebuah masukan terbaca kita sebaiknya menggunakan masukan

berupa sinyal Low.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedelapan.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New

York.

BAB 8

Mengakses Analog to Digital Pada

Mikrokontroler ATMega 8535

A. Kompetensi Dasar :

1. Memahami konsep dasar Analog to digital converter

2. Mampu menggunakan Analog to digital pada mikrokontroler AVR

3. Mampu membuat program sederhana untuk mengakses analog to

digital pada mikrokontroler AVR

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih mikrokontroler

3. Komputer dan LCD Proyektor

8.1 ANALOG TO DIGITAL

ADC (analog to digital converter) adalah suatu piranti yang digunakan

untuk mengubah isyarat analog menjadi isyarat digital. Disini akan dibahas ADC

yang terdapat pada mikrokontroler (keluarga AVR). Adapun fitur dari ADC pada

ATMega8535 adalah sebagai berikut :

1. Resolusi 10 bit

2. Waktu konversi 65-260 Us

3. 0-VCC range input ADC

4. Memiliki 8 channel input

5. Tiga mode pemilihan tegangan referensi

8.2. MODE OPERASI

1. Mode konversi tunggal (single conversion)

Dalam mode ini, konversi dilakukan dalam sekali pembacaan sampel tegangan

input. Konversi dimulai ketika bit ADSC di-set dan bit ini tetap di-set sampai satu

kali konversi selesai, setelah itubit ini otomatis di clear CPU.

2. Mode konversi kontinu (free running)

Dalam mode ini, konversi dilakukan secara terus menerus (ADC membaca sampel

tegangan input lalu dikonversi dan hasilnya ditampung di register ADCH dan

ADCL secara terus menerus).

8.3. REGISTER PENGENDALI ADC

a. ADC multiplexer selection register (ADMUX)

Gambar 8.1 Register ADMUX

Bit 7 : 6 - REFS1:0 (reference selection bits)

kedua bit ini digunakan untuk memilih tegangan referensi ADC yang akan

digunakan.

REFS1 REFSO Voltage Reference Selection

0 0 AREF, Internal Vref turned off

0 1 AVCC with external capacitor at AREF pin

1 0 Reserved

1 1 Internal 2.56V Voltage Reference with external capacitor at AREF

pin

Bit 5 - ADLAR (ADC Left Adjust Result)

Bit ini digunakan untuk memilih mode data keluaran ADC. Bit ini berakibat pada

format data hasil konversi dalam register ADCH:ADCL

Bit 3 : 0 - MUX3:0 (Analog Channel Selection Bits)

Bit ini digunakan untuk memilih saluran input ADC.

b. ADC Control and Status Register A (ADCSRA)

Gambar 8.2 ADCSRA

Bit 7 - ADEN : ADC Enable

Bit ini digunakan untuk mengaktifkan ADC, bernilai awal 0, jika bernilai 1 maka

ADC aktif.

Bit 6 - ADSC : ADC Start Conversion

Set bit ini untuk memulai konversi sinyal masukan. Ketika konversi telah selesai,

maka otomatis bit ini di clear.

Bit 5 - ADATE : ADC Auto Trigger Enable

Bit ini digunakan untuk mengatur sumber pemicu terjadinya konversi ADC. Jika

bit ini di set maka akan mengaktifkan auto triggering register SFIOR dan

menggunakan mode free running.

Bit 4 - ADIF : ADC Interupt Flag

Bit ini di set ketika konversi ADC telah selesai dan data register telah ter-update.

Bit ini otomatis di clear ketika eksekusi interupsi ADC conversion complete.

Bit 3 - ADIE : ADC Interupt Enable

Bit ini digunakan untuk mengaktifkan interupsi ADC conversion complete.

Bernilai awal 0. Jika di set dan konversi ADC telah selesai, maka

sebuahinterupsi akan dieksekusi sesuai dengan jenis interupsi yang ditulis di

program.

Bit 2 - ADPS2:0 : ADC Prescaler Select Bit

Digunakan untuk menentukan faktor pembagi frekuensi clock CPU yang akan

digunakan.

ADPS2 ADPS1 ADPS0 Division Factor

0 0 0 2

0 0 1 2

0 1 0 4

0 1 1 8

1 0 0 16

1 0 1 32

1 1 0 64

1 1 1 128

Gambar 8.3 Regster ADC

c. ADC Data Register (ADCH:ADCL)

ADCH dan ADCL (masing-masing 8 bit register) merupakan bit

penampung hasil konversi ADC. Format data hasil konversi berdasarkan

setting di ADLAR. Untuk membaca data di register ADCH:ADCL bisa

digunakan perintah lsl, lsr, rol, dan ror.

Gambar 8.4 SFIOR

Spesial Function IO Register (SFIOR)

Register SFIOR merupakan register 8 bit pengatur sumber pemicu

konversi ADC. Untuk operasiADC, bit ACME, PUD, PSR2, dan PSR10

tidak dipakai.

Bit ADTS2:0 mengatur pemicu eksternal operasi ADC. Hanya berfungsi jika bit

ADATE pada ADCSRA bernilai 1. Bernilai awal 000 sehingga ADC bekerja pada

mode free running dan tidak ada interupsi yang dihasilkan.

ADTS2 ADTS1 ADTS0 Trigger Source

0 0 0 Free Running mode

0 0 1 Analog Comparator

0 1 0 External Interrup Request 0

0 1 1 Timer/Counter0 Compare Match

1 0 0 Timer/Counter0 Overflow

1 0 1 Timer/Counter1 Compare Match

B

1 1 0 Timer/Counter1 OverFlow

1 1 1 Timer/Counter Captur Event

8.3. MENGAKSES ADC PADA ATMGA 8535

ADC (analog to digital converter) sangat membantu kita untuk

mengakuisisi data analog menjadi data digital. Sebagai contoh disini, kita bisa

memanfaatkan ADC dari mikrokontroler keluarga AVR yang antara lain

ATMega8535, ATMega32, ATMega128, dll. Untuk menuliskan dan

mendownload program ke dalam mikrokontroler kali ini kita menggunakan

program codevision. Bisa memanfaatkan wizard agar lebih memudahkan dalam

melakukan pengaturan ADC. Antara lain, resolusi 8bit/10bit, tegangan referensi

AREF/AVCC, ADC noise canceler, ADC Clock. Atmega memiliki resolusi ADC

10 bit (dapat juga menggunakan ADC 8 bit) dengan 8 channel (PA0-PA7) input

ADC dan mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik

succecive approximation. Rangkaian internal ADC memiliki catu daya tersendiri

yaitu pin AVCC.

Gambar 8.2 ADC seting pada Codewizard

Data hasil konversi ADC 10 bit (1024) adalah: ADC=(Vin*1024)/Vref

Jika ingin menggunakan ADC 8 bit maka tinggal meng-klik saja pada “use 8 bit“.

“Volt Ref” merupakan sumber pemilihan tegangan referensi ADC, sedangkan

“Clock” adalah banyaknya frekuensi sampling ADC. Dan “Auto Trigger Source”

merupakan mode ADC yang akan digunakan.

Sedangkan instruksi untuk pembacaan ADC pada program CodeVision AVR

adalah sebagai berikut:

int ADC;//variabel ADC dengan tipe data integer

ADC=read_adc(0);//baca data ADC dari channel 0 (ADC0/PA1)

8.4. CONTOH APLIKASI ADC PADA ATMEGA 8535

8.4.1 SKEMATIK

Gambar 8.5 Skematik diagram Volt meter digital

8.4.2 FLOWCHART

Start

Tampilkan

ke LCD

Menentukan

variable

PORT A = IN

Read ADC

PORT A =

data

analog?

vin=((float)temp*

0.00488);

Keluarkan

pada LCD

Inisialisai :

PORT A = IN PORT

C =

Start

8.4.3. PROGRAM

#include <mega8535.h>

#include <stdio.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x15 ;PORTC

#endasm

#include <lcd.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x00

// Read the AD conversion result

unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCW;

}

// Declare your global variables here

void main(void)

{

// Declare your local variables here

char lcd_buffer[33];

float vin;

unsigned int temp;

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

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

// ADC initialization

// ADC Clock frequency: 750.000 kHz

// ADC Voltage Reference: AREF pin

// ADC Auto Trigger Source: None

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

// LCD module initialization

lcd_init(16);

while (1)

{

// Place your code here

temp=read_adc(0);

vin=((float)temp*0.00488);

lcd_gotoxy(0,0);

lcd_putsf(" ==VOLTMETER==");

lcd_gotoxy(2,1);

sprintf(lcd_buffer, "volt: %0.0001f V",vin);

lcd_puts(lcd_buffer);

delay_ms(100);

};

}

C. Latihan Soal

1. Jelaskan Cara kerja sebuah Analog todigital converter !

2. Jelaskan bagaimana seting ADC pada mikrokontroler !

3. Buatlah sebuah program aplikasi ADC pada sistem elektronika!

D. Ringkasan

1. ADC (analog to digital converter) adalah suatu piranti yang digunakan untuk

mengubah isyarat analog menjadi isyarat digital. Disini akan dibahas ADC

yang terdapat pada mikrokontroler (keluarga AVR). Adapun fitur dari ADC

pada ATMega8535 adalah sebagai berikut : Resolusi 10 bit, Waktu konversi

65-260 Us, 0-VCC range input ADC, Memiliki 8 channel input, Tiga mode

pemilihan tegangan referensi

2. ADC (analog to digital converter) sangat membantu kita untuk mengakuisisi

data analog menjadi data digital. Sebagai contoh disini, kita bisa memanfaatkan

ADC dari mikrokontroler keluarga AVR yang antara lain ATMega8535,

ATMega32, ATMega128, dll. Untuk menuliskan dan mendownload program

ke dalam mikrokontroler kali ini kita menggunakan program codevision. Bisa

memanfaatkan wizard agar lebih memudahkan dalam melakukan pengaturan

ADC. Antara lain, resolusi 8bit/10bit, tegangan referensi AREF/AVCC, ADC

noise canceler, ADC Clock. Atmega memiliki resolusi ADC 10 bit (dapat juga

menggunakan ADC 8 bit) dengan 8 channel (PA0-PA7) input ADC dan

mendukung 16 macam penguat beda. ADC ini bekerja dengan teknik succecive

approximation. Rangkaian internal ADC memiliki catu daya tersendiri yaitu pin

AVCC.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New

York.

BAB 9 Mengakses Timer dan Counter

Pada MikrokontrolerATMega8535

A. Kompetensi Dasar :

1. Memahami penggunaan timer dan counter pada mikrokontroler

2. Mampu melakukan pemrograman timer dan counter pada

mikrokontroler ATMega 8535

3. Mengetahui aplikasi Timer dan counter pada rangkaian elektronika

menggunakan mikrokontroler ATMega 8535.

B. Media Pembelajaran

1. Handout materi ajar

2. Komputer dan LCD Proyektor

3. Modul latih mikrokontroler

9.1 Timer dan Counter

Secara bahasa Counter berarti Pencacah, artinya rangkaian ataupun

aplikasi counter yang digunakan untuk melakukan cacah / menghitung baik

hitungan numeric naik (Counter Up) ataupun menghitung numeric mundur

(Counter Down). Aplikasi counter cukup variatif di bidang industry, mulai dari

sistem robotika, sistem conveyor, maupun kecepatan motor dalam rpm. Pada

pembahasan kali ini kita akan mencoba mensimulasikan counter/timer

memanfaatkan arsitektur sistem AVR Tipe 8535. Kita gunakan perintah-perintah

sebagai berikut :

Interrupt0, digunakan untuk mengaktifkan kaki interupsi (count) 0

eksternal

Int0 mode: Falling Edge, digunakan untuk setting mode interupsi 1

kali

Timer 1 Overflow Interrupt: On, digunakan untuk mengaktifkan

timer 1 “On”

Int Frekuensi=0, digunakan sebagai interupsi aktif rendah ketika

kondisi “0”.

pulsa=(float)frekuensi*60/60;, frekuensi yang menjadi rumus bahwa

setiap pembacaan dimulai dari nominal terkecil 60/60=1

Definisi Interrupt adalah proses yang dilakukan oleh Mikrokontroler pada

Interrupt Service Routine, jadi Interrupt adalah suatu kejadian atau peristiwa yang

menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut.

Program yang dijalankan pada saat melayani interrupt disebut Interrupt Service

Routine.

Gambar 9.1. Skema Diagram Counter dengan AVR ATMega 8535

Flowchart Sistem Counter Menggunakan AVR ATMega 8535

Listing Program Counter/Timer Menggunakan Bahasa C dengan Compiler

CVAVR yang Ditampilkan Dalam LCD

int frekuensi=0;

float pulsa;

char temp[8];

Aktifkan Interrupt0

Ya

Tidak

Mikron Memproses

Interrupt0

Mula

Inisialisasi

Sensor

Aktif

Tampilkan ke

LCD

Selesai

#include <mega8535.h>

#include <lcd.h>

#include <delay.h>

#include <stdlib.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x15 ;PORTC

#endasm

#include <lcd.h>

// External Interrupt 0 service routine

interrupt [EXT_INT0] void ext_int0_isr(void)

{

frekuensi++;//baca frekuensi yg masuk trus di increament

}

// Timer 1 overflow interrupt service routine

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

// Reinitialize Timer 1 value

TCNT1H=0xD23A >> 8;

TCNT1L=0xD23A & 0xff;

pulsa=(float)frekuensi*60/60;

frekuensi=0;

lcd_clear();

}

void tampilkan_LCD()

{

lcd_gotoxy(0,0);

lcd_putsf("Imam Project");

ftoa(pulsa,1,temp);

lcd_gotoxy(0,1);

lcd_puts(temp);

lcd_gotoxy(0,5);

lcd_putsf("RPM");

}

void main(void)

{

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: 11.719 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=0xD2;

TCNT1L=0x3A;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// External Interrupt(s) initialization

// INT0: On

// INT0 Mode: Falling Edge

// INT1: Off

// INT2: Off

GICR|=0x40;

MCUCR=0x02;

MCUCSR=0x00;

GIFR=0x40;

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

// LCD module initialization

lcd_init(16);

// Global enable interrupts

#asm("sei")

while (1)

{

tampilkan_LCD();

};

}

Penjelasan Program

#include <mega8535.h>, sebagai inisialisasi chip yakni 8535

#include <lcd.h>, sebagai inisialisasi LCD

#include <delay.h>, sebagai delay pembacaan/menampilkan output

.equ __lcd_port=0x15 ;PORTC, sebagai pin koneksi LCD ke port C

Interrupt0, digunakan untuk mengaktifkan kaki interupsi (count) 0

eksternal

Int0 mode: Falling Edge, digunakan untuk setting mode interupsi 1 kali

Timer 1 Overflow Interrupt: On, digunakan untuk mengaktifkan timer

1 “On”

Int Frekuensi=0, digunakan sebagai interupsi aktif rendah ketika kondisi

“0”.

pulsa=(float)frekuensi*60/60;, frekuensi yang menjadi rumus bahwa

setiap pembacaan dimulai dari nominal terkecil 60/60=1.

C. Latihan Soal

1. Jelaskan perbedaan Timer dan counter pada mikrokontroler ATMega 8535!

2. Jelaskan bagaimana seting timer dan counter pada mikrokontroler ATMega

8535!

3. Buatlah program aplikasi sederhana menggunakan timer dan counter pada

Mikrokontroler 8535!

D. Ringkasan

Secara bahasa Counter berarti Pencacah, artinya rangkaian ataupun

aplikasi counter yang digunakan untuk melakukan cacah / menghitung baik

hitungan numeric naik (Counter Up) ataupun menghitung numeric mundur

(Counter Down). Aplikasi counter cukup variatif di bidang industry, mulai dari

sistem robotika, sistem conveyor, maupun kecepatan motor dalam rpm. Pada

pembahasan kali ini kita akan mencoba mensimulasikan counter/timer

memanfaatkan arsitektur sistem AVR Tipe 8535. Kita gunakan perintah-perintah

sebagai berikut :

Interrupt0, digunakan untuk mengaktifkan kaki interupsi (count) 0

eksternal

Int0 mode: Falling Edge, digunakan untuk setting mode interupsi 1

kali

Timer 1 Overflow Interrupt: On, digunakan untuk mengaktifkan

timer 1 “On”

Int Frekuensi=0, digunakan sebagai interupsi aktif rendah ketika

kondisi “0”.

pulsa=(float)frekuensi*60/60;, frekuensi yang menjadi rumus bahwa

setiap pembacaan dimulai dari nominal terkecil 60/60=1

Definisi Interrupt adalah proses yang dilakukan oleh Mikrokontroler pada

Interrupt Service Routine, jadi Interrupt adalah suatu kejadian atau peristiwa yang

menyebabkan mikrokontroler berhenti sejenak untuk melayani interrupt tersebut.

Program yang dijalankan pada saat melayani interrupt disebut Interrupt Service

Routine

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New

York.

BAB 10 Menggunakan Pulse Width Modulation (PWM)

Mikrokontroller AVR ATMega 8535

A. Kompetensi Dasar :

1. Memahami cara mengakses PWM pada mikrokontroler ATMega8535

2. Mampu membuat program aplikasi PWM pada mikrokontroler

ATMega8535

B. Media Pembelajaran

1. Handout materi ajar

2. Modul latih Mikrokontroler ATMega8535

3. Komputer dan LCD Proyektor

10.1. Pulse Width Modulation

PWM merupakan suatu metoda untuk mengatur kecepatan perputaran

motor dengan cara mengatur prosentase lebar pulsa high terhadap perioda dari

suatu sinyal persegi dalam bentuk tegangan periodik yang diberikan ke motor

sebagai sumber daya. Semakin besar perbandingan lama sinyal high dengan

perioda sinyal maka semakin cepat motor berputar. Sinyal PWM dapat dibangun

dengan banyak cara, dapat menggunakan metode analog menggunakan rankaian

op-amp atau dengan menggunakan metode digital.

Dengan metode analog setiap perubahan PWM-nya sangat halus, sedangkan

menggunakan metode digital setiap perubahan PWM dipengaruhi oleh resolusi

dari PWM itu sendiri. Misalkan PWM digital 8 bit berarti PWM tersebut memiliki

resolusi 2 pangkat 8 = 256, maksudnya nilai keluaran PWM ini memiliki 256

variasi, variasinya mulai dari 0 – 255 yang mewakili duty cycle 0 – 100% dari

keluaran PWM tersebut. Pada perancangan driver ini, sinyal PWM akan diatur

secara digital yang dibangkitkan oleh mikrokontroler ATMEGA 8535.

Gambar 10.1 Diagram PWM

Gambar 10.2 menunjukan skematik diagram system pengendali motor DC

menggunakan mikrokontroler AT Mega 8535

Gambar 10.2. Skema Diagram Sistem Pengendali Motor Berbasis PWM

Mikrokontroler ATMega8535

V0

Waktu (T)

0 T 2T

PWM1 PWM2 PWM3

Periode Konstan

Berikut adalah gambar skematik diagran drover motor DC menggunakan IC

L293D

Gambar 10.3 Driver motor DC

Flowchart Sistem Pengendali Motor Berbasis PWM MCAVR ATMega 8535

diperlihatkan pada gambar 10.4.

Gambar 10.4 Flowchart diagram sistem

Aktifkan ADC

Ya

Tidak

Mikron Memproses ADC

Mulai

Inisialisasi

Potensio/Setting Speed

PWM Aktif

Tampilkan ke LCD

Selesai

Berikut adalah listing program Sistem Pengendali Motor Berbasis PWM MCAVR

ATMega 8535

#include <mega8535.h>

#include <lcd.h>

#include <stdio.h>

#include <delay.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x15 ;PORTC

#endasm

#include <lcd.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x20

unsigned char data1,data2;

char lcd_buffer[33];

// Read the 8 most significant bits

// of the AD conversion result

unsigned char read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

// Delay needed for the stabilization of the ADC input voltage

delay_us(10);

// Start the AD conversion

ADCSRA|=0x40;

// Wait for the AD conversion to complete

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCH;

}

// Declare your global variables here

void kec1(unsigned char motor1)

{

OCR1AL=motor1;

PORTD.0=0;

PORTD.1=1;

}

void kec2(unsigned char motor2)

{

OCR1BL=motor2;

PORTD.2=0;

PORTD.3=1;

}

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=P State0=P

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

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: 11.719 kHz

// Mode: Fast PWM top=00FFh

// OC1A output: Non-Inv.

// OC1B output: Non-Inv.

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

TCCR1B=0x0D;

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;

// ADC initialization

// ADC Clock frequency: 750.000 kHz

// ADC Voltage Reference: AREF pin

// ADC Auto Trigger Source: None

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x84;

// LCD module initialization

lcd_init(16);

while (1)

{

// Place your code here

data1=read_adc(0);

kec1(data1);

data2=read_adc(1);

kec2(data2);

lcd_clear();

lcd_putsf("Imam_Instrument");

lcd_gotoxy(0,1);

sprintf(lcd_buffer,"PWM1=%d",data1);

lcd_puts(lcd_buffer);

lcd_gotoxy(8,1);

sprintf(lcd_buffer,"PWM2=%d",data2);

lcd_puts(lcd_buffer);

delay_ms(100);

};

}

Penjelasan Program

#include <mega8535.h>, sebagai inisialisasi chip yakni 8535

#include <stdio.h>, adalah library pada bahasa C yang digunakan

untuk operasi input-output (stdio = Standar Input dan Output). Tanpa

menggunakan library ini maka perintah-perintah input dan output

tidak dapat dieksekusi.

#include <lcd.h>, sebagai inisialisasi LCD

#include <delay.h>, sebagai delay pembacaan/menampilkan output

.equ __lcd_port=0x15 ;PORTC, sebagai pin koneksi LCD ke port C

OCR1AL=motor1;, sebagai kendali motor 1

OCR1BL=motor2;, sebagai kendali motor 2

#define ADC_VREF_TYPE 0x20, untuk membaca data 8 bit dari

A/D conversion

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);, Tunda

dibutuhkan stabilisasi tegangan input adc

delay_us(10);, delay 1 sekon

ADCSRA|=0x40;, menunggu selesainya A/D conversion

C. Latihan Soal

1. Jelaskan prinsip kerja dari PWM !

2. Jelaskan bagaimana seting PWM pada mikrokontroler ATMega 8535!

2. Buatlah program sederhana menggunakan PWM Mikrokontroler 8535!

D. Ringkasan

PWM merupakan suatu metoda untuk mengatur kecepatan perputaran

motor dengan cara mengatur prosentase lebar pulsa high terhadap perioda dari

suatu sinyal persegi dalam bentuk tegangan periodik yang diberikan ke motor

sebagai sumber daya. Semakin besar perbandingan lama sinyal high dengan

perioda sinyal maka semakin cepat motor berputar. Setiap perubahan PWM

dipengaruhi oleh resolusi dari PWM itu sendiri. Misalkan PWM digital 8 bit

berarti PWM tersebut memiliki resolusi 2 pangkat 8 = 256, maksudnya nilai

keluaran PWM ini memiliki 256 variasi, variasinya mulai dari 0 – 255 yang

mewakili duty cycle 0 – 100% dari keluaran PWM tersebut.

E. Sumber Belajar

1. Handout : PowerPoint pertemuan kedua.

2. Buku : Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture,

Implementation, and Programming,. McGraw-Hill, Inc., New

York.

DAFTAR PUSTAKA

Hintz, K.J., Tabak, D., 1992. Mikrokontrolers: Architecture, Implementation, and

Programming,. McGraw-Hill, Inc., New York.

MacKenzie, I. Scott, 1995, The 8051 Mikrokontroler, 2nd edition, Prentice Hall,

Inc., New Jersey.

Senccer Yeralan, Ashutosh Ahluwalia, 1995, Programming and Interfacing The

8051 Mikrokontroler, Addison-Wesley, California, New York.

Pratomo Andi, “Panduan Praktis Pemrograman AVR Microkontroler

AT90S2313”, Andi , Yogjakarta, 2005.

Wardhana Lingga, “Belajar sendiri Mikrokontroler AVR Seri ATMega8535

Simulasi, Hardware, dan Aplikasi”, Andi , Yogjakarta, 2006.

M.Ary Heryanto, Wisnu Adi P, ” Pemrograman Bahasa C untuk Mikrokontroler

ATMega 8535” Andi, Yogyakarta, 2008.