41
BAB I KONSTRUKSI DASAR ATMEGA16 1.PENDAHULUAN Sering kita mendengar istilah mikrokomputer, mikroprosesor, dan mikrokontroler. Mikroprosesor adalah bagian CPU (central processing unit) dari sebuah komputer, tanpa memori, I/O, dan periferal yang dibutuhkan oleh suatu sistem lengkap. Supaya dapat bekerja, mikroprosesor memerlukan perangkat pendukung seperti RAM, ROM dan I/O. Bila sebuah miroprosesor dikombinasi dengan I/O dan memori (RAM/ROM) akan dihasilkan sebuah mikrokomputer. Sebagai terobosan mikrokomputer ini dapat juga dibuat dalam bentuk single chip yaitu Single Chip Microcomputer (SC M) yang selanjutnya disebut sebagai mikrokontroler. Perbedaan yang menonjol antara mikrokomputer dengan mikrokontroler (SCM) adalah pada penggunaan perangkat I/O dan media penyimpan program. Bila mikrokomputer menggunakan disket atau harddrive lainnya maka mikrokontroler 1

BAB 1 I-.doc

Embed Size (px)

Citation preview

2

BAB I

KONSTRUKSI DASAR ATMEGA16

PENDAHULUAN

Sering kita mendengar istilah mikrokomputer, mikroprosesor, dan mikrokontroler. Mikroprosesor adalah bagian CPU (central processing unit) dari sebuah komputer, tanpa memori, I/O, dan periferal yang dibutuhkan oleh suatu sistem lengkap. Supaya dapat bekerja, mikroprosesor memerlukan perangkat pendukung seperti RAM, ROM dan I/O.

Bila sebuah miroprosesor dikombinasi dengan I/O dan memori (RAM/ROM) akan dihasilkan sebuah mikrokomputer. Sebagai terobosan mikrokomputer ini dapat juga dibuat dalam bentuk single chip yaitu Single Chip Microcomputer (SC M) yang selanjutnya disebut sebagai mikrokontroler.

Perbedaan yang menonjol antara mikrokomputer dengan mikrokontroler (SCM) adalah pada penggunaan perangkat I/O dan media penyimpan program. Bila mikrokomputer menggunakan disket atau harddrive lainnya maka mikrokontroler menggunakan EPROM sebagai penyimpan programnya. Sedangkan keuntungan mikrokontroler dibandingkan dengan mikroprosesor adalah pada mikrokontroler sudah terdapat RAM dan peralatan I/O pendukung sehingga tidak perlu menambahkannya.

PERLENGKAPAN DASAR MIKROKONTROLER

1.2.1. CPU

Unit pengolah pusat (CPU) terdiri atas dua bagian yaitu unit pengendali (CU) serta unit aritmatika dan logika (ALU). Fungsi utama unit pengendali adalah untuk mengambil, mengkode, dan melaksanakan urutan instruksi sebuah program yang tersimpan dalam memori. Sedangkan unit aritmatika dan perhitungan bertugas untuk menangani operasi perhitungan maupun bolean dalam program.

1.2.2. ALAMAT

Pada mikroprosesor/mikrokontroler, apabila suatu alat dihubungkan dengan mikrokontroler maka harus ditetapkan terlebih dahulu alamat (address) dari alat tersebut. Untuk menghindari terjadinya dua alat bekerja secara bersamaan yang mungkin akan meyebabkan kerusakan.

1.2.3. DATA

Mikrokontroler ATmega16 mempunyai lebar bus data 8 bit. Merupakan mikrokontroler CMOS 8-bit daya-rendah berbasis arsitektur RISC yang ditingkatkan.

1.2.4. PENGENDALI

Selain bus alamat dan bus data mikroprosesor/mikrokontroler dilengkapi juga dengan bus pengendali (control bus), yang fungsinya untuk menyerempakkan operasi mikroprosesor/mikrokontroler dengan operasi rangkaian luar.

1.2.5. MEMORI

Mikroprosesor/mikrokontroler memerlukan memori untuk menyimpan program/data. Ada beberapa tingkatan memori,diantaranya register internal, memori utama, dan memori massal. Sesuai dengan urutan tersebut waktu aksesnya dari yang lebih cepat ke yang lebih lambat.

1.2.6. RAM

RAM (Random Acces Memory) adalah memori yang dapat dibaca atau ditulisi. Data dalam RAM akan terhapus bila catu daya dihilangkan. Oleh karena itu program mikrokontroller tidak disimpan dalam RAM. Ada dua teknologi yang dipakai untuk membuat RAM, yaitu RAM static dan RAM dynamic.

1.2.7. ROM

