Mikrokontroller Atmega32
Mikrokontroller
Atmega32 Merupakan 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, Flash 32 KiloByte dan 32
port input/output. dalam satu sirkuit berisikan inti prosesor, memory
dan Input/Output. Memori program dalam bentuk flash atau ROM,
serta jumlah RAM yang kecil. Mikrokontroler dirancang untuk aplikasi Embedded,
kontras dengan mikroprosesor yang digunakan dalam komputer pribadi atau
aplikasi tujuan umum.
Mikrokontroler
digunakan dalam produk sistem otomatis, seperti sistem kontrol mesin mobil,
perangkat medis implan, remote kontrol, mesin kantor, peralatan, peralatan
listrik, dan mainan. Dengan mengurangi ukuran dan biaya dibandingkan dengan
desain yang menggunakan perangkat mikroprosesor terpisah, memory dan
input / output.
Prinsip
kerja sebuah mikrokontroler dapat dijelaskan sebagai berikut:
1.
Berdasarkan data yang ada pada register program counter.
Mikrokontroler mengambil data dari ROM dengan alamat sebagaimana ditunjukkan
dalam program counter. Selanjutnya program counter ditambah
nilainya dengan 1 secara otomatis. Data yang diambil tersebut merupakan urutan
instruksi program pengendali mikrokontroler yang sebelumnya telah dituliskan
oleh pembuatnya.
2.
Instruksi tersebut diolah dan dijalankan. Proses pengerjaan bergantung pada
jenis instruksi, bisa membaca, mengubah nilai-nilai dalam register, RAM,
isi port atau melakukan pembacaan dan dilanjutkan dengan pengubahan
data.
3.
Program counter telah berubah nilainya (baik karena penambahan secara
otomatis sebagaimana dijelaskan pada langkah 1 di atas atau karena pengubahan
data pada langkah 2). Selanjutnya yang dilakukan mikrokontroler adalah
mengulang kembali siklus ini pada langkah 1. Demikian seterusnya hingga catu
daya dimatikan.
Dengan
membuat program yang bermacam-macam, tentunya mikrokontroler dapat mengerjakan
tugas yang bermacam-macam pula. Fasilitas-fasilitas yang ada misalnya timer/counter,
port I/O, serial port, Analog to Digital Converter (ADC)
dapat dimanfaatkan oleh programmer untuk menghasilkan kinerja yang dikehendaki.
Sebagai contoh ADC digunakan oleh mikrokontroler sebagai alat ukur digital
untuk mengukur tegangan sinyal masukan, selanjutnya hasil pembacaan ADC diolah
untuk kemudian dikirimkan ke sebuah display yang terhubung pada port I/O guna
menampilkan hasil pembacaan yang telah diolah. Proses pengendalian ADC,
pemberian sinyal-sinyal yang tepat pada display, kesemuanya dikerjakan secara
berurutan pada program yang ditulis dalam ROM.
Penulisan
program mikrokontroler pada umumnya menggunakan bahasa assembly untuk
mikrokontroler yang bersangkutan (setiap jenis mikrokontroler memiliki
instruksi bahasa assembly yang berbeda-beda). Dengan bantuan sebuah perangkat
komputer (PC), bahasa assembley tersebut diubah menjadi bahasa mesin
mikrokontroler dan selanjutnya disalin ke dalam ROM dari mikrokontroler.
Berikut
ini adalah fitur dari Atmenga 32 :
-
32 K byte ISP flash program memory
-
2 K byte SRAM
-
1 K byte EEPROM
-
Frekuensi osilator max. 16 MHz
-
32 pin Input/ Output
-
8 channel 10 bit ADC, analog comparator
-
Satu 16 bit timer/ counter dan dua 8 bit timer/ counter
-
Watchdog timer, RTC, 4 channel PWM, master/ slave SPI, TWI
-
Programmable USART
-
Package 40 PDIP
Arsitektur
CPU ATMEGA32
Ada 32 buah General Purpose Register yang membantu ALU bekerja. Untuk operasi aritmatika dan logika, operansional 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 ATmega32.
Diagram ALU
Pin Mapping Mc ATmega32
Konfigurasi Pin Mc
Port A
Terdiri dari 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 ….
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)
|
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 …
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)
|
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.
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)
|
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.
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)
|