Anda di halaman 1dari 29

MIKROKONTROLER AVR ATMEGA16

OLEH :
ELTAMARA KHAIRUNISA (061630700557)

TAHUN AJARAN 2018/2019


POLITEKNIK NEGERI SRIWIJAYA
PALEMBANG
1. Mikrokontroler AVR ATMEGA16

AVR merupakan seri mikrokontroler Complementary Metal Oxide


Semiconductor (CMOS) 8-bit buatan Atmel berbasis arsitektur RISC (Reduced
Instruction Set Computer). Hampir semua instruksi pada program dieksekusi dalam
satu siklus clock. AVR mempunyai 32 register general-purpose, timer/counter
fleksibel dengan mode compare, interupsi internal dan eksternal, serial UART,
programmable Watchdog Timer, power saving mode, ADC dan PWM. AVR pun
mempunyai In-System Programmable (ISP) Flash on-chip yang mengijinkan
memori program untuk diprogram ulang (read/write) dengan koneksi secara serial
yang disebut Serial Peripheral Inteface (SPI).

AVR memilki keunggulan dibandingkan dengan mikrokontroler lain,


keunggulan mikrokontroler AVR yaitu memiliki kecepatan dalam mengeksekusi
program yang lebih cepat, karena sebagian besar instruksi dieksekusi dalam 1 siklus
clock (lebih cepat dibandingkan mikrokontroler keluarga MCS 51 yang memiliki
arsitektur Complex Intrukstion Set Compute).

ATMEGA16 mempunyai throughput mendekati 1 Millions Instruction Per


Second (MIPS) per MHz, sehingga membuat konsumsi daya menjadi rendah
terhadap kecepatan proses eksekusi perintah.

Beberapa keistimewaan dari AVR ATMEGA16 antara lain:


1. Mikrokontroler AVR 8 bit yang memilliki kemampuan tinggi dengan
konsumsi daya rendah
2. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi
16MHz
3. Memiliki kapasitas Flash memori 16 Kbyte, EEPROM 512 Byte dan SRAM
1 Kbyte
4. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C dan Port D
5. CPU yang terdiri dari 32 buah register
6. Unit interupsi dan eksternal
7. Port USART untuk komunikasi serial
8. Fitur peripheral

Tiga buah Timer/Counter dengan kemampuan perbandingan (compare)


 Dua buah Timer/Counter 8 bit dengan Prescaler terpisah dan Mode
Compare
 Satu buah Timer/Counter 16 bit dengan Prescaler terpisah, Mode
Compare dan Mode Capture

Real Time Counter dengan Oscillator tersendiri.


Empat kanal PWM 8 kanal ADC
 8 Single-ended Channel dengan keluaran hasil konversi 8 dan 10
resolusi (register ADCH dan ADCL)
 7 Diferrential Channel hanya pada kemasan Thin Quad Flat Pack
(TQFP)
 2 Differential Channel dengan Programmable Gain
Antarmuka Serial Peripheral Interface (SPI) Bus
Watchdog Timer dengan Oscillator Internal
On-chip Analog Comparator

9. Non-volatile program memory

2. Arsitektur ATMega16
Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori
program dari memori data, baik bus alamat maupun bus data, sehingga pengaksesan
program dan data dapat dilakukan secara bersamaan (concurrent), adapun blog
diagram arsitektur ATMega16. Secara garis besar mikrokontroler ATMega16 terdiri
dari :
1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.
2. Memiliki kapasitas Flash memori 16Kbyte, EEPROM 512 Byte, dan SRAM
1Kbyte
3. Saluran I/O 32 buah, yaitu Port A, Port B, Port C, dan Port D.
4. CPU yang terdiri dari 32 buah register.
5. User interupsi internal dan eksternal
6. Port antarmuka SPI dan Port USART sebagai komunikasi serial
7. Fitur Peripheral

 • Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode compare
• Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan
mode capture
• Real time counter dengan osilator tersendiri
• Empat kanal PWM dan Antarmuka komparator analog
• 8 kanal, 10 bit ADC
• Byte-oriented Two-wire Serial Interface
• Watchdog timer dengan osilator internal
Blok Diagram ATMega16
3. Deskripsi Mikrokontroler ATMega16
• VCC (Power Supply) dan GND(Ground)
• Port A (PA7..PA0)
Port A berfungsi sebagai input analog pada konverter A/D. Port A juga sebagai suatu
port I/O 8-bit dua arah, jika A/D konverter tidak digunakan. Pin - pin Port dapat
menyediakan resistor internal pull-up (yang dipilih untuk masing-masing bit). Port A
output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi
dan kemampuan sumber. Ketika pin PA0 ke PA7 digunakan sebagai input dan secara
eksternal ditarik rendah, pin–pin akan memungkinkan arus sumber jika resistor
internal pull-up diaktifkan. Port A adalah tri-stated manakala suatu kondisi reset
menjadi aktif, sekalipun waktu habis.

• Port B (PB7..PB0)
Pin B adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih
untuk beberapa bit). Pin B output buffer mempunyai karakteristik gerakan simetris
dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, Pin B yang
secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. Pin
B adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.

• Port C (PC7..PC0)
Pin C adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih
untuk beberapa bit). Pin C output buffer mempunyai karakteristik gerakan simetris
dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pin C yang
secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. pin
C adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.

• Port D (PD7..PD0)
Pin D adalah suatu pin I/O 8-bit dua arah dengan resistor internal pull-up (yang
dipilih untuk beberapa bit). Pin D output buffer mempunyai karakteristik gerakan
simetris dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pin D
yang secara eksternal ditarik rendah akan arus sumber jika resistor pull-up
diaktifkan. Pin D adalah tri-stated manakala suatu kondisi reset menjadi aktif,
sekalipun waktu habis.
• RESET (Reset input)
• XTAL1 (Input Oscillator)
• XTAL2 (Output Oscillator)
• AVCC adalah pin penyedia tegangan untuk Port A dan Konverter A/D.
• AREF adalah pin referensi analog untuk konverter A/D.

4. Peta Memori ATMega16


a. Memori Program Arsitektur ATMega16 mempunyai dua memori utama, yaitu
memori data dan memori program. Selain itu, ATMega16 memiliki memori
EEPROM untuk menyimpan data. ATMega16 memiliki 16K byte On-chip In-System
Reprogrammable Flash Memory untuk menyimpan program. Instruksi ATMega16
semuanya memiliki format 16 atau 32 bit, maka memori flash diatur dalam 8K x 16
bit. Memori flash dibagi kedalam dua bagian, yaitu bagian program boot dan
aplikasi. Bootloader adalah program kecil yang bekerja pada saat sistem dimulai yang
dapat memasukkan seluruh program aplikasi ke dalam memori prosesor.
b. Memori Data (SRAM)
Memori data AVR ATMega16 terbagi menjadi 3 bagian, yaitu 32 register umum, 64
buah register I/O dan 1 Kbyte SRAM internal. General purpose register menempati
alamat data terbawah, yaitu $00 sampai $1F. Sedangkan memori I/O menempati 64
alamat berikutnya mulai dari $20 hingga $5F. Memori I/O merupakan register yang
khusus digunakan untuk mengatur fungsi terhadap berbagai fitur mikrokontroler
seperti kontrol register, timer/counter, fungsi-fungsi I/O, dan sebagainya. 1024
alamat berikutnya mulai dari $60 hingga $45F digunakan untuk SRAM internal.
Peta Memori Data ATMega16
c. Memori Data EEPROM
ATMega16 terdiri dari 512 byte memori data EEPROM 8 bit, data dapat
ditulis/dibaca dari memori ini, ketika catu daya dimatikan, data terakhir yang ditulis
pada memori EEPROM masih tersimpan pada memori ini, atau dengan kata lain
memori EEPROM bersifat nonvolatile. Alamat EEPROM mulai dari $000 sampai
$1FF.

d. Analog To Digital Converter


AVR ATMega16 merupakan tipe AVR yang telah dilengkapi dengan 8 saluran
ADC internal dengan resolusi 10 bit. Dalam mode operasinya, ADC dapat
dikonfigurasi, baik single ended input maupun differential input. Selain itu, ADC
ATMega16 memiliki konfigurasi pewaktuan, tegangan referensi, mode operasi, dan
kemampuan filter derau (noise) yang amat fleksibel sehingga dapat dengan mudah
disesuaikan dengan kebutuhan dari ADC itu sendiri. ADC pada ATMega16 memiliki
fitur-fitur antara lain :

