Mikrokontroller ATMEGA32
adalah mikrokontroler yang diproduksi oleh Atmel. mikrokontroler ini memiliki
clock dan kerjanya tinggi sampai 16 MHz, ukuran flash memorinya cukup besar,
kapasistas SRAM sebesar 2 KiloByte, 32 buah port I/O yang sangat memadai untuk
berinteraksi dengan LCD dan keypad.
a. Arsitektur CPU
ATMEGA32
Fungsi utama CPU adalah
memastikan pengeksekusian instruksi dilakukan dengan benar. Oleh karena itu CPU
harus dapat mengakses memori, melakukan kalkulasi, mengontrol peripheral, dan
menangani interupsi.
Ada 32 buah General Purpose Register yang membantu ALU bekerja. Untuk operasi
aritmatika dan logika, operand berasal dari dua buah general register dan hasil
operasi ditulis kembali ke register. Status and Control berfungsi untuk
menyimpan instruksi aritmatika yang baru saja dieksekusi. Informasi ini berguna
untuk mengubah alur program saat mengeksekusi operasi kondisional. Instruksi di
jemput dari flash memory. Setiap byte flash memory memiliki alamat
masing-masing. Alamat instruksi yang akan dieksekusi senantiasa disimpan
Program Counter. Ketika terjadi interupsi atau pemanggilan rutin biasa, alamat
di Program Counter disimpan terlebih dahulu di stack. Alamat interupsi atau
rutin kemudian ditulis ke Program Counter, instruksi kemudian dijemput dan
dieksekusi. Ketika CPU telah selesai mengeksekusi rutin interupsi atau rutin
biasa, alamat yang ada di stack dibaca dan ditulis kembali ke Program Counter.
b.Program Memori
ATMEGA 32 memiliki 32 KiloByte flash memori untuk menyimpan program.Karena
lebar intruksi 16 bit atau 32 bit maka flash memori dibuat berukuran 16K x 16.
Artinya ada 16K alamat di flash memori yang bisa dipakai dimulai dari alamat 0
heksa sampai alamat 3FFF heksa dan setiap alamatnya menyimpan 16 bit instruksi.
c. SRAM Data Memori
ATMEGA32 memiliki 2 KiloByte SRAM. Memori ini dipakai untuk menyimpan variabel.
Tempat khusus di SRAM yang senantiasa ditunjuk register SP disebut stack. Stack
berfungsi untuk menyimpan nilai yang dipush.
d. EEPROM Data Memori
ATMEGA32 memiliki 1024 byte data EEPROM. Data di EEPROM tidak akan hilang
walaupun catuan daya ke sistem mati. Parameter sistem yang penting disimpan di
EEPROM. Saat sistem pertama kali menyala paramater tersebut dibaca dan system
diinisialisasi sesuai dengan nilai parameter tersebut.
e. Interupsi
Sumber interupsi ATMEGA32 ada 21 buah. Tabel 2 hanya menunjukkan 10 buah
interupsi pertama. Saat interupsi diaktifkan dan interupsi terjadi maka CPU
menunda instruksi sekarang dan melompat ke alamat rutin interupsi yang terjadi.
Setelah selesai mengeksekusi intruksi-instruksi yang ada di alamat rutin
interupsi CPU kembali melanjutkan instruksi yang sempat tertunda.
f. I/O Port
ATMEGA32 memiliki 32 buah pin I/O. Melalui pin I/O inilah ATMEGA32 berinteraksi
dengan sistem lain. Masing-masing pin I/O dapat dikonfigurasi tanpa
mempengaruhi fungsi pin I/O yang lain. Setiap pin I/O memiliki tiga register
yakni: DDxn, PORTxn, dan PINxn. Kombinasi nilai DDxn dan PORTxn menentukan arah
pin I/O.
g. Clear Timer on Compare Match (CTC)
CTC adalah salah satu mode Timer/Counter1, selain itu ada Normal mode, FastPWM
mode, Phase Correct PWM mode. Pada CTC mode maka nilai TCNT1 menjadi nol jika
nilai TCNT1 telah sama dengan OCR1A atau ICR1. Jika nilai top ditentukan OCR1A
dan interupsi diaktifkan untuk Compare Match A maka saat nilai TCNT1 sama
dengan nilai OCR1A interupsi terjadi. CPU melayani interupsi ini dan nilai
TCNT1 menjadi nol.
h. USART
Selain untuk general I/O, pin PD1 dan PD0 ATMEGA32 berfungsi untuk mengirim dan
menerima bit secara serial.
Pengubahan fungsi ini dibuat dengan mengubah nilai beberapa register serial.
Untuk menekankan fungsi ini, pin PD1 disebut TxD dan pin PD0 disebut RxD.
Gambar diatas menunjukkan bentuk frame yang dimiliki ATMEGA32. Nilai UBRR dan
clock sistem menentukan laju bit pengirim dan penerima serial.
AVR Atmega32 merupakan
sebuah mikrokontroler low power CMOS 8 bit berdasarkan
arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
· Menggunakan arsitektur AVR RISC
- 131 perintah
dengan satu clock cycle
- 32 x 8 register
umum
· Data dan
program memori
- 32 Kb In-System Programmable
Flash
- 2 Kb SRAM
- 1 Kb In-
System EEPROM
· 8 Channel 10-bit
ADC
· Two Wire
Interface
· USART Serial
Communication
· Master/Slave
SPI Serial Interface
· On-Chip
Oscillator
· Watch-dog Timer
· 32 Bi-directional
I/O
· Tegangan
operasi 2,7 – 5,5 V
Arsitektur AVR ini menggabungkan
perintah secara efektif dengan 32 register umum. Semua register
tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang
memungkinkan 2 register terpisah diproses dengan satu perintah tunggal
dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada
mikrokontroler CISC biasa. Berikut adalah blok diagram Mikrokontroler
AVR ATMega32.
Gambar 2.3 Blok diagram
AVR ATMega32
Konfigurasi pin Mikrokontroler AVR ATMega32
Gambar 2.4
Pin-pin ATMega32
Gambar 2.3 Blok diagram
AVR ATMega32
Secara fungsional
konfigurasi pin ATMega32 adalah sebagai berikut:
a.
VCC
- Tegangan sumber
b.
GND (Ground)
- Ground
c.
Port A (PA7 – PA0)
Port A adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
memilki internal pull-up resistor. Output buffer port A dapat mengalirkan arus
sebesar 20 mA. Ketika port A digunakan sebagai input dan di pull-up secara
langsung, maka port A akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Pin-pin dari port A memiliki fungsi khusus yaitu dapat berfungsi
sebagai channel ADC (Analog to Digital Converter) sebesar 10 bit. Fungsi-fungsi
khusus pin-pin port A dapat ditabelkan seperti yang tertera pada tabel ….
Tabel 2.3
Fungsi khusus port A
Port
|
Alternate Function
|
PA7
|
ADC7 (ADC input channel
7)
|
PA6
|
ADC6 (ADC input channel 6)
|
PA5
|
ADC5 (ADC input channel 5)
|
PA4
|
ADC4 (ADC input channel 4)
|
PA3
|
ADC3 (ADC input channel 3)
|
PA2
|
ADC2 (ADC input channel 2)
|
PA1
|
ADC1 (ADC input channel 1)
|
PA0
|
ADC0 (ADC input channel 0)
|
d. Port B
(PB7 – PB0)
Port B adalah 8-bit port I/O yang bersifat bi-directional dan setiap pin
mengandung internal pull-up resistor. Output buffer port B dapat mengalirkan
arus sebesar 20 mA. Ketika port B digunakan sebagai input dan di pull-down
secara external, port B akan mengalirkan arus jika internal pull-up resistor
diaktifkan.
Pin-pin port B memiliki fungsi-fungsi khusus, diantaranya :
· SCK
port B, bit 7
Input pin clock untuk up/downloading
memory.
· MISO
port B, bit 6
Pin output data untuk uploading
memory.
· MOSI
port B, bit 5
Pin input data untuk downloading
memory.
Fungsi-fungsi khusus pin-pin port B
dapat ditabelkan seperti pada tabel …
Tabel 2.4
Fungsi khusus port B
Port
|
Alternate Function
|
PB7
|
SCK (SPI Bus Serial Clock)
|
PB6
|
MISO (SPI Bus Master Input/Slave
Output)
|
PB6
|
MOSI (SPI Bus Master Output/Slave
Input)
|
PB5
|
SS (SPI Slave Select Input)
|
PB3
|
AIN1 (Analog Comparator Negative
Input)
OCO (Timer/Counter0 Output Compare
Match Output)
|
PB2
|
AIN0 (Analog Comparator Positive
Input)
INT2 (External Interrupt 2 Input)
|
PB1
|
T1 (Timer/Counter1 External
Counter Input)
|
PB0
|
T0 (Timer/Counter External Counter
Input) XCK (USART External Clock Input/Output)
|
e.
Port C (PC7 – PC0)
Port C adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port C dapat mengalirkan arus
sebesar 20 mA. Ketika port C digunakan sebagai input dan di pull-down secara
langsung, maka port C akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Fungsi-fungsi khusus pin-pin port C dapat ditabelkan seperti yang
tertera pada tabel dibawah ini.
Tabel 2.5
Fungsi khusus port C
Port
|
Alternate Function
|
PC7
|
TOSC2 (Timer Oscillator Pin 2)
|
PC6
|
TOSC1 (Timer Oscillator Pin 1)
|
PC6
|
TD1 (JTAG Test Data In)
|
PC5
|
TD0 (JTAG Test Data Out)
|
PC3
|
TMS (JTAG Test Mode Select)
|
PC2
|
TCK (JTAG Test Clock)
|
PC1
|
SDA (Two-wire Serial Bus Data
Input/Output Line)
|
PC0
|
SCL (Two-wire Serial Bus Clock
Line)
|
f.
Port D (PD7 – PD0)
Port D adalah 8-bit port I/O yang berfungsi bi-directional dan setiap pin
memiliki internal pull-up resistor. Output buffer port D dapat mengalirkan arus
sebesar 20 mA. Ketika port D digunakan sebagai input dan di pull-down secara
langsung, maka port D akan mengeluarkan arus jika internal pull-up resistor
diaktifkan. Fungsi-fungsi khusus pin-pin port D dapat ditabelkan seperti yang
tertera pada tabel dibawah ini.
Tabel 2.6 Fungsi khusus port D
Port
|
Alternate Function
|
PD7
|
OC2 (Timer / Counter2
Output Compare Match Output)
|
PD6
|
ICP1 (Timer/Counter1
Input Capture Pin)
|
PD6
|
OCIB (Timer/Counter1
Output Compare B Match Output)
|
PD5
|
TD0 (JTAG Test Data Out)
|
PD3
|
INT1 (External Interrupt
1 Input)
|
PD2
|
INT0 (External Interrupt
0 Input)
|
PD1
|
TXD (USART Output Pin)
|
PD0
|
RXD (USART Input Pin)
|