ROM (Read Only Memory) merupakan memori yang hanya dapat dibaca. Data dalam ROM tidak akan terhapus meskipun catu daya dimatikan. Oleh karena itu ROM dapat digunakan untuk menyimpan program. Ada beberapa jenis ROM antara lain ROM murni, PROM, EPROM, EAPROM. ROM adalah memori yang sudah diprogram oleh pabrik, PROM dapat diprogram oleh pemakai sekali saja. Sedangkan EPROM merupakan PROM yang dapat diprogram ulang.

1.2.8. INPUT / OUTPUT

I/O dibutuhkan untuk melakukan hubungan dengan piranti di luar sistem. I/O dapat menerima data dari alat lain dan dapat pula mengirim data ke alat lain. Ada dua perantara I/O yang dipakai, yaitu piranti untuk hubungan serial (UART) dan piranti untuk hubungan paralel (PIO).

1.2.9. MIKROKONTROLER AVR ATMEGA 16

AVR merupakan seri mikrokontroler CMOS 8-bit buatan Atmel, berbasis arsitektur RISC (Reduced Instruction Set Computer) yang ditingkatkan. Hampir semua instruksi dieksekusi dalam satu siklus clock. AVR mempunyai 32 register generalpurpose, timer/counter fleksibel dengan mode compare, interrupt internal dan eksternal, serial UART, programmable Watchdog Timer, dan mode power saving. Mempunyai ADC dan PWM internal. AVR juga mempunyai In-System Programmable Flash onchip yang mengijinkan memori program untuk diprogram ulang dalam sistem menggunakan hubungan serial SPI. ATmega16 adalah mikrokontroler CMOS 8-bit daya-rendah berbasis arsitektur RISC yang ditingkatkan. Untuk lebih jelas tentang arsitektur dari ATmega16 ditunjukan pada gambar 1.1 ATmega16 mempunyai throughput mendekati 1 MIPS per MHz membuat disainer sistem untuk mengoptimasi komsumsi daya versus kecepatan proses.

Beberapa keistimewaan dari AVR ATmega16 antara lain:

Advanced RISC Architecture

130 Powerful Instructions Most Single Clock Cycle Execution

32 x 8 General Purpose Fully Static Operation

Up to 16 MIPS Throughput at 16 MHz

On-chip 2-cycle Multiplier

Nonvolatile Program and Data Memories

8K Bytes of In-System Self-Programmable Flash

Optional Boot Code Section with Independent Lock Bits

512 Bytes EEPROM

512 Bytes Internal SRAM

Programming Lock for Software Security

Peripheral Features

Two 8-bit Timer/Counters with Separate Prescalers and Compare Mode

Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes

One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode

Real Time Counter with Separate Oscillator

Four PWM Channels

8-channel, 10-bit ADC

Byte-oriented Two-wire Serial Interface

Programmable Serial USART

Special Microcontroller Features

Power-on Reset and Programmable Brown-out Detection

Internal Calibrated RC Oscillator

External and Internal Interrupt Sources

Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby and Extended Standby

5. I/O and Package

32 Programmable I/O Lines

40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad MLF

Operating Voltages

2.7 - 5.5V for ATmega16L

4.5 - 5.5V for Atmega16

Gambar 1.1. Blok Diagram Arsitektur ATmega16

KONFIGURASI PIN AVR ATMEGA 16

Pin-pin pada ATmega16 dengan kemasan 40-pin DIP (dual inline package) ditunjukkan oleh gambar 1.2 Kemasan pin tersebut terdiri dari 4 Port yaitu Port A, Port B, Port C,Port D yang masing masing Port terdiri dari 8 buah pin. Selain itu juga terdapat RESET, VCC, GND 2 buah, VCC, AVCC, XTAL1, XTAL2 dan AREF.

Gambar 1.2. Pin -pin ATmega16 kemasan 40 -pin

Diskripsi dari pin-pin ATmega 16L adalah sebagai berikut :

1. VCC : Supply tegangan digital.

2. GND : Ground

3. Port A : Port A sebagai input analog ke A/D konverter. Port A juga sebagai 8-bit bi-directional port I/O, jika A/D konverter tidak digunakan. Pin-pin port dapat menyediakan resistor-resistor internal pull-up. Ketika port A digunakan sebagai input dan pull eksternal yang rendah akan menjadi sumber arus jika resistorresistor pull-up diaktifkan. Pin-pin port A adalah tristate ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.

4. Port B : Port B adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port B mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port B yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistorresistor pull-up diaktifkan. Pin-pin port B adalah tristate ketika kondisi reset menjadi aktif sekalipun clock tidak aktif.

