Pada dasarnya mikrokontroler bukanlah ilmu pengetahuan yang baru, tetapi adalah hasil pengembang dalam teknologi elektronika.
Jika dasar pengetahuan seperti : Elektronika dasar Rangkaian listrik Sistem digital Mikroprosesor Bahasa rakitan
Semua bidang ilmu diatas akan sangat membantu dalam mempelajari mikrokontroler
Perangkat pengembang mikrokontroler sbb: Compiler (Penterjemah): Berupa perangkat lunak karena mikrokontroler beroperasi dengan bahasa mesin, sedangkan manusia terbiasa memakai bahasa yang lebih tinggi seperti Bahasa Assembler, C/C++, Basic dll. Atau manusia biasa sulit memahami bahasa mesin, maka dengan bantuan Compiler (Penterjemah) bahasa pemograman diterjemahkan menjadi bahasa mesin. Simulator: Berupa perangkat lunak yang mensimulasikan kerja dari mikrokontroler. Dengan bantuan simulator seorang programer dapat melihat hasil program yang di buat sebelum di tulis / di isi ke dalam IC mikrokontroler.
Emulator: Berupa perangkat keras dan perangkat lunak. Suatu alat yang di hubungkan dengan PC. Program yang sudah selesai di buat di tulis (Download) ke emulator kemudian emulator akan bekerja sendiri walaupun koneksi dilepas dari PC. Jika terjadi kesalahan atau program yang di buat belum sesuai dengan keinginan maka setelah program diperbaiki dapat di tulis (Download) ulang ke emulator catatan: Emulator sering di sebut dengan target
Programmer: Berupa perangkat yang berfungsi untuk mengisi program yang dibuat kedalam mikrokontroler atau bisa di sebut sebagai interface antara mikrokontroler dengan PC. Mikrokontroler Atmega 16/32/8535 dapat terhubung ke PC melalui : Port Serial = DB 9 Port Paralel = DB 25 (LPT) atau dengan Universal Serial BUS (USB)
Konfigurasi Pin
Port B Port A / ADC Interfacing / ISP
Port C Port D
Adapun fungsi pin pada mikrokontroler ATMEGA: Port (TA 0-7) Terdapat pada kaki 33 s/d 40. Berfungsi sebagai Port I/O dua arah dan berfungsi khusus sebagai pin masukan ADC (converter analog ke digital)
Port Pin
PA.0 PA.1 PA.2
Fungsi
PA0 ADC0 (ADC input channel 0 PA1 ADC1 (ADC input channel 1 PA0 ADC2 (ADC input channel 2
PA.3 PA.4
PA.5 PA.6 PA.7
PA0 ADC3 (ADC input channel 3 PA0 ADC4 (ADC input channel 4
PA0 ADC5 (ADC input channel 5 PA0 ADC6 (ADC input channel 6 PA0 ADC7 (ADC input channel 7
Port (TB 0-7) Terdapat pada kaki 1 s/d 8 terdiri atas 8 bit, merupakan pin Input/output dua arah dan berfungsi khusus sebagai pin timer/counter, komparator analog dan SPI.
Port Pin PB.0 PB.1 PB.2 PB.3 PB.4 PB.5 PB.6 PB.7 Fungsi T0 T1 (Timer/counter 0 external counter input) XCK (USART external colock input/output) T1 (Timer./counter1 ecternal counter input) AINO (analog comparator positive input / INT2 (external interupt 2 input) AIN1 (analog comparator negative input/ OCO (timer/counter output compare) SS (SPI bus master input/slave output/sebagai interface ke PC) MISO (SPI bus master input/slave output/ sebagai interface ke PC) SCK (SPI bus serial clock) SCK (SPI bus serial clock)
Port (TC 0-7) terdapat pada kaki 22 s/d 29 selain berfugsi sebagai input/output dua arah juga mempunyai fungsi khusus
Port Pin PC.0 PC.1 PC.2 PC.3 PC.4 Fungsi SCL (Two-Wire serial bus clock line) SDA (two-wire serial bus data input/output line) TCK (JTAG test clock) TMS (JTAG test mode select) TDO (JTAG test data out)
PC.5
PC.6 PC.7
Port (TD 0-7) Terdapat pada kaki 14 s/d 21 berfungsi sebagai port input/output dua arah juga mempunyai fungsi khusus
Port Pin PD.0 PD.1 RDX (serial input port) TDX (serial output port) Fungsi
PD.2
PD.3 PD.4 PD.5 PD.6 PD.7
AREF (Kaki Pin = 32) AREF merupakan pin masukan tegangan referensi converter analog ke digital (ADC) AVCC (Kaki Pin = 30) Merupakan pin masukan tegangan untuk analog ke digital (ADC) VCC (Kaki Pin = 10) Merupakan pin yang berfungsi sebagai masukan catu daya / tegangan ke mikrokontroler.
GND (kaki pin = 11 dan 31) Merupakan kaki pin yang ground/negatif ke mikrokontroler
berfungsi
sebagai
RST (Reset kaki pin = 9) Terdapat pada kaki 9, dengan cara memberikan logic tinggi selama 2 siklus clock, maka sistem dan memori internal pada mikrokontroler akan direset
Output dari rangkaian osilator berbntuk pulsa dengan frekuensi 12-16 Mhz
Gambar XTAL
Koneksi Power Terdapat pada pin 10, pin 30 untuk tegangan positif dan pin 11, pin 31 untuk ground Sebagai sumber tegangan mikrokontroler digunakan power supply dengan keluaran 5 Volt DC
Memory
Memori
Mikrokontroler
1. Program Memory
Berfungsi untuk menyimpan instruksi-intruksi program yang sifatnya hanya di baca/Read Only (ROM) dengan alamat $000 hingga $FFF.
Program Memory
The ATmega8535 contains 8K bytes
On-chip In-System Reprogrammable Flash memory for program storage. For software security, the Flash Program memory space is divided into two sections: Boot Program section and Application Program section. The Flash memory has an endurance of at least 10,000 write/erase cycles
Memory (2)
2. Data memory Berfungsi untuk keperluan program, memori data terbagi 3 bagian yaitu : 32 buah register umum, 64 buah register I/O dan 1 Kbyte SRAM internal. GPR(General Purpose Register Menempati alamat data yaitu : $0000 s/d $001F, Memori I/O menempati 64 alamat $20 hingga $5F. Memori I/O berkapasitas 1024 Byte merupakan Special Fungsi Register yang Khusus (SFR) dengan Alamat $60 hingga $45F.
Data memory
EEPROM Memory
3. Memori Data EEPROM 8 Bit (Electrically Erasable Programmable read only Memory (EEPROM): Merupakan memori nonvolatile (tidak hilang ketika catu daya mati) yang menyerupai SRAM dalam fleksibilitas pemrogramannya. Memori jenis ini pada umumnya digunakan untuk menyimpan datadata permanen yang akan digunakan dalam program, jumlah EEPROM yang tersedia adalah 512 Byte dengan Alamat $000 hingga $1FF.
Register
Status Register The Status Register contains information about the result of the most recently executed arithmetic instruction.
1.
Bit 7 I: Global Interrupt Enable Bit 6 T: Bit Copy Storage, Bit 5 H: Half Carry Flag Bit 4 S: Sign Bit, S = NV Bit 3 V: Twos Complement Overflow Flag Bit 2 N: Negative Flag Bit 1 Z: Zero Flag, Bit 0 C: Carry Flag
Status Register
Status Register adalah register berisi status yang dihasilkan pada setiap operasi yang dilakukan ketika suatu intruksi yang dieksekusi, SREG, merupakan bagian dari inti CPU Mikrokontroler.
sebagai input atau output, dengan cara mengubah isi I/O register Data Direction Register. Misalnya, jika ingin port B dikonfigurasikan sebagai output, maka Data Direction Register port B (DDRB) harus diset sebagai 0xFFH ( sama dengan 255). Jika sebagai input maka 0x00H (sama dengan 0). Contoh : DDRB=255; //Port B dikonfigurasi sebagai output, yaitu PB0 -PB7 DDRD=0x00; // Port D dikonfigurasi sebagai input
Untuk mendeteksi input pada salah satu port, dapat digunakan fungsi PINx, sedangkan mendeteksi per pin pada suatu port dapat digunakan fungsi Pinx.bit Contoh: PORTB=PINC; //Semua data di Port C dikirim ke Port B PORTB.0=PINC.0 ; //Data di Port C.0 dikirim ke Port B.0
Register DDRx
Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A, B, C atau D) sebagai masukan atau luaran atau disebut sebagai arah (direction) dari pin yang bersangkutan: Berikan logika 1 (satu) pada bit yang terkait agar dijadikan sebagai luaran atau output. Berikan logika 0 (nol) pada bit yang terkait agar dijadikan sebagai masukan atau input. Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan perintah :
DDRA= 0x00; sebagai input //seluruh pin-pin pada Port A digunakan
Misalnya lagi, PORTA.0 akan dijadikan masukan sedangkan PORTA.1 , PORTA.2 sampai PORTA.7 akan digunakan sebagai luaran, maka perintahnya :
DDRA= 0xFE;
Perhatikan 0xFE (heksa) = 0b11111110 (biner), perhatikan baik-baik konversi biner ini, setiap bit nilai biner mewakili Pin-Pin pada PortA.
Register PORTx
Jika sebuah PORT, semua atau sebagian, dikonfigurasi sebagai masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait di-pullup atau Floating. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin yang terkait terbaca HIGH atau LOW. Untuk memahami hal ini, perhatikan Gambar.
Register PORTx
Perhatikan contoh-contoh berikut... DDRA=0x00; PORTA = 0xFF; Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di- pullup, artinya pada rangkaian yang terkait, jika menggunakan tombol atau pushbutton, jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW.
Contoh lainnya... DDRB= 0x00; PORTB=0x0F; Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b00001111) atau PORTB.0 sampai PORTB.3 di-pullup, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi floating.
Register PINx
Digunakan untuk membaca masukan pada pin yang bersangkutan. Contoh : .
DDRA = 0xFF; //inisialisasi PORTA sebagai OUTPUT DDRD = 0x00; //inisialisasi PORTD sebagai INPUT SFIOR = 0<<PUD; //aktivasi resistor pull-up internal PORTA = 0xFF; while(1) { i = PIND; PORTA = i; }