MODUL
KOMPARATOR ANALOG DALAM MIKROKONTROLLER ATmega8535

TUJUAN
  • Mahasiswa dapat menjelaskan cara menggunakan komparator analog dalam mikrokontroller atmega8535
  • Mahasiswa dapat mempraktekkan pembandingan data analog dengan komparator analog dalam mikrokontroller atmega8535
EEPROM
Komparator Analog membandingkan input di kaki input positif AIN0 (PORTB.2) dan input negatif AIN1 (PORTB.3). Ketika tegangan input positif AIN0 lebih besar daripada tegangan input negatifi AIN1, maka output Analog Comparator-ACO akan berlogika 1. Keluaran komparator dapat memicu fungsi Timer/Counter 1 Input Capture. Selain itu, komparator analog dapat memicu interrupt yang sumbernya berasal dari output komparator. Keluaran komparator dapat membangkitkan interrupt jika logikanya falling edge, rising edge atau toggle.
Register yang digunakan untuk mengakses komparator analog ada 2, yaitu:
  1. SFIOR -Special Function IO Register
  2. ACSR - Analog Comparator Control and Status Register
SFIOR - Special Function IO Register

  • Bit 3 - ACME: Analog Comparator Multiplexer Enable
Jika bit ini diberi logika 1 dan ADC tidak diaktifkan (ADEN dan ADCSRA diberi logika 0), maka ADC multiplekser akan memilih input negatif Komparator Analog. Jika bit ini diberi logika 0, AIN1 digunakan sebagai input negatif Komparator Analog.
ADC0..7 dapat digunakan untuk menggantikan input negatif komparator analog. Jika multiplekser ADC digunakan untuk memilih input tersebut, maka sebagai konsekuensinya ADC harus dinonaktifkan. Jika bit ACME diaktifkan dan ADC dinonaktifkan, maka MUX2..0 dalam ADMUX akan memilih pin input untuk menggantikan input negatif komparator analog, seperti dalam Tabel 2.1. Jika ACME diberi logika 0 atau ADEn diberi logika 1, maka AIN1 mendapat masukan dari input negatif komparator analog.

Table 2.1. Analog Comparator Multiplexer Input

ACSR - Analog Comparator Control and Status Register

              ·         Bit 7 – ACD: Analog Comparator Disable
Jika bit ini diberi logika 1,maka Komparator Analog dinonaktifkan. Ketika mengubah bit ADC, Interrupt Komparator Analog harus dinonaktifkan dengan memberi logika 0 pada bit ACIE supaya tidak terjadi interrupt ketika bit ini diubah.
·         Bit 6 – ACBG: Analog Comparator Bandgap Select
Jika bit ini di-set, tegangan referensi yang tetap akan menggantikan input positif Komparator Analog. Jika di-clear maka AIN0 digunakan sebagai input positif Komparator Analog.
·         Bit 5 – ACO: Analog Comparator Output
Output Komparator Analog disinkronkan dan terhubung ke ACO.Sinkronisasi membutuhkan 1-2 siklus clock.
·         Bit 4 – ACI: Analog Comparator Interrupt Flag
Bit ini di-set oleh hardware jika output komparator memicu mode interrupt yang didefinisakn oleh ACIS1 dan ACIS0. Rutin Analog Comparator Interrupt dieksekusi jika bit ACIE dan bit I dalam SREG diset. ACI di-clear oleh hardware ketika mengeksekusi interrupt tersebut atau dengan menulis logika 1 ke flag tersebut.
·         Bit 3 – ACIE: Analog Comparator Interrupt Enable
Jika bit ACIE dan Bit I dalam SREG diberi logika 1 maka Analog Comparator Interrupt diaktifkan.
·         Bit 2 – ACIC: Analog Comparator Input Capture Enable
Jika diberi logika 1, maka bit ini akan mengaktifkan fungsi Input Capture dalam Timer/Counter1 untuk ditrigger oleh Komparator Analog. Outpur komparator secara langsung akan terhubung dengan logika Input Capture dan membuat komparator menggunakan  fitur noise canceler dan  pemilihan egde pada interrupt Timer/Cpunter1 Input Capture. Untuk membuat komparator memicu Timer/Counter1 Input Capture Interrupt, maka bit TICIE1 dalam register TIMSK harus diset.
·         Bit 1,0 – ACIS1, ACIS0: Analog Comparator Interrupt Mode Select
Bit ini menentukan even komparator mana yang memicu Analog Comparator Interrupt. Ketika bit ACIS1/ACIS0 diubah, Analog Comparator interrupt harus dinonaktifkan dengan memberi logika 0 di bit Interrupt Enable dalam register ACSR supaya tidak terjadi interrupt ketika bit tersebut diubah.

Tabel 2.2 Setting ACIS1 / ACIS0