5. Port C : Port C adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port C mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port C yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistorresistor pull-up diaktifkan. Pin-pin port C adalah tristate ketika kondisi reset menjadi aktif seklipun clock tidak aktif. Jika antarmuka JTAG enable, resistor resistor pull-up pada pin-pin PC5(TDI), PC3(TMS), PC2(TCK) akan diktifkan sekalipun terjadi reset.

6. Port D : Port D adalah port I/O 8-bit bi-directional dengan resistor-resistor internal pull-up. Buffer output port D mempunyai karaketristik drive yang simetris dengan kemampuan keduanya sink dan source yang tinggi. Sebagai input, port D yang mempunyai pull eksternal yang rendah akan menjadi sumber arus jika resistorresistor pull-up diaktifkan. Pin-pin port D adalah tristate ketika kondisi reset menjadi aktif seklipun clock tidak aktif.

7. Reset :Sebuah low level pulsa yang lebih lama daripada lebar pulsa minimum pada pin ini akan menghasilkan reset meskipun clock tidak berjalan.

8. XTAL1:Input inverting penguat Oscilator dan input intenal clock operasi rangkaian.

9. XTAL2 :Output dari inverting penguat Oscilator.

10. AVCC :Pin supply tegangan untuk PortA dan A/D converter. Sebaiknya eksternalnya dihubungkan ke VCC meskipun ADC tidak digunakan. Jika ADCdigunakan seharusnya dihubungkan ke VCC melalui low pas filter.

11. AREF : Pin referensi analog untuk A/D konverter.

STRUKTUR MEMORI

Untuk memaksimalkan performa dan paralelisme, AVR menggunakan arsitektur Harvard (dengan memori dan bus terpisah untuk program dan data). Instruksi pada memori program dieksekusi dengan pipelining single level. Selagi sebuah instruksi sedang dikerjakan, instruksi berikutnya diambil dari memori program.

1.4.1. FLASH MEMORI

ATmega16 memiliki 16K byte flash memori dengan lebar 16 atau 32 bit. Kapasitas memori itu sendiri terbagi manjadi dua bagian yaitu bagian boot program dan bagian aplikasi program. Flash memori memiliki kemampuan mencapai 10.000 write dan erase.

Gambar 1.3. Peta Memori Flash

1.4.2. MEMORI SRAM

Penempatan memori data yang lebih rendah dari 1120 menunjukkan register, I/O memori, dan data internal SRAM. 96 alamatmemori pertama untuk file register dan memori I/O, dan 1024 alamat memori berikutnya untuk data internal SRAM. Lima mode pengalamatan yang berbeda pada data memori yaitu direct, indirect, indirect dis-placement, indirect pre-decreament dan indirect post-increament .Pada file register, mode indirect mulai dari register R26-R31.

Pengalamatan mode direct mencapai keseuruhan kapasitas data. Pengalamatan mode indirect displacement mencapai 63 alamat memori dari register X atau Y. Ketika meggunakan mode pengalamatan indirect dengan predecrement dan post increment register X, Y, dan Z akan didicrement-kan atau di-increment-kan. Pada ATmega16 memiliki 32 register, 64 register I/O dan 1024 data internal SRAM yang dapat mengakses semua mode-mode pengalamatan.

Gambar 1.4. Peta Memori SRAM

1.4.3. MEMORI EEPROM

Pada EEPROM ATmega16 memiliki memori sebesar 512 byte engan daya tahan 100.000 siklus write/read.

Register-register pada memori EEPROM :

Bit 159 Res:reserved bits

Bit ini sebagai bit-bit bank pada ATmega16 dan akan selalu membaca

Bit 8..0 EEAR8..0:EEPROM address

Bit-bit ini sebagai alamat EEPROM.

Bit 7..0 EEDR7..0:EEPROM data

Bit-bit ini sebagai data EEPROM.

Gambar 1.5. Register data EEPROM Bit Bit 70

Bit 7..4 Res:reserved bits

Bit-bit ini terdapat pada register kontrol.

Bit ini sebagai Enable Interupt Ready pada EEPROM.

Gambar 1.6. Register kontrol EEPROM Bit Bit 70

Bit 2 Bit ini sebagai Enable Interupt Master pada EEPROM.

Bit 1 Bit ini sebagai write enable pada EEPROM.

Bit 0 Bit ini sebagai read enable pada EEPROM.

INTERUPT

Tabel 1.1 Interrupt vektor

PORT SEBAGAI INPUT/OUTPUT DIGITAL