• AREF adalah pin referensi analog untuk konverter A/D.


• Resolusi mencapai 10-bit
• Akurasi mencapai ± 2 LSB
• Waktu konversi 13-260μs
• 8 saluran ADC dapat digunakan secara bergantian
• Jangkauan tegangan input ADC bernilai dari 0 hingga VCC
• Disediakan 2,56V tegangan referensi internal ADC
• Mode konversi kontinyu atau mode konversi tunggal
• Interupsi ADC complete
• Sleep Mode Noise canceler

Proses inisialisasi ADC meliputi proses penentuan clock, tegangan referensi, formal
data keluaran, dan modus pembacaan. Register-register yang perlu diatur adalah
sebagai berikut:
• ADC Control and Status Register A – ADCSRA.
ADEN : 1 = adc enable, 0 = adc disable
ADCS : 1 = mulai konversi, 0 = konversi belum terjadi
ADATE : 1 = auto trigger diaktifkan, trigger berasal dari sinyal yang dipilih (set pada
trigger SFIOR bit ADTS). ADC akan start konversi pada edge positif sinyal trigger.
ADIF : Diset ke 1, jika konversi ADC selesai dan data register ter-update. Namun
ADC Conversion Complete Interrupt dieksekusi jika bit ADIE dan bit-I dalam register
SREG diset.
ADIE : Diset 1, jika bit-I dalam register SREG di-set.
ADPS[0..2]: Bit pengatur clock ADC, faktor pembagi 0 … 7 = 2, 4, 8, 16, 32, 64,
128.

• ADC Multiplexer-ADMUX
REFS 0, 1 : Pemilihan tegangan referensi ADC
00 : Vref = Aref
01 : vref = AVCC dengan eksternal capasitor pada AREF
10 : vref = internal 2.56 volt dengan eksternal kapasitor pada AREF
ADLAR : Untuk setting format data hasil konversi ADC, default = 0

• Special Function IO Register-SFIOR


SFIOR merupakan register 8 bit pengatur sumber picu konversi ADC, apakah dari picu
eksternal atau dari picu internal.

ADTS[0...2] : Pemilihan trigger (pengatur picu) untuk konversi ADC, bit-bit ini akan
berfungsi jika bit ADATE pada register ADCSRA bernilai 1. Konfigurasi bit
ADTS[0...2] : dapat dilihat pada Tabel 2.1.
ADHSM : 1. ADC high speed mode enabled. Untuk operasi ADC, bit ACME, PUD,
PSR2 dan PSR10 tidak diaktifkan.

Pemilihan Sumber Picu ADC


Fitur :
• Kinerja tinggi, rendah daya AVR ® 8-bit Microcontroller
• Advanced RISC Arsitektur
- 131 Instruksi Powerfull - Most Single-clock Cycle Execution
- 32 x 8 Register General Purpose Working
- Operasi Statis Penuh
- Sampai dengan 16 MIPS throughput pada 16 MHz
- 2-siklus Multiplier berada pada chipnya

• Ketahanan Tinggi segmen memori Non-volatile


- 16K Bytes pemograman memori flash didalam sistemnya
- 512 Bytes EEPROM
- 1K Byte internal SRAM
- Menulis / Menghapus dengan Siklus: 10.000 Flash/100, 000 EEPROM
- Data retensi: 20 tahun pada 85 ° C/100 tahun pada 25 ° C (1)
- Boot Kode Bagian Opsional dengan Bits Lock Independen

 Pemrograman didalam sistem secara On-chip Program Boot


 Baca-Tulis-Saat beroperasi

- Programming Lock untuk Keamanan Software

• JTAG (IEEE std 1149,1 Compliant.) Interface


- Batas-scan Kemampuan Menurut Standar JTAG
- Ekstensif On-chip Dukungan Debug
- Pemrograman Flash, EEPROM, Sekering, dan Lock Bits melalui Antarmuka JTAG

