Download - pengantar-atmega-16
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
1
MENGENAL MIKROKONTROLER ATMEGA-16
AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur
RISC (Reduced Instruction Set Computer). Hampir semua instruksi dieksekusi dalam satu siklus
clock. AVR mempunyai 32 register general-purpose, timer/counter fleksibel dengan mode
compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan
mode power saving, ADC dan PWM internal. AVR juga mempunyai In-System Programmable
Flash on-chip yang mengijinkan memori program untuk diprogram ulang dalam system
menggunakan hubungan serial SPI. ATMega16
ATMega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer sistem
untuk mengoptimasi konsumsi daya versus kecepatan proses.
Beberapa keistimewaan dari AVR ATMega16 antara lain:
1. Advanced RISC Architecture
� 6 130 Powerful Instructions – Most Single Clock Cycle Execution
� 6 32 x 8 General Purpose Fully Static Operation
� 6 Up to 16 MIPS Throughput at 16 MHz
� 6 On-chip 2-cycle Multiplier
2. Nonvolatile Program and Data Memories
� 6 8K Bytes of In-System Self-Programmable Flash
� 6 Optional Boot Code Section with Independent Lock Bits
� 6 512 Bytes EEPROM
� 6 512 Bytes Internal SRAM
� 6 Programming Lock for Software Security
3. Peripheral Features
� 6 Two 8-bit Timer/Counters with Separate Prescalers and Compare Mode
� 6 Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
� 6 One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and
Capture Mode
� 6 Real Time Counter with Separate Oscillator
� 6 Four PWM Channels
� 6 8-channel, 10-bit ADC
� 6 Byte-oriented Two-wire Serial Interface
� 6 Programmable Serial USART
4. Special Microcontroller Features
� 6 Power-on Reset and Programmable Brown-out Detection
� 6 Internal Calibrated RC Oscillator
� 6 External and Internal Interrupt Sources
� 6 Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Powerdown, Standby
and Extended Standby
5. I/O and Package
� 6 32 Programmable I/O Lines
� 6 40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF
6. Operating Voltages
� 6 2.7 - 5.5V for Atmega16L 6 4.5 - 5.5V for Atmega16
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
2
Gambar 1.1 Pin-Out ATMEGA 16
Gambar 1.2 Diagram Blok Mikrokontroler Yang Disederhanakan
ALU, Instruction Decoder, Accumulator dan Control Logic, sebagaimana ditunjukkan pada
Gambar 1.2, merupakan Otak-nya mikrokontroler yang bersangkutan. Jantungnya berasal
dari detak
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
3
OSC (lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat
berbagai
macam periferal seperti SFR (Special Function Register) yang bertugas menyimpan data-
data
sementara selama proses berlangsung). Instruction Decoder bertugas menerjemahkan
setiap
instruksi yang ada di dalam Program Memory (hasil dari pemrograman yang kita buat
sebelumnya).
Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh ALU
(Arithmetic Logic Unit), mungkin dengan bantuan memori sementara Accumulator yang
kemudian menghasilkan sinyal-sinyal kontrol ke seluruh periferal yang terkait melalui
Control Logic.
Memori RAM atau RAM Memory bisa digunakan sebagai tempat penyimpan sementara,
sedangkan
SFR (Special Function Register) sebagian ada yang langsung berhubungan dengan I/O dari
mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam
operasional mikrokontroler.
ADC atau Analog to Digital Converter (tidak setiap mikrokontroler memiliki ADC internal),
digunakan untuk mengubah data-data analog menjadi digital untuk diolah atau diproses
lebih lanjut.
Timer atau Counter digunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya
seperti sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih
digunakan sebagai penghitung atau pencacah event atau bisa juga digunakan untuk
menghitung berapa jumlah pulsa dalam satu detik dan lain sebagainya. Biasanya sebuah
mikrokontroler bisa memiliki lebih dari 1 timer.
EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak
mendapatkan sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk
melakukan komunikasi dengan periferal eksternal mikrokontroler seperti sensor dan
aktuator.
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
4
PENJELASAN SINGKAT PIN-PIN PADA MIKROKONTROLER AVR ATMEGA16
Vcc Masukan tegangan catu daya
GND Ground,...
Port A (PA7..PA0) Port A berfungsi sebagai masukan analog ke ADC internal pada
mikrokontroler ATMega16, selain itu juga berfungsi sebagai port I/O dwi-arah 8-bit, jika
ADC-nya tidak digunakan. Masing-masing pin menyediakan resistor pull-up internal 4 yang
bisa diaktifkan untuk masing-masing bit.
Port B (PB7..PB0) Port B berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing
pin menyediakan resistor pull-up internal yang biasa diaktifkan untuk masing-masing bit.
Port B juga memiliki berbagai macam fungsi alternatif, sebagaimana ditunjukkan pada Tabel
berikut :
PORT Pin Alternatif Functions
PB7 SCK (SPI Bus Serial Clock)
PB6 MISO (SPI Bus Master Input /Slave Output)
PB5 MOSI (SPI Bus Master Output/Slave Input)
PB4 ����� (SPI Slave Select Input)
PB3 AIN1 (Analog Comparator Negatif Input)
OC0 (Timer/Counter0 Output Compare Match Output)
PB2 AIN0 (Analog Comparator Positif Input)
INT2 (External Interrupt 2 Input))
PB1 T1 (Timer/Counter1 Eksternal Counter Input)
PB0 T0 (Timer/Counter0 Eksternal Counter Input)
XCK (USART Eksternal Clock Input/Output)
Port C (PC7..PC0) Port C berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing
pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. Port
C juga digunakan sebagai antarmuka JTAG, sebagaimana ditunjukkan pada Tabel berikut :
PORT Pin Alternatif Functions
PC7 TOSC2 (timer Oscillator Pin 2)
PC6 TOSC1 (timer Oscillator Pin 1)
PC5 TDI (JTAG Test data In)
PC4 TDO (JTAG Test data Output)
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)
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
5
Port D (PD7..PD0) Port D berfungsi sebagai sebagai port I/O dwi-arah 8-bit.Masingmasing
pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.
PORT D juga memiliki berbagai macam fungsi alternatif, sebagaimana ditunjukkan pada
table berikut :
PORT Pin Alternatif Functions
PD7 OC2 (Timer/Counter2 Output Compare Match Output)
PD6 ICP1 (Timer/Counter1 Input Capture Pin)
PD5 OC1A (Output Compare A Match Output)
PD4 OC1B (Output Compare B Match Output)
PD3 INT1 (External Interrupt 1 Input)
PD2 INT0 (External Interrupt 0 Input)
PD1 TXD (USART Output Pin)
PD0 RXD (USART Input Pin)
PORT SEBAGAI INPUT/OUTPUT DIGITAL
ATMega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bidirectional (dua arah) yaitu sebagai Jalur
Output/Keluaran atau sebagai jalur Input (Masukkan).
Deskripsi Register PORT (Misalnya PORT A)
Register DDRx (Data Direction Register)
Digunakan untuk menentukan apakah sebuah pin pada sebuah 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.
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
6
Contoh:
DDRA = 0b11011010
Register PORTx sebagai pengatur data keluaran PORT (A,B,C,D)
Digunakan untuk men-set logika pada pin dari PORT(A,B,C,atau D) jika pin dari PORT
tersebut digunakan sebagai luaran atau output. Sebagai contoh misalkan semua pin dari
PORTA digunakan sebagai output.
DDRA = 0b11111111; semua pin dari PORTA sebagai output (luaran) PORTA = 0b10001110;
Register PORTX sebagai pengaktif Pull-Up jika pin dari PORT sebagai Input/masukan
Jika misalkan pin 7 dari PORTB dijadikan sebagai input atau masukan (bit 7 register DDRB
=0) maka ketika bit-7 dari register PORTB di set logika ‘1’ maka pin PB7 akan di-pullup.
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
7
Apa itu pull-up ?
Register PINX sebagai pembaca data pada pin yang dijadikan input
Register PINx digunakan membaca kondisi logika pada pin-pin yang dijadikan sebagai
masukan dari port terkait. Untuk mempermudah proses pembacaan data dari pin, sebaiknya
pin tersebut di-set ke kondisi pull-up aktif, seperti yang telah dijelaskan sebelumnya.
DDRC = 0b11110000; pin PC0-PC3 dari PORTC sebagai input(masukan) PORTC = 0b00001111; pull-up pin PC0-PC3 diaktifkan
Perhatikan Gambar Disamping !
Jika PIN 1 dihubungkan ke VCC melalui resistor (R)
maka inilah yang dimaksud dengan kondisi PULL-UP.
Ketika tidak ada tegangan dari luar PIN 1, maka
kondisi logika yang terbaca pada PIN 1 adalah HIGH
(Logik 1), tetapi jika terhubung dengan tegangan
luarannya 0 (ground) maka PIN 1 akan terbaca
sebagai kondisi LOW (logik 0).
Sedangkan PIN.2 dibiarkan begitu saja sehingga
kondisi logik dari PIN.2 begitu rentan terhadap
pengaruh disekitarnya. PIN.2 bisa berlogika HIGH,
bisa juga berlogika LOW, ini artinya logika PIN.2
mengambang (floating)
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
8
Pengenalan Bahasa C untuk Mikrokontroler AVR
Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk
mikrokontroler, hususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini
merupakan High Level Language sisanya menyebut sebagai Midle Level Language. Dengan
demikian seorang programmer dapat menuangkan (menuliskan) algoritmanya dengan
mudah.
Struktur Penulisan Bahasa C
Perhatikan struktur penulisan dalam Bahasa C sebagai berikut.
Keterangan:
� Opsional artinya boleh ditulis boleh tidak, menyesuaikan kebutuhan – tuliskan
pustaka apa saja yang digunakan dan lain sebagainya
� Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program,
demikian juga dengan deklarasi fungsi-fungsi yang terlibat
Tipe-tipe data dalam Bahasa C
� char : 1 byte ( -128 s/d 127 )
� unsigned char : 1 byte ( 0 s/d 255 )
� int: 2 byte ( -32768 s/d 32767 )
� unsigned int: 2 byte ( 0 s/d 65535 )
� long: 4 byte ( -2147483648 s/d 2147483647 )
� unsigned long: 4 byte ( 0 s/d 4294967295 )
� float: bilangan desimal
� array: kumpulan data-data yang sama tipenya.
Deklarasi Variabel dan Konstanta
� Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.
� Penulisan :
[tipe data] [nama] = [nilai];
� Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah.
Penulisan :
const [nama] = [nilai];
� Global variable atau constant dapat diakses di seluruh bagian program.
� Local variable atau constant hanya dapat diakses oleh fungsi tempat
dideklarasikannya.
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
9
Pernyataan
Statement atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan
[;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris.
Lebih dari 1 baris gunakan pasangan [/*] dan [*/]. Pernyataan yang tidak dieksekusi disebut
juga komentar.
Contoh:
suhu = 100*adc/255; //contoh rumus perhitungan suhu Fungsi
Function atau fungsi adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) {
[pernyataan_1]; [pernyataan_2]; ... return output;
}
Contoh :
int konversi_suhu (int data_adc) { int suhu = 100*data_adc/255 ; return suhu; }
Pernyataan berkondisi dan Pengulangan
if else: digunakan untuk menyeleksi satu atau beberapa kondisi
if ( [persyaratan] ) { [statement1]; [statement2]; ...
} else {
[statement3]; [statement4]; ...
}
Contoh :
if (data == 0xf0){ PORTA = 0xff; }else{ PORTA = 0xff; }
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
10
for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali
diulang
for ( [tipe_data nilai awal] ; [syarat] ; [operasi nilai] ) {
[statement1]; [statement2]; ...
}
while: digunakan untuk pengulangan (looping) jika dan sealama memenuhi suatu kondisi
masih dipenuhi (pengulangan selama benar)
while ( [persyaratan] ) { [statement1]; [statement2]; ... }
Operasi Logika dan Bilangan Biner
Operator Logika AND: && NOT: ! OR : ||
Biner AND: & OR : | XOR : ^ Shift right: >> Shift left : <<
Contoh :
for (int i=0;i++;i<100){
delay_ms(100);
data = data + 10;
PORTA = data;
}
Contoh :
while (data == 0xf0){
delay_ms(100);
data = PINC;
data = data & 0xf0;
PORTA = data;
}
Modul Praktikum Mikrokontroler ATMEGA-16
Mengenal Mikrokontroler ATMEGA-16
POLITEKNIK JAMBI | Irwan Kurniawan, ST
11
Apa itu Pengulangan terus-menerus atau infinite looping? Yaitu suatu pengulangan atau
kalang (loop) yang dilakukan terus-menerus tanpa batas, hingga rangkaian tidak lagi
mendapatkan sumber catu daya.
Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C,
adalah yang ada di fungsi utama atau main, seperti contoh berikut...
void main() { // pernyataan-pernyataan program }
Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan
dijalankan sekali saja. Jika menggunakan infinite loop (ada yang mengatakan sebagai
pengulangan tak-hingga atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka
program yang ada di dalam pengulangan tersebut akan dijalankan berulang-ulang terus-
menerus, contoh... void main() { // pernyataan-pernyataan program
while (1); // infinite loop { // pernyataan2 }
}
Untuk keluar dari infinite looping gunakan perintah break;