ATmega16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD. Keempat port tersebut merupakan jalur bidirectional dengan pilihan internal pull-up. Tiap port mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn. Huruf xmewakili nama huruf dari port sedangkan huruf n mewakili nomor bit. Bit DDxn terdapat pada I/O address DDRx, bit PORTxn terdapat pada I/O address PORTx, dan bit PINxn terdapat pada I/O address PINx. Bit DDxn dalam regiter DDRx (Data Direction Register) menentukan arah pin. Bila DDxn diset 1 maka Px berfungsi sebagai pin output.

Bila DDxn diset 0 maka Px berfungsi sebagai pin input. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin input, maka resistor pull-up akan diaktifkan. Untuk mematikan resistor pull-up, PORTxn harus diset 0 atau pin dikonfigurasi sebagai pin output. Pin port adalah tri-state setelah kondisi reset. Bila PORTxn diset 1 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 1. Dan bila PORTxn diset 0 pada saat pin terkonfigurasi sebagai pin output maka pin port akan berlogika 0. Saat mengubah kondisi port dari kondisi tri-state (DDxn=0, PORTxn=0) ke kondisi output high (DDxn=1, PORTxn=1) maka harus ada kondisi peralihan apakah itu kondisi pull-up enabled (DDxn=0, PORTxn=1)atau kondisi output low (DDxn=1, PORTxn=0).

Biasanya, kondisi pull-up enabled dapat diterima sepenuhnya, selama lingkungan impedansi tinggi tidak memperhatikan perbedaan antara sebuah strong high driver dengan sebuah pull-up. Jika ini bukan suatu masalah, maka bit PUD pada register SFIOR dapat diset 1 untuk mematikan semua pull-up dalam semua port. Peralihan dari kondisi input dengan pullup ke kondisi output low juga menimbulkan masalah yang sama. Kita harus menggunakan kondisi tri-state (DDxn=0, PORTxn=0) atau kondisi output high (DDxn=1, PORTxn=0) sebagai kondisi transisi.

Bit 2 PUD : Pull-up Disable. Bila bit diset bernilai 1 maka pull-up pada port I/O akan dimatikan walaupun register DDxn dan PORTxn dikonfigurasikan untuk menyalakan pull-up (DDxn=0, PORTxn=1).

PORT SEBAGAI ANALAG DIGITAL CONVERTER (ADC)

ATmega16 mempunyai ADC (Analog to Digital Converter) internal dengan fitur sebagai berikut (untuk lebih detil dapat mengacu pada datasheet) :

10-bit Resolution

65 - 260 s Conversion Time

Up to 15 kSPS at Maximum Resolution

8 Multiplexed Single Ended Input Channels

Optional Left Adjustment for ADC Result Readout

0 - VCC ADC Input Voltage Range

Selectable 2.56V ADC Reference Voltage

Free Running or Single Conversion Mode ~ ADC Start Conversion by Auto Triggering on Interrupt 9Ibit ha l 49 Sources

Interrupt on ADC Conversion Complete

Sleep Mode Noise Canceler

Dibawah ini gambar timing diagram untuk mode single convertion maksudnya hanya satu input chanel saja yang dikonversi.

Gambar 1.7. Timing diagram mode single conversion

Register-register yang dipakai untuk mengakses ADC adalah:

1.7.1. ADMUX ADC MULTIPLEXER SELECTION REGISTER

Gambar 1.8. Register ADMUX

Bit 7:6 REFS 1:0 : Bit Pemilih tegangan referensi Bit ini berfungsi untuk memilih tegangan referensi ADC untuk lebih jelasnya terdapat pada tabel dibawah ini.

Tabel 1.2 Bit pemilih tegangan ref12

~ Bit 5 ADLAR : ADC Left Adjust Result

Bit 4:0 MUX4:0 : Bit pemilih Analog Channel dan Gain

1.7.2. ADCSRA ADC CONTROL AND STATUS REGISTER

Gambar 1.9. Register ADCSRA13

Bit 7 ADEN : ADC Enable

Diisi 1 untuk mengaktifkan ADC, diisi 0 untuk mematikan ADC sekaligus memberhentikan konversi yang sedang berlangsung.

Bit 6 ADSC : ADC Start Conversion

Pada mode single-conversion, set bit ini untuk memulai tiap konversi. Pada mode free-running, set bit ini untuk konversi pertama kalinya. Bit ADSC bila dibaca akan bernilai 1 selama proses konversi, dan bernilai 0 bila konversi selesai. Mengisi bit ini dengan nilai 0 tidak akan mempunyai dampak.

Bit 5 ADATE : ADC Auto Trigger Enable