ALAT DAN BAHAN YANG DIGUNAKAN
  • 1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
  • 1 set modul praktikum mikrokontroler
  • 1 buah multimeter digital

PROSEDUR

1.      Rangkailah peralatan yang diperlukan seperti dalam Gambar 2.1. Hubungkan soket jumper PORTC pada minimum system dengan soket jumper LED/OUTPUT pada I/O.


Gambar 2.1 Diagram antarmuka mikrokontroler dengan I/O.

2.      Buka program Code Vision AVR
3.      Buatlah project baru. Setelah mengeset chip dan clock, set bagian PORTC sebagai output dengan output value = 0. Set juga pada tab Analog Comparator seperti berikut ini.


4.      Kemudian simpanlah file tersebut sehingga pada program bagian inisialisasi terlihat sebagai berikut:

// Port C initialization
PORTC=0x00;
DDRC=0xFF;

// Analog Comparator initialization
// Analog Comparator: On
// The Analog Comparator's positive input is
// connected to the Bandgap Voltage Reference
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x40;
SFIOR=0x00;

5.      Buat program untuk menyalakan LED dengan pola tertentu jika ACO (ACSR.5) berlogika 0 dan menyalakan LED dengan pola yang lain jika ACO (ACSR.5) berlogika 1.
6.      Hubungkan AIN1 (PORTB.3) ke output potensiometer. Ukur tegangan di AIN0 (PORTB.2) kemudian catat di Tabel 2.3. Putar potensiometer supaya tegangan di AIN1 lebih kecil daripada AIN0. Lihat nyala LED dan catat di Tabel 2.3.
7.      Putar potensiometer supaya tegangan di AIN1 lebih besar daripada AIN0. Lihat nyala LED dan catat di Tabel 2.3.
8.      Buatlah project baru. Setelah mengeset chip dan clock, set bagian PORTC sebagai output dengan output value = 0. Set juga pada tab Analog Comparator seperti berikut ini.


9.      Kemudian simpanlah file tersebut sehingga pada program bagian inisialisasi terlihat sebagai berikut:

// Port C initialization
PORTC=0x00;
DDRC=0xFF;

// Analog Comparator initialization
// Analog Comparator: On
// The Analog Comparator's positive input is
// connected to the Bandgap Voltage Reference
// The Analog Comparator's negative input is
// connected to the ADC multiplexer
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x40;
SFIOR=0x08;

10.  Tambahkan setting ADMUX untuk pemilihan input ADC Multiplexer:
ADMUX=0x00; // input ADC dari PORTA.0(ADC channel 0)

11.  Buat program untuk menyalakan LED dengan pola tertentu jika ACO (ACSR.5) berlogika 0 dan menyalakan LED dengan pola yang lain jika ACO (ACSR.5) berlogika 1.
12.  Hubungkan ADC0 (PORTA.0) ke output potensiometer. Ukur tegangan di AIN0 (PORTB.2) kemudian catat di Tabel 2.4. Putar potensiometer supaya tegangan di ADC0 lebih kecil daripada AIN0. Lihat nyala LED dan catat di Tabel 2.4.
13.  Putar potensiometer supaya tegangan di ADC0 lebih besar daripada AIN0. Lihat nyala LED dan catat di Tabel 2.4.
14.  Rakitlah rangkaian sensor optocoupler seperti dalam Gambar 2.2 di project board. Hubungkan keluaran sensor ke input AIN0 (PORTB.2)  dan hubungkan AIN1 (PORTB.3) ke output potensiometer.

Gambar 2.2 Rangkaian sensor optocoupler

15.  Buatlah project baru. Setelah mengeset chip dan clock, set bagian PORTC sebagai output dengan output value = 0. Set juga pada tab Analog Comparator seperti berikut ini.


16.  Kemudian simpanlah file tersebut sehingga pada program bagian inisialisasi terlihat sebagai berikut:

// Port B initialization
PORTB=0x00;
DDRB=0xFF;

// Analog Comparator initialization
// Analog Comparator: On
// Interrupt on Rising Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x0B;
SFIOR=0x00;

17.  Buat program utama untuk menyalakan LED dengan pola tertentu dan program dalam Analog Comparator interrupt service routine untuk menyalakan LED dengan pola yang lain.

// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
// Place your code here

}

18.  Ukur tegangan output sensor ketika sensor optocoupler terhalang dan sensor optocoupler tidak terhalang kemudian catat di Tabel 2.5. Set tegangan potensiometer supaya berada di antara kedua tegangan tersebut.
19.  Lihat nyala LED ketika sensor optocoupler tidak terhalang, terhalang, dan tidak  terhalang, kemudian catat di Tabel 2.6.
20.  Ulangi langkah 14-18 untuk Mode Interrupt Falling Edge dan Toggle.

DATA HASIL PERCOBAAN

1.       Program Komparator Analog dengan Bandgap Reference

