rencana program kegiatan pembelajaran...
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
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.