Bila bit ini diisi 1 maka auto trigger ADC akan diaktifkan. ADC akan memulai konversi pada saat tepi positif dari sumber sinyal trigger yang dipilih. Sumber sinyal trigger ditentukan dengan menseting bit ADTS pada register SFIOR.

Bit 4 ADIF : ADC Interrupt Flag

Bit ini akan bernilai 1 pada saat ADC selesai mengkonversi dan Data register telah diupdate. ADC Conversion Complete Interrupt akan dijalankan bila bit ADIE dan bit-I pada register SREG diset 1. ADIF akan di-clear secara hardware bila mengerjakan penanganan vektor interrupt yang bersesuaian.

Alternatifnya, ADIF dapat di-clear dengan menuliskan 1. Hatihati bila bekerja dengan Read-Modify-Write pada ADCSRA, interrupt yang tertunda dapat dinonaktifkan/batal. Hal ini juga berakibat sama bila instruksi SBI dan CBI digunakan.

Bit 3 ADIE : ADC Interrupt Enable

Mengisi bit ini dan bit-I pada register SREG menjadi 1 akan mengaktifkan ADC Conversion Complete Interrupt.

Bit 2:0 ADPS2:0 Bit pemilih ADC Prescaler

Menentukan bilangan pembagi antara sumber clock XTAL ke clock ADC.

1.7.3. ADCL, ADCH ADC data register

Bila ADLAR = 0

Gambar 1.10. Register ADCLAR = 0

Gambar 1.11. Register ADCLAR = 1

Setelah ADC selesai melakukan konversi kedua register ini berisi hasil konversi. Bila channel differensial dipilih maka hasilnya dalam format 2s complement. Saat ADCL dibaca, data register tidak akan meng-update data sampai ADCH dibaca. Jika hasilnya dirata kiri (left adjust) dan hanya butuh 8-bit maka cukuplah dengan membaca ADCH. Jika butuh 10-bit, baca ADCL dahulu kemudian ADCH. Register SFIOR berfungsi untuk sumber auto triger. Dimana kita dapat memilih beberapa mode untuk konversi.

Gambar 1.12. Register SFIOR16

Dengan konfigurasi seperti dibawah maka dapat memilih mode start ADC, ADC akan konversi ketika berdasarkan mode yang dipilih.

Tabel 1.3 Pemilihan scaning ADC17

ADTS2ADTS1ADTS0Trigger source

000Free Running mode

001Analog Comparator

010External Interupt Request 0

011TimerCounter0 Compare Match

100TimerCounter0 Overflow

101TimerCounter1 Compare Match 8

110TimerCounter1 Overflow

111TimerCounter1 Capture Event

Bit 7:5 ADTS2:0 : ADC Auto Trigger Source

Bila ADATE dalam register ADCSRA diset 1, maka nilai dalam bit-bit ini akan menentukan sumber mana yang akan mentrigger konversi ADC. Bila bit ADATE bernilai 0, maka bit-bit ini tidak akan mempunyai efek. Sebuah konversi ditrigger oleh sinyal rising-edge dari interrupt flag yang dipilih. Perlu diingat bahwa memindah sumber trigger yang di-clear ke sumber trigger lain yang di-set akan menyebabkan positive-edge pada sinyal trigger. Bila ADEN dalam register ADCSRA diset, juga akan memulai konversi. Memindah mode ke mode freerunning tidak akan menyebabkan pulsa trigger, meskipun bila flag interrupt ADC diset.

Bit 4 RES : Reserved bit

Bit cadangan, bila dibaca hasilnya nol.

TIMER

Timer/couter adalah tujuan umum single channel, module 8 bit timer/counter. Beberapa fasilitas chanel dari timer counter antara lain:

Counter channel tunggal

Pengosongan data timer sesuai dengan data pembanding

Bebas -glitch, tahap yang tepat Pulse Width Modulator (PWM)

Pembangkit frekuensi

Event counter external

Gambar 1.13. Blok diagram timer counter

Gambar diagram block timer/counter 8 bit ditunjukan pada gambar di bawah ini. Untuk penempatan pin I/O telah di jelaskan Ibit hal 67 pada bagian I/O di atas. CPU dapat diakses register I/O, termasuk dalam pinpin I/O dan bit I/O. Device khusus register I/O dan lokasi bit terdaftar pada deskripsi timer/counter 8 bit pada gambar 1.13

1.8.1. TIMING DIAGRAM TIMER/COUNTER

Timer/counter disain sinkron clock timer (clkT0) oleh karena itu ditunjukan sebagai sinyal enable clock pada gambar berikut. Gambar ini termasuk informasi ketika flag interrupt dalam kondisi set. Data timing digunakan sebagai dasar dari operasi timer/counter.

Gambar 1.14. Timing diagram timer/counter, tanpa prescaling

Sesuai dengan gambar dibawah timing diagram timer/counter dengan prescaling maksudnya adalah counter akan menambahkan data counter (TCNTn) ketika terjadi pulsa clock telah mencapai 8 kali pulsa dan sinyal clock pembagi aktif clock dan ketika telah mencapai nilai maksimal maka nilai TCNTn akan kembali ke nol. Dan kondisi flag timer akan aktif ketika TCNTn maksimal.

Gambar 1.15. Timing diagram timer/counter, dengan prescaling

Sama halnya timing timer diatas, timing timer/counter dengan seting OCFO timer mode ini memasukan data ORCn sebagai data input timer. Ketika nilai ORCn sama dengan nilaiTCNTn maka pulsa flag timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa clock telah mencapai 8 pulsa. Dan kondisi flag akan berbalik (komplemen) kondisi ketika nilai TCNTn kembali ke nilai 0 (overflow).

Gambar 1.16. Timing diagram timer/counter, OCFO dengan pescaler (fclk_I/O/8)

Ketika nilai ORCn sama dengan nilai TCNTn maka pulsa flag timer akan aktif. TCNTn akan bertambah nilainya ketika pulsa clock telah mencapai 8 pulsa. Dan kondisi flag akan berbalik (komplemen) kondisi ketika nilai TCNTn kembalimkenilai 0 (overflow).

Gambar 1.17. Timing diagram timer/counter, ,dengan pescaler (fclk_I/O/8)

1.8.2. DESKRIPSI REGISTER TIMER/COUNTER 8 BIT

Gambar 1.18. Regiter timer counter 8 bit

~ Bit 7 FOCO : perbandingan kemampuan output.

FOCO hanya akan aktif ketika spesifik-spesifik bit WGM00 tanpa PWM mode. Adapun untuk meyakinkan terhadap kesesuaian dengan device-device yang akan digunakan,bit ini harus diset nol ketika TCCRO ditulisi saat mengoperasikan mode PWM. Ketika menulisi logika satu ke bit FOCO, dengan segera di paksakan untuk disesuaikan pada unit pembangkit bentuk gelombang. Output OCO diubah disesuaikan pda COM01: bit 0 menentukan pengaruh daya pembanding. Sebuah FOC0 stobe tidak akan membangkitkan beberepa interrupt, juga tidak akan membersihkan timer pada mode CTC mengunakan OCR0 sebagai puncak. FOC0 selalu dibaca nol.

~ Bit 6,3 WGM01:0: Waveform Generation Mode.

Tabel 1.4 Deskripsi bit clock select

Jika mode pin eksternal digunakan untuk timer counter0, perpindahan dati pin T0 akan memberi clock counter dengan tetap jika pin digunakan sebagai output. Dalam hal ini software diijinkan untuk mengontrol perhitungan.

1.8.3. REGISTER TIMER/COUNTER TCNT0

Gambar 1.19. Register timer TCNT0

Register timer/counter memberikan akses secara langsung, keduanya dugunakan untuk membaca dan menulis operasi, untuk penghitung unit 8-bit timer/counter. Menulis ke blok-blok register TCNT0 ( removes ) disesuaikan dengan clock timer berikutnya. Memodifikasi counter ( TCNT0 ) ketika perhitungan berjalan, memperkenalkan resiko kehilangan perbandingan antara TCNC0 dengan register OCR0.

1.8.4. REGISTER TIMER/COUNTER OCR0

Gambar 1.20. Register timer OCR030

Register output pembanding berisi sebuah haraga 8 bit yang mana secara terus-menerus dibandingkan dengan harga counter (TCNT0). Sebuah penyesuaian dapat digunakan untuk membangkitkan output intrrupt pembanding, atau untuk membangkitakan sebuah output bentuk gelombang pada pin OC0.

1.8.5. REGISTER TIMER/COUNTER INTERRUPT MASK

Bit 1 OCIE0: output timer counter menyesuaikan dengan kesesuaian interrupt yang aktif. Ketika bit OCIE0 ditulis satu, dan I-bit pada register status dalam kondisi set (satu), membandingkan timer/counter pada interrupt yang sesuai diaktifkan. Mencocokkan interrupt yang dijalankan kesesuaianpembanding pada timer/counter0 terjadi, ketika bit OCF0 diset pada register penanda timer/counter-TIFR.

Bit 0 TOIE0: Timer/Counter 0 Overflow Interrupt Enable. Ketika bit TOIE0 ditulis satu, dan I-bit pada register status dalam kondisi set ( satu ), timer/counter melebihi interrupt diaktifkan. Mencocokkan interrupt dijalankan jika kelebihan pada timer/counter0 terjadi, ketika bit TOV0 diset pada register penanda timer/counter- TIFR.

1.8.6. REGISTER TIMER/COUNTER REGISTER TIFR

Gambar 1.21. Register timer TIFR

Bit 1 OCF0: Output Compare Flag0.

OCF0 dalam kondisi set ( satu ) kesesuaian pembanding terjadi antara timer/counter dan data pada OCRO Register 0 keluaran pembanding. OCF0 diclear oleh hardware ketika eksekusi pencocokan penangan vector interrupt. Dengan alternatif mengclearkan OCF0 dengan menuliskan logika satu pada flag. Ketika I-bit pada SREG, OCIE0 (Timer/Counter0 penyesuaian pembanding interrupt enable), dan OCF0 diset (satu ), timer/counter pembanding kesesuaian interrupt dijalankan.

Bit 0 TOV0: Timer/Counter Overflow Flag.

Bit TOV0 di ser ( satu ) ketika kelebihan terjadi pada timer/counter0. TOV0 diclearkan dengan hardware ketika penjalanan pencocokan penanganan vector interrupt. Dengan alternatif, TOV0 diclearkan dengan jalan memberikan logika satu pada flag. Ketika I-bit pada SREG, TOIE0 ( Timer/Counter0 overflow interrupt enable), dan TOV0 diset ( satu ), timer/counter overflow interrupt dijalankan. Pada tahap mode PWM yang tepat, bit ini di set ketika timer/counter merubah bagian perhitungan pada $00.

SERIAL PADA ATMEGA16

Universal synchronous dan asynchronous pemancar dan penerima serial adalah suatu alat komunikasi serial sangat fleksibel. Jenis yang utama adalah :

Operasi full duplex ( register penerima dan pengirim serial dapat berdiri sendiri )

Operasi Asychronous atau synchronous

Master atau slave mendapat clock dengan operasi synchronous

Pembangkit boud rate dengan resolusi tinggi

Dukung frames serial dengan 5, 6, 7, 8 atau 9 Data bit dan 1 atau 2 Stop bit

Tahap odd atau even parity dan parity check didukung oleh hardware

Pendeteksian data overrun

Pendeteksi framing error

Pemfilteran gangguan ( noise ) meliputi pendeteksian bit false start dan pendeteksian low pass filter digital

Tiga interrupt terdiri dari TX complete, TX data register empty dan RX complete.

Mode komunikasi multi-processor

Mode komunikasi double speed asynchronous

1.9.1. GENERASI CLOCK

Logic generasi clock menghasilkan dasar clock untuk pengirim dan penerima.USART mendukung empat mode operasi clock : Normal Asynchronous, Double Speed Asynchronous mode Master Synchronous dan Slave Synchronous. Bit UMSEL pada USART control dan status register C (UCSRC) memilih antara operasi Asychronous dan Synchronous. Double speed (hanya pada mode Asynchronous) dikontrol oleh U2X yang mana terdapat pada register UCSRA. Ketika mengunakan mode operasi synchronous (UMSEL = 1) dan data direction register untuk pin XCk (DDR_XCK) mengendalikan apakah sumber clock tersebut adalah internal (master mode) atau eksternal ( slave mode ) pin-pin XCK hanya akan active ketika menggunakan mode Synchronou

Gambar 1.22. Block diagram clock generasi logic

Keterangan sinyal :

Txclk : clock pengirim ( internal clock )

Rxclk : clock dasar penerima ( internal clock ) xcki : input dari pin XCK ( sinyal internal ).Digunakan untuk operasi slave synchronous.

Xcko : clock output ke oin XCK ( sinyal internal ).Digunakan untuk operasi master synchronous

Fosc : frekuensi pin XTAL ( system clock )

1.9.2. GENERASI INTERNAL CLOCK

Generasi internal clock digunakan untuk mode-mode operasi master asynchronous dan synchronous. Register USART boud rate (UBRR) dan down-counter dikoneksikan kepada fungsinya sebagai programmable prescaler atau pembangkit boud rate. Down-counter, dijalankan pada system clock (fosc), dibebani dengan nilai UBRR setiap counter telah dihitung mundur ke nol atau ketika register UBRRL ditulisi.