2.       
Tabel 2.3 Komparator Analog dengan Bandgap Reference
No
Tegangan AIN0 (V)
Tegangan AIN1 (V)
Nyala LED
1



2




3.      Program Komparator Analog dengan Bandgap Reference dan ADC Multiplexer

4.                   
Tabel 2.4 Komparator Analog dengan Bandgap Reference dan ADC Multiplexer
No
Tegangan AIN0 (V)
Tegangan ADC0 (V)
Nyala LED
1



2




5.      Program Komparator Analog dengan Interrupt

6.                   
Tabel 2.5 Pengukuran Tegangan
Tegangan ketika sensor tidak terhalang (V)
Tegangan ketika sensor terhalang (V)
Tegangan referensi/potensiometer (V)




Tabel 2.6 Komparator Analog dengan Interrupt
No
Interrupt Mode
Kondisi sensor
Nyala LED
1
Rising Output Edge
Tidak terhalang

Terhalang

Tidak terhalang

2
Falling Output Edge
Tidak terhalang

Terhalang

Tidak terhalang

3
Output Toggle
Tidak terhalang

Terhalang

Tidak terhalang


ANALISIS DATA
1.      Simpulkan prinsip kerja Komparator Analog yang ada di dalam mikrokontroler.
2.      Sebutkan pilihan input Komparator Analog baik input positif maupun input negatif.
3.      Simpulkan hasil praktikum yang tercantum dalam Tabel 2.6.






        


MODUL
EEPROM DALAM MIKROKONTROLER ATmega8535
TUJUAN
  • Mahasiswa dapat menjelaskan cara menggunakan EEPROM internal dalam mikrokontroler ATmega8535 untuk menyimpan data.
  • Mahasiswa dapat mempraktekkan penyimpanan dan pembacaan data di dalam EEPROM internal dalam mikrokontroler ATmega 8535.

EEPROM
        EEPROM (Electrically Erasable Programmable Read Only Memory) merupakan memori yang dapat menyimpan data, dimana data tersebut akan tetap ada meskipun catu daya dimatikan. Data yang tersimpan dalam EEPROM dapat dihapus dengan sinyal listrik dengan tegangan tertentu.
        EEPROM internal dalam mikrokontroler ATmega8535  mempunyai kapasitas 512 byte dan dipetakan sendiri dengan alamat mulai 00H-FFH. EEPROM hanya dapat diakses melalui register (EEARH, EEARL, EEDR dan EECR) dan operasi read/write yang tertentu sehingga waktu aksesnya lebih lamban dari pada mengakses register ataupun SRAM.
Register yang digunakan untuk mengakses EEPROM ada 3 yaitu:
- EEARH dan EEARL
- EEDR
- EECR

A.      EEPROM Address Register (EEARH dan EEARL)


Bit 8..0: EEAR8..0: EEPROM Address, adalah tempat meletakkan alamat secara linier untuk EEPROM mulai 0-511. Nilai awalnya tidak ada, sehingga ketika akan digunakan harus diberi nilai terlebih dahulu.

B.      EEPROM Data Register (EEDR)

EEDR berisi data yang akan ditulis ke dalam atau dibaca dari EEPROM dalam alamat yang ditulis dalam register EEAR.

C.      EEPROM Control Register (EECR)

·         Bit 3 - EERIE: EEPROM Ready Interrupt Enable
Menulis logika 1 ke EERIE berarti mengaktifkan EEPROM Ready Interrupt jika bit I dalam register SREG diberi logika 1. Menulis logika 0 ke EERIE berarti menonaktifkan interrupt. EEPROM Ready Interrupt membangkitkan interrupt secara terus menerus jika EEWE diberi logika 0.
·         Bit 2 - EEMWE: EEPROM Master Write Enable
EEMWE bersama dengan EEWE digunakan untuk menulis data ke EEPROM. Ketika EEMWE diberi logika 1, memberi logika 1 pada EEWE dalam 4 siklus clock akan menulis data ke EEPROM pada alamat tertentu. Jika EEMWE diberi logika 0, memberi logika 1 pada EEWE tidak akan berpengaruh apa-apa. Jika EEMWE diberi logika 1 oleh software, hardware akan mengubah logikanya ke 0 setelah 4 siklus clock.
·         Bit 1 – EEWE: EEPROM Write Enable
EEWE digunakan untuk menulis ke EEPROM. Ketika alamat dan data yang diset sudah benar, EEWE harus diberi logika 1 untuk menulis data ke EEPROM. EEMWE harus diberi logika 1 sebelum EEWE diberi logika 1, jika tidak maka tidak akan terjadi proses menulis data ke EEPROM.
·         Bit 0 – EERE: EEPROM Read Enable
EERE digunakan untuk membaca data dari EEPROM. Ketika alamat yang diset EEAR sudah benar, EERE harus diberi logika 1 untuk membaca data ke EEPROM.