• Fitur Peripheral
- Dua 8-bit Timer / Counter dengan Prescalers terpisah dan Mode Bandingkan
- Satu 16-bit Timer / Counter dengan Prescaler terpisah, Mode Bandingkan, dan
Capture
Mode
- Counter Real Time dengan Osilator terpisah
- Empat PWM Channels
- 8-channel, 10-bit ADC
 8 Single-ended Saluran
 7 Differential Saluran dalam Paket TQFP Hanya
 2 Differential Saluran dengan Gain Programmable pada 1x, 10x, atau 200x

- Byte-oriented Antarmuka Dua-kawat Serial


- Serial USART Programmable
- Master / Slave SPI Serial Interface
- Timer Programmable Watchdog On-chip dengan Oscillator terpisah
- Komparator Analog On-chip

• Fitur Khusus Mikrokontroler


- Power-on Reset dan Programmable Brown-out Detection
- RC Oscillator internal yang Dikalibrasi
- Interrupt Sumber Eksternal dan Internal
- Enam Sleep Mode: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
dan siaga diperpanjang

• I / O dan Paket
- 32 Programmable I / O
- 40-pin PDIP, 44-lead TQFP, dan 44-pad QFN / MLF

• Operasi Tegangan
- 2.7 - 5.5V untuk ATmega16L
- 4.5 - 5.5V untuk ATmega16

• Kelas Kecepatan
- 0 - 8 MHz untuk ATmega16L
- 0 - 16 MHz untuk ATmega16

• Konsumsi Daya @ 1 MHz, 3V, dan 25 ° C untuk ATmega16L


- Aktif: 1,1 mA
- Diam Mode: 0,35 mA
- Power-down Mode: <1 p="p">
5. Konfigurasi Pin AVR ATMEGA16

Gambar 2.1 Konfigurasi Kaki (pin) ATMEGA16

Konfigurasi pin ATMEGA16 dengan kemasan 40 pin Dual In-line Package


(DIP) dapat dilihat pada Gambar 2.13. dari gambar diatas dapat dijelaskan fungsi
dari masing-masing pin ATMEGA16 sebagai berikut.
6. VCC merupakan pin yang brfungsi sebagai masukan catu daya
7. GND merupakan pin Ground
8. Port A (PA0 – PA7) merupakan pin input/output dua arah (full duplex) dan
selain itu merupakan pin masukan ADC
4. Port B (PB0 – PB7) merupakan pin input/output dua arah (full duplex) dan
selain itu merupakan pin khusus, seperti dapat dilihat pada tabel dibawah ini.

Tabel 2.1 Fungsi Khusus Port B

Pin Fungsi Khusus

XCK (USART External Clock Input/Output)


PB0
T0 (Timer/Counter0 External Counter Input)

PB1 T1 (Timer/Counter1 External Counter Input)

INT2 (External Interupt 2 Input)


PB2
AIN0 (Analaog Comparator Negative Input)

OC0 (Timer/Counter0 Output Compare Macth Output)


PB3
AIN1 (Analaog Comparator Negative Input)

PB4 (SPI Slave Select Input)

PB5 MOSI (SPI Bus Master Output /Slave Input)

PB6 MISO (SPI Bus Master Input/Slave Output)

PB7 SCK (SPI Bus Serial Clock)


Port A (PC0 – PC7) merupakan pin input/output dua arah (full duplex) dan selain itu
merupakan pin khusus, seperti dapat dilihat pada tabel dibawah ini.

Tabel 2.2 Fungsi Khusus Port C

Pin Fungsi Khusus

PC0 SCL (Two-wire Serial Bus Clock Line)

PC1 SDA (Two-wire Serial BusData Input/Output Line)

PC2 TCK (Joint Test Action Group Test Clock)

PC3 TMS (JTAG Test Mode Select)

PC4 TDO (JTAG Data Out)

PC5 TDI (JTAG Test Data In)

PC6 TOSC1 (Timer Oscillator pin 1)

PC7 TOSC2 (Timer Oscillator pin 2)

6. Port D (PD0 – PD7) merupakan pin input/output dua arah (full duplex) dan
selain itu merupakan pin khusus, seperti dapat dilihat pada tabel dibawah ini.
Tabel 2.3 Fungsi Khusus Port D

Pin Fungsi Khusus

PD0 RXD (USART Input Pin)

PD1 TXD (USART Output Pin)

PD2 INT0 (External Interupt 0 Input)

PD3 INT1 (External Interupt 1 Input)

