Background

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.

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.

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.
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.
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.
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.
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)



Leave a Reply