Clock dibangkitkan setiap counter mencapai nol. Clock ini adalah pembangkit boud rate clock output (fosc/( UBBR+1)). Pemancar membagi boud rete generator clock output dengan 2, 8, atau 16 cara tergantung pada mode. Pembnagkit output boud rate digunakan secara langsung oleh penerima suatu mesin status yang menggunakan 2, 8, atau 16 negara yang tergantung pada cara menyimpan status dari UMSEL, bit-bit U2X dan DDR_XCK. Table di bawah menunjukan penyamaan perhitungan boud rate dan nilai UBRR tiap mode operasi mengunakan sumber pembangkit clock internal.

Tabel 1.5 Operasi mode

Catatan : boud rate menunjukan pengiriman rate bit tiap detik (bps)

BAUD: boud rate (pada bit-bit per detik,bps) fosc frekuensi

33Ibit hal 140system clock osilator

UBRR : terdiri dari UBRRH dan UBBRL,(0-4095)

1.9.3. EKSTERNAL CLOCK

Eksternal clock digunakan untuk operasi mode slave synchronous. Eksternal clock masuk dari pin XCK dicontohkan oleh suatu daftar sinkronisasi register untuk memperkecil kesempatan metastabilitas. Keluaran dari sinkronisasi register kemudian harus menerobos detector tepi sebelum digunakan oleh pengirim dan penerima. Proses ini mengenalkan dua period delay clock CPU danoleh karena itu maksimal frekuensi clock XCK eksternal dibatasi oleh persamaan sebagai berikut :

(1)

Keterangan : bahwa fosc tergantung pada stabilitas system sumber clock. Oleh karena derekomendasikan untuk menambahkan beberapa garis tepi untuk menghindari hilangnya mungkin data dalam kaitan dengan variasi frekwensi.

1.9.4. OPERASI SYNCHRONOUS CLOCK

Ketika mode sinkron digunakan (UMSEL=1), pin XCK akan digunakan sama seperti clock input (slave) atau clock output (master). Dengan ketergantungan antara tepi clock dan data sampling atau perubahan data menjadi sama. Prinsip dasarnya adalah data input (on RxD) dicontohkan pada clock XCK berlawanan tepi dari tepi data output (TxD) sehingga mengalami perubahan.

Gambar 1.23. Operasi synchronous Clock

UCPOL bit UCRSC memilih yang mana tepi clock XCK digunakan untuk data sampling dan yang mana digunakan untuk perubahan data. Seperti yang ditunjukan pada gambar di atas, ketika UCPOL nol data akan diubah pada tepi kenaikan XCK dan dicontohkan pada tepi XCK saat jatuh. Jika UCPOL dalam kondisi set, data akan mengalami perubahan pada saat tepi XCK jatuh dan data akan dicontohkan pada saat tepi XCK naik.

INISIALISASI USART

USART harus diinisialisasi sebelum komunikasi manapun dapat berlansung. Proses inisialisasi normalnyaterdiri daripengesetan boud rate, penyetingan frame format dan pengaktifan pengirim atau penerimatergantung pada pemakaian. Untuk interrupt menjalankan operasi USART , global interrupt flag ( penanda ) sebaiknya dibersihkan ( dan interrupt global disable ) ketika inisialisasi dilakukan. Sebelum melakukan inisialisasi ulang dengan mengubah boud rate atau frame format, untuk meyakinkan bahwa tidak ada transmisi berkelanjutan sepanjang peiode register yang diubah.

Flag TXC dapat digunakan untuk mengecek bahwa pemancar telah melengkapi semua pengiriman, dan flag RXC dapat digunakan untuk mengecek bahwa tidak ada data yang tidak terbaca pada buffer penerima. Tercatat bahwa flag TXC harus dibersihkan sebelum tiap transmisi ( sebelum UDR ditulisi ) jika itu semua digunakan untuk tujuan tersebut. USART sederhana inisialisasi kode contoh berikut menunjukan fungsi satu assembly dan satu C itu mempunyai kesamaan dalam kemampuan. Pada contoh tersebit mengasumsikan bahwa operasi asinkron menggunakan metode poling ( tidak ada interrupt enable ) frame format yang tetap. Boud rate diberikan sebagai fungsi parameter.

Untuk kode assembly, parameter boud rate diasumsikan untuk di simpan pada register r16, r17. Ketika menulis fungsi pada register UCSRC, bit URSEL (MSB) harus diset dalam kaitan dengan pembagian penempatan I/O oleh UBRRH dan UCSRC. Lebih mengedepankan inisialisasi rutin dapat dibuat seperti itu meliputi frame format sebagai parameter, disable interrupt dan lain-lain. Bagai manapun juga banyak aplikasi menggunakan seting tetap boud dan register control, dan untuk aplikasi jenis ini dapat ditempatkan secara langsung pada keseluruhan routine, atau dikombinasikan dengan inisialisasi kode untuk modul I/O yang lain.1