PD4 OC1B (Timer/Counter1 Output Compare B Macth Output)

PD5 OC1A (Timer/Counter1 Output Compare A Macth Output)

PD6 ICP (Timer/Counter1 Input Capture Pin)

PD7 OC2 (Timer/Counter2 Output Compare Macth Output)

7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler


XTAL1 dan XTAL2, merupakan pin masukan external clock

8. AVCC merupakan pin masukan tegangan untuk ADC

9. AREF merupakan pin masukan tegangan referensi untuk ADC.


9. Timer/Counter Mikrokontroler ATMEGA16

Mikrokontroler AVR ATMEGA16 memiliki tiga buah Timer/Counter, yaitu:


Timer 0 (8 bit), Timer 1 (16 bit) dan Timer 2 (8 bit). Namun, pada sub bab ini hanya
akan membahas mengenai Timer/Counter 1 saja. Timer/Counter 1 mempunyai
keunggulan dibanding Timer/Counter 0 atau 2, namun cara mengatur Timer 0, 1, 2
sama saja, yaitu pada masing-masing registernya. Timer/Counter 1 dapat
menghitung sampai dengan 65536 Timer/Counter 0 atau 2 hanya sampai dengan
256. Selain itu, Timer 1 ini memiliki mode operasi sebanyak 16 mode (Tabel 2.8).
Register pada Timer ini dibagi menjadi beberapa register dengan fungsi khusus,
yaitu: control register A, control register B dan interrupt mask.

Register – register pada Timer/Counter 1 yang berfungsi untuk mengatur


timer dan mode operasinya. Register tersebut mempunyai fungsi masing-masing
sebagai berikut.

a. Timer/Counter 1 Control Register A (TCCR1A)

Tabel 2.4 Register TCCR1A

Bit 7 6 5 4 3 2 1 0
TCCR1 COM1A COM1A COM1B COM1B FOC1 WGM1 WGM1
A 1 0 1 0 A FOC1B 1 0

Keterangan:

Bit 7 dan 6 : Compare Output untuk kanal A

Bit 5 dan 4 : Compare Output untuk kanal B


Bit COM1 ini mempunyai Compare Output Mode pada setiap mode operasinya.

Mode tersebut mempengaruhi pin I/O OC1 A dan B.

Tabel 2.5 Compare Output Mode, Non-PWM

COM1A1/COM1 COM1A1/COM1B
B1 1 Deskripsi

0 0 NormalPort Operation,OC1A/OC1B
disconnected

0 1 Toggle OC1A/OC1B on compare match

Clear OC1A/OC1B on compare match (low


1 0 level)

Set OC1A/OC1B on compare match (high


1 1 level)

Tabel 2.6 Compare Output Mode, Fast PWM

COM1A1/COM1 COM1A1/COM1
B1 B1 Deskripsi

Normal Port Operation, OC1A/OC1B


disconnected
0 0

Toggle OC1A on compare match, OC1B


disconnected
0 1
Clear OC1A/OC1B on compare match,
set
OC1A/OC1B at BOTTOM (non-inverting
1 0 mode)

Set OC1A/OC1B on compare match,


clear
1 1 OC1A/OC1B at BOTTOM (inverting mode)

Tabel 2.7 Compare Output Mode

Phase Correct dan Phase Correct & Frequency PWM

COM1A1/COM1 COM1A1/COM1B
B1 1 Deskripsi

Normal Port Operation, OC1A/OC1B


disconnected
0 0

Toggle OC1A on
compare match, OC1B
0 1
disconnected

Clear OC1A/OC1B on match when


compare up-
1 0
counting, set
OC1A/OC1B on compare match when
down-
counting
Clear OC1A/OC1B on compare match when
up-
counting, set OC1A/OC1B on compare
1 1 match when
down-counting
Bit 3 : Force Output untuk kanal A

Bit 2 : Force Output untuk kanal B

Bit 1 dan 0 : Waveform Generation Mode

Mode operasi sebanyak 16 mode, diatur dalam bit WGM ini. Mode operasi

tersebut ditunjukkan oleh Tabel 2.8 di bawah ini.

Tabel 2.8 Deskripsi Bit WGM

Mo WGM1 WGM1 WGM WGM1 Update TOVn