ALAT DAN BAHAN YANG DIGUNAKAN
  • 1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
  • 1 set modul praktikum mikrokontroler
  • LCD display 16x2

PROSEDUR
1.      Rangkailah peralatan yang diperlukan seperti dalam Gambar 1.1. Hubungkan soket jumper PORTB pada minimum system dengan soket jumper LED/OUTPUT pada I/O.


Gambar 1.1 Diagram antarmuka mikrokontroler dengan I/O.

2.      Buka program Code Vision AVR
3.      Buatlah project baru. Setelah mengeset chip dan clock, set juga bagian PORTB sebagai output dengan output value = 0. Kemudian simpanlah file tersebut sehingga pada program bagian inisialisasi PORTB terlihat sebagai berikut:

PORTB=0x00;
DDRB=0xff;       

4.      Buatlah program untuk mengakses 1 alamat di EEPROM secara langsung (directly) dengan urutan: membaca data di alamat tersebut, menulis data ke alamat tersebut, dan membaca data di alamat tersebut sekali lagi. Tampilkan data yang dibaca ke LED di PORTB.
5.      Catat alamat dan data yang pertama kali dibaca,  alamat dan data yang ditulis, serta alamat dan data yang dibaca kedua kalinya dalam Tabel 1.1.
6.      Buatlah program untuk mengakses 1 alamat di EEPROM secara tidak langsung (indirectly/menggunakan pointer) dengan urutan: membaca data di alamat tersebut, menulis data ke alamat tersebut, dan membaca data di alamat tersebut sekali lagi. Tampilkan data yang dibaca ke LED di PORTB.
7.      Catat alamat dan data yang pertama kali dibaca,  alamat dan data yang ditulis,  serta alamat dan data yang dibaca kedua kalinya dalam Tabel 1.2.
8.      Buatlah program kombinasi toggle switch, EEPROM dan LED untuk:
·         Menampilkan hasil pembacaan EEPROM secara berurutan ke LED (PORTB) mulai dari alamat 0, 1, 2, 3, dan 4 sebelum EEPROM diisi jika toggle switch 1 diaktifkan.
·         Menyimpan data berurutan jika toggle switch 2 diaktifkan dengan alamat dan data sebagai berikut:
1.    menyimpan bilangan 0x11 ke EEPROM alamat 0,  
2.    menyimpan bilangan 0x22 ke EEPROM alamat 1,
3.    menyimpan bilangan 0x33 ke EEPROM alamat 2,  
4.    menyimpan bilangan 0x44 ke EEPROM alamat 3,
5.    menyimpan bilangan 0x55 ke EEPROM alamat 4.
9.      Download program tersebut ke mikrokontroler
10.  Aktifkan toggle switch 1 dahulu dan catat nyala LED dalam Tabel 1.3. Kemudian nonaktifkan togle switch 1 dan aktifkan toggle switch 2. Terakhir nonaktifkan togle switch 2 dan aktifkan toggle switch 1 dan catat nyala LED.
11.  Lepaskan kabel USB dari komputer, sambungkan kembali kabel USB ke komputer dan lakukan langkah 10.
12.  Lakukan seperti langkah 8-11 dengan program kombinasi toggle switch, EEPROM dan LCD display untuk menyimpan data ke 5 alamat tertentu ke EEPROM dan menampilkan kelima data tersebut bersama alamatnya ke LCD display. Catat alamat dan data dalam Tabel 1.4.

DATA HASIL PERCOBAAN

1.      Program untuk mengakses 1 alamat di EEPROM secara langsung (directly)

2.                                    Tabel 1.1 Akses EEPROM secara Langsung


3.      Program untuk mengakses 1 alamat di EEPROM secara tidak langsung (indirectly)

4.                     Tabel 1.2 Akses EEPROM secara Tidak Langsung/dengan Pointer


5.      Program kombinasi toggle switch, EEPROM dan LED

6.                              Tabel 1.3 Program kombinasi toggle switch, EEPROM dan LED


7.      Program kombinasi toggle switch, EEPROM dan LED

8.                    Tabel 1.4 Program kombinasi toggle switch, EEPROM dan LCD display


ANALISIS DATA
  1. Simpulkan cara menulis data ke EEPROM dan membaca dari EEPROM.
  2. Data apakah yang muncul jika EEPROM belum ditulisi?
  3. Pada langkah 8-12, adakah perbedaan antara pembacaan pertama dengan pembacaan kedua sebelum catu daya dilepas? Jika ada mengapa terjadi perbedaan tersebut?
  4. Pada langkah 8-12, adakah perbedaan antara pembacaan pertama dengan pembacaan kedua setelah catu daya dilepas? Mengapa hal itu terjadi?


Sumber: elektro.um.ac.id