de 3 2 11 0 Mode Operasi TOP of Flag
(PWM (PWM1 OCRn Set-on
(CTC1) 11) 0)

Immedia
0 0 0 0 0 Normal 0xFFFF te MAX

PWM, Phase
1 0 0 0 1 Correct 8-Bit 0x00FF TOP BOTTOM

PWM, Phase
2 0 0 1 0 Correct 9-Bit 0x01FF TOP BOTTOM

PWM, Phase
3 0 0 1 1 Correct 10-Bit 0x03FF TOP BOTTOM

Immedia
4 0 1 0 0 CTC OCR1A te MAX
BOTTO
5 0 1 0 1 Fast PWM, 8-Bit 0x00FF M TOP
BOTTO
6 0 1 1 0 Fast PWM, 9-Bit 0x01FF M TOP
BOTTO
7 0 1 1 1 Fast PWM, 10-Bit 0x03FF M TOP

PWM, Phase and BOTTO


Frequency ICR1 M BOTTOM
8 1 0 0 0
Correct
PWM, Phase and BOTTO
Frequency OCR1A M BOTTOM
9 1 0 0 1
Correct
PWM, Phase
10 1 0 1 0 Correct ICR1 TOP BOTTOM
PWM, Phase
11 1 0 1 1 Correct OCR1A TOP BOTTOM
Immedia
12 1 1 0 0 CTC ICR1 te MAX
13 1 1 0 1 Reserved - - -
BOTTO
14 1 1 1 0 Fast PWM ICR1 M TOP
BOTTO
15 1 1 1 1 Fast PWM OCR1A M TOP

b. Timer/Counter Control Register 1 B (TCCR1B)

Tabel 2.9 TCCR1B

Bit 7 6 5 4 3 2 1 0
TCCR1
B ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10
Keterangan:

Bit 7 : Input Capture Noise Canceler, ketika bit ini diset 1(high) maka

Noise Canceler aktif dan masukkan dari Input Capture Pin (ICP1) terfilter.

Bit 6 : Input Capture Edge Select, bit ini digunakan untuk trigger yang

disebabkan oleh edge ICP1. Jika bit ini diset 1 maka sebuah rising edge (positif)
akan men-trigger capture, Jika bit ini diset 0 maka sebuah falling edge (negatif)
akan men-trigger capture.

Bit 5 : Reserved, bit ini akan digunakan pada tahap pengembangan

selanjutnya.

Bit 4 dan 3 : lihat deskripsi register TCCR1A.

Bit 2, 1 dan 0 : Clock Select, bit ini digunakan untuk memilih jenis sumber clock

untuk digunakan pada suatu timer/counter.

Tabel 2.10 Deskripsi Clock Select Bit

CS12 CS11 CS10 Deskripsi

Tidak ada clock (Timer/Counter


terhenti)
0 0 0
0 0 1 CLK_I/O/1 (tanpa Prescaling)
0 1 0 CLK_I/O/8 (dari Prescaling)
0 1 1 CLK_I/O/64 (dari Prescaling)
1 0 0 CLK_I/O/256 (dari Prescaling)
1 0 1 CLK_I/O/1024 (dari Prescaling)
Sumber clock (eksternal)berasal dari
pin
1 1 0
T1, clock pada falling edge
Sumber clock (eksternal)berasal dari
pin
1 1 1
T1, clock pada rising edge
c. TCNT1, digunakan untuk menyimpan nilai timer yang diinginkan. TCNT1
dibagi menjadi 2 register 8 bit, yaitu TCNT1H dan TCNT1L.
Tabel 2.11 Register TCNT1

Bit 7 6 5 4 3 2 1 0
TCNT1 TCNT1[15:8
H ]

TCNT1
L TCNT1[7:0]

d. TIMSK dan TIFR, Timer Interrupt Mask Register (TIMSK) dan Timer
Interrupt Flag (TIFR) digunakan untuk mengendalikan interrupt mana yang

diaktifkan, dengan cara melakukan setting pada TIMSK dan untuk


mengetahui interrupt mana yang sedang terjadi.

Tabel 2.12 Register TIMSK

Bit 7 6 5 4 3 2 1 0
TIMS
K OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0

Keterangan:

Bit 7 : Timer/Counter2 Output Compare Match Interrupt Enable

Bit 6 : Timer/Counter2 Overflow Interrupt Enable

Bit 5 : Timer1 Input Capture Interrupt Enable


Bit 4 : Timer/CounterA Output Compare Match Interrupt Enable

Bit 3 : Timer/CounterB Output Compare Match Interrupt Enable

Bit 2 : Timer/Counter1 Overflow Interrupt Enable

Bit 1 : Timer/Counter0 Output Compare Match Interrupt Enable

Bit 0 : Timer/Counter0 Overflow Interrupt Enable

Tabel 2.13 Register TIFR

Bit 7 6 5 4 3 2 1 0
TIF
R OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
Keterangan:

Bit 7 : Output Compare Flag2

Bit 6 : Timer/Counter2 Overflow Flag

Bit 5 : Timer1 Input Capture Interrupt Flag

Bit 4 : Output Compare Flag1A

Bit 3 : Output Compare Flag1B

Bit 2 : Timer/Counter1 Overflow Flag

Bit 1 : Output Compare Flag0

Bit 0 : Timer/Counter0 Overflow Flag

e. OCR1n, Output Compare Register Timer 1 n (n = A, B) merupakan register


yang digunakan untuk membangkitkan interupsi eksternal dengan melakukan
perbandingan (Output Compare) atau juga dapat digunakan untuk
membangkitkan bentuk gelombang (PWM). Fungsi tersebut di atas
dikeluarkan oleh pin OC1n (n = A, B).

Tabel 2.14 Register OCR1n

Bit 7 6 5 4 3 2 1 0
OCR1n
H OCR1n[15:8]
OCR1n
L OCR1n[7:0]
Setiap mode timer seperti CTC, Fast PWM, Phase Correct PWM dan Phase
and Frequency Correct PWM, mempunyai persamaan untuk menghitung frekuensi
(clock) yang akan dihasilkannya.

10. Pemrograman Mikrokontroler ATMEGA16


Pengembangan sebuah system menggunakan mikrokontroler AVR buatan
ATMEL menggunakan software AVR STUDIO dan CodeVision AVR. AVR
STUDIO merupakan software khusus untuk bahasa assembly yang mempunyai
fungsi sangat lengkap, yaitu digunakan untuk menulis program, kompilasi, simulasi
dan download program ke IC mikrokontroler AVR dapat dilakukan pada
CodeVision. CodeVision AVR memilki fasilitas terminal, yaitu untuk melakukan
komunikasi serial dengan mikrokontroler yang sudah deprogram. Proeses
download program ke IC mikrokontroler AVR dapat menggunakan system
download secara In-System Programming (ISP). ISP Flash On-chip mengijinkan
memori program untuk diprogram ulang dalam sistem menggunakan hubungan
serial SPI.
a. Bahasa Assembly AVR
Bahasa assembly AVR merupakan bahasa asli/mesin yang berupa
instruksi – instruksi tertentu sesuai dengan ketentuan pabrikan ATMEL. Di bawah
ini merupakan contoh sebuah penulisan program dalam bahasa assembly untuk
mikrokontroler AVR ATMEGA16.
Setiap program terdiri dari inisialisasi program dan program utama.
Inisialisasi program berisi definisi chip yang digunakan, mendefinisikan nama
variable, konstanta, alamat awal program, stack pointer.
b. Bahasa C Pada AVR ATMEGA16
Mikrokontroler AVR dapat pula menggunakan bahasa C dalam penulisan
programnya, sehingga dapat memudahkan dan mempersingkat instruksi – intruksi
yang digunakan dalam bahasa assembly. Dalam pembuatan program yang
menggunakan fungsi atau aritmatika, Bahasa C menawarkan kemudahan dengan
menyediakan fungsi – fungsi khusus, seperti: pembuatan konstanta, operator
aritmatika, operatot logika, operator bitwise dan operator Assigment. Selain itu,
bahasa C menyediakan Program kontrol seperti: Percabangan (if dan if…else),
Percabangan switch, Looping (for, while dan do…while), Array, serta fungsi –
fungsi lainnya. Di bawah ini merupakan contoh penulisan program dalam bahasa C
untuk mikrokontroler AVR ATMEGA16.

Anda mungkin juga menyukai