Maswie BloG

Free Delphi, Visual Basic, Microcontrol, Mechatronic tutorial

AVR AT90S2313

Posted by maswie2000 on November 3, 2007

Dalam bab ini akan dibahas fitur-fitur dan arsitektur mikrokontroler AVR seri AT90S2313. Seri AT90S2313 dipilih karena mikrokontroler ini dapat mewakili beberapa seri yang lain, baik dari segi instruksi yang digunakan, maupun peripheralnya yang relative lengkap. Dengan mempelajari tipe AVR yang lain, yang pada dasarnya memiliki konsep dan arsitektur yang hampir sama. Bagi Anda yang ingin mendapatkan informasi lengkap mengenai jenis mikrokontroler ini, Anda juga dapat membacanya pada datasheet AT90S2313.

2.1 Fitur-fitur AT90S2313

Fitur-fitur utama antara lain sebagai berikut:

1. 118 macam instruksi

2. 32 x 8 bit General Purpose Register,

3. Memori program Flash pada ROM 2 K word (1Kx16),

4. Memori data SRAM 128 byte,

5. Memori EEPROM 128 byte,

6. Jalur I/O 15 pin,

7. Timer/counter 2 buah,

8. Output PWM 1 kanal,

9. Serial I/O menggunakan USART,

10. Komparator analog.

2.2 Hardware

AT90S2313 beredar dalam dua jenis kemasan, yaitu 20 DIP dan 20 SOIC. Kemasannya yang cukup sederhana memudahkan kita yang hendak mempelajari cara-cara pemrograman mikrokontroler AVR tanpa harus dipusingkan oleh instalansi kabel yang melibatkan banyak jalur sebagaimana pada mokrokontroler dengan jumlah pin di atas 40 buah.

screenhunter_01-nov-03-1936.gif

 

Gambar 2.1 Pin-pin Pada AT90S2313

 

Deskripsi Pin

VCC Power supply.

GND Ground.

Port B (PB7 . .Pb0) port B merupakan Port I/O 8-bit bi-direktional. Pin-pin pada port ini dapat diberi resistor pull-up internal secara individual. PB0 dan PBI juga dapat digunakan untuk melayani input sebagai komparator analog. Buffer port B dapat mencatu arus hingga 20 mA dan dapat secara langsung men-drive LED.

Port D (PD6 . .PD0) Port D memiliki tujuh buah pin I/O bi directional, yakni PD6 . .PD0. Seperti halnya port B, pin-pin pada port ini juga mampu men-drive LED karena dapat mencatu arus hingga 20 mA.

RESET Reset input. Kondisi logika rendah “0” lebih dari 50 ns pada pin ini akan membuat mikrokontroler masuk ke dalam kondisi reset.

XTA11 Input bagi inverting oscillator amplifier dan input bagi clock internal.

XTAL2 Output inverting oscillator amplifier.

2.3 Arsitektur AT90S2313

Mikrokontroler AT90S2313 merupakan mikrokontroler CMOS dengan daya rendah yang memiliki arsitektur AVR RISC 8-bit. Arsitektur ini mendukung kemampuan untuk melaksanakan eksekusi instruksi hanya dalam satu siklus clock osilator. Hal ini sangat cocok bagi Anda yang menginginkan suatu disain system aplikasi yang cepat dan hemat daya. AVR ini memiliki fitur untuk menghemat konsumsi daya, yaitu dengan menggunakan mode sleep. Mode sleep pada mikrokontroler AVR ada dua macam, yaitu mode idle dan mode power-down.

screenhunter_02-nov-03-1937.gif

 

Gambar 2.2 Blok Diagram AT90S2313

Mikrokontroler AVR memiliki model arsitektur Harvard, di mana memori dan bus untuk program dan data dipisahkan. Dalam arsitektur AVR, seluruh 32 register umum yang ada terhubung langsung ke ALU prosesor. Hal inilah yang membuat AVR begitu cepat dalam mengeksekusi instruksi. Dalam satu siklus clock terdapat dua register independent yang dapat diakses oleh satu instruksi. Teknik yang digunakan adalah fect during execution atau memegang sambil mengerjakan, dilakukan eksekusi operasi, dan hasilnya disimpan kembali kedalam salam satu register, semuanya dilakukan hanya dalam satu siklus clock. Arsitektur AVR AT90S2313 ditunjukkan dalam gambar berikut.

screenhunter_03-nov-03-1937.gif

 

Gambar 2.3 Arsitektur AT90S2313

Dari 32 Register yang ada, terdapat enam buah register yang dapat digunakan untuk pengamatan tidak langsung 16-bit sebagai register pointer. Register tersebut memiliki nama khusus, yaitu X, Y, dan Z. Masing-masing terdiri dari sepasang register. Register-register khusus tersebut adalah R26:R27 (register X), R28:R29(register Y), dan R30:R31 (register Z). Selain ketiga pasangan register tersebut, sebenarnya terdapat satu pasang register lagi yang dapat anda gunakan bersama untuk pengolahan data 16-bit, yaitu R24:R25. Pasangan register ini tidak memiliki nama khusus sebagaiman ketiga pasangan register yang disebutkan di muka.

 

2.3.1 Organisasi Memori

screenhunter_04-nov-03-1938.gif
Gambar 2.4 Peta memori AT90S2313

 

Dalam organisasi memori AVR, 32 register keperluan umum (GPR) menempati space data pada alamat terbawah, yaitu $00 sampai $1F. Sedangkan register-register khusus untuk penanganan I/O dan control terhadap mikrokontroler, menempati 64 alamat berikutnya, yaitu mulai dari $20 hingga $5F. Register-register ini merupakan register-register yang khusus digunakan untuk melakukan pengaturan fungsi terhadap berbagai perihal mikrokontroler semacam control register, timer/counter, fungsi-fungsi I/O, dan sebagainya. Kelompok register ini dinamakan register I/O. Alamat berikutnya digunakan untuk SRAM 128 byte, yaitu pada lokasi $60 sampai dengan $DF. Gambaran peta memori untuk AVR AT90S2313 ditunjukan oleh Gambar 2.4.

2.3.2 General Purpose Register (GPR)

Seluruh instruksi operasi register dalam AVR memiliki akses langsung ke semua register. Kecuali untuk lima instruksi aritmatika logika yang mengoperasikan register dengan konstanta (SBCI, SUBI, CPI, ANDI, dan ORI) dan LDI yang mengoperasikan pemuatan data konstan imediet. Instruksi-instruksi tersebut dioperasikan hanya pada separo lokasi register terakhir GPR (R16 sampai R31). Instruksi untuk operasi umum seperti SBC, SUB, CP, AND, OR dan operasi lainnya yang mengoperasikan dua register atau satu register dapat melakukan akses terhadap seluruh register.

screenhunter_05-nov-03-1938.gif

Gambar 2.5 General Purpose Register AT90S2313

2.4 I/O Port

Seperti telah disampaikan sebelumnya, AT90S2313 memiliki dua buah port I/O yaitu PortB dan PortD. Berikut ini penjelasan singkat mengenai kedua port I/O tersebut.

2.4.1 PORT B

Port B merupakan port I/O 8-bit bi-directional yang masing-masing pinnya dapat dikonfigurasi secara individual. Masing-masing pin dalam port ini juga memiliki fasilitas berupa resistor pull-up internal yang berguna untuk memberikan kondisi yang tentu (tidak ngambang) pada saat dikonfigurasi sebagai input, tanpa harus memberikan pull-up eksternal. Untuk mendukung penggunaan port ini, terdapat tiga buah alamat memori yang khususu digunakan untuk menangani fungsi port B.

Alamat memori tersebut adalah:

Data register (PORTB), berlokasi pada $18 ($38). Register ini bisa ditulis/baca.

Bit 7

6

5

4

3

2

1

0

Data Direction Register port B (DDRB), berlokasi pada $17($37). Register ini bisa ditulis/baca.

Bit 7

6

5

4

3

2

1

0

Port B Input Pin (PINB), berlokasi pada $16($36). PINB bukanlah suatu register, namun pin-pin fisik pada hardware mikrokontroler. PINB ini hanya bisa dibaca. Ketika PORTB dibaca, maka data Latch dari PortB akan dibaca, sedangkan bila PINB dibaca, maka logika yang sedang terjadi pada pin-pin Port B yang akan dibaca.

Bit 7

6

5

4

3

2

1

0

Beberapa pin pada Port B memiliki fungsi alternative, yang bisa digunakan sesuai dengan kebutuhan. Pin-pin tersebut adalah PB0, PBI, PB3, PB5, PB6, dan PB7.

Tabel 2.1 Fungsi Alterlatif Port B

Pin Port B

Fungsi Alternatif

PB0

AIN0 (Input positif untuk komparator analog)

PB1

AIN1 (Input negatif untuk komparator analog)

PB3

OC1 (Output Timer/Counter1)

PB5

MOSI (Jalur input data untuk download memori)

PB6

MISO (Jalur output data untuk download memori)

PB7

SKC (Input clock serial)

Pin-pin pada port B merupakan pin umum yang dapat anda konfigurasi sebagai pin input atau output secara individual. Untuk konfigurasi suatu pin pada port B, Anda harus mengatur bit-bit dalam register ini sesuai dengan pin-pin pada Port B. Bila anda menginginkan suatu pin sebagai input, maka bit yang sesuai dengan register DDRB harus anda beri logika “0”, sedangkan bila anda ingin konfigurasi sebagai output, maka bit tersebut harus anda set “1”. Apabila PORTBn dalam register PORTB Anda set “1”, sementara pin yang bersangkutan anda konfigurasi sebagai input (DDRB=”0”), maka resistor pull-up akan secara otomatis ON. Untuk mematikan pull-up, bit PORTBn harus anda clear (“0”), atau pin yang bersangkutan harus anda konfigurasi sebagai output.

2.4.2 PORT D

Sebagaiman Port B, Port D juga memiliki tiga buah lokasi memori yang berkaitan dengan penggunaannya sebagai port I/O. Memori tersebut adalah PORTD, DDRD, dan PIN.

̶ PORTD (Data Direction), berlokasi pada $12($32).

Bit 7

6

5

4

3

2

1

0

̶ DDRD (Data Direction Register port D) berlokasi pada $11($31).

Bit 7

6

5

4

3

2

1

0

̶ PIND (Port D Input Pins), berlokasi pada $10($30). Pind bukanlah register, dan berada dengan dua memori yang lain, PIND hanya bisa dibaca.

Bit 7

6

5

4

3

2

1

0

Format Port D mirip dengan Port B dalam hal cara konfigurasi I/O dan pennggunaan registor Pull-up. Hal yang sedikit membedakan dengan Port B adalah pada Port D, jumlah bit/pin yang bisa digunakan hanya 7 buah. Hal ini sesuai dengan jumlah pin yang ada pada port D. Pin-pin pada Port D diberi nama PD6 . .PD0. Selain itu, semua pin pada Port D juga memilikji fungsi khusus.

Tabel 2.2 Fungsi Alternatif Port D

Pin Port D

Fungsi Alternatif

PD0

RXD (Receive data input for the UART)

PD1

TXD (Transmit data output for the UART)

PD2

INTO (External interrupt 0 input)

PD3

INT1 (External interrupt 1 input)

PD4

T0 (Timer/Counter0 external input)

PD5

T1 (Timer/Counter1 external input)

PD6

ICP (Timer/Counter1 Input Capture Pin)

2.5 SRAM

Mikrokontroler AT90S2313 memiliki memori yang berupa SRAM (Static RAM) yang berkapasitas 128 byte. Lokasi memori SRAM dalam peta memori AVR AT90S2313 ditunjukkan oleh gambar berikut.

screenhunter_06-nov-03-1938.gif

 

Gambar 2.6 SRAM Dalam Organisasi Memori AT90S2313

 

Memori data AVR AT90S2313 terdiri dari 224 lokasi yang digunakan untuk alamat Register file (GPR), I/O register, dan SRAM. Pengamatan memori data mencakup lima mode pengalamatan, yaitu mode langsung, mode tak langsung, mode tak langsung dengan penggeseran, mode tak langsung dengan pre-decremenr, dan mode tak langsung dengan post-increment. Seluruh register GPR dapat diakses menggunakan mode-mode pengalamatan tersebut.

2.6 Register I/O

Register I/O seperti telah ditunjukkan dalam gambar 2.6, menempapti lokasi pada ruang memori data $20 hingga $5F. Register I/O merupakan register yang sangat pencting karena register ini berfungsi untuk mengatur dan melakukan control berbagi peripheral mikrokontroler. Definisi masing-masing register I/O dapat anda lihat pada daftar berikut.

Tabel 2.3 Register I/O

Address

Name

Function

$3F($5F)

SREG

Status Register

$3D($5D)

SPL

Stack Pointer Low

$3B($5B)

GIMSK

General interrupt Mask register

$3A($5A)

GIFR

General interrupt Flag Register

$39($59)

TIMSK

Timer/Counter interrupt Mask Register

$38($58)

TIFR

Timer/Counter interrupt Flag Register

$35($55)

MCUCR

MCU general Control Register

$33($53)

TCCR0

Timer/Counter 0 Control Register

$32($52)

TCNT0

Timer/Counter 0 (8-bit)

$2F($4F)

TCCR1A

Timer/Counter 1 Control Register A

$2E($4E)

TCCR1B

Timer/Counter 1 Control Register B

$2D($4D)

TCNT1H

Timer/Counter 1 High Byte

$2C($4C)

TCNT1L

Timer/Counter 1 Low Byte

$2B($4B)

OCR1AH

Output Compare Register 1 High Byte

$2A($4A)

OCR1AL

Output Compare Register 1 Low Byte

$25($45)

ICR1H

T/C 1 Input Capture Register High Byte

$24($44)

ICR1L

T/C 1 Input Capture Register Low Byte

$21($41)

WDTCR

Watchdog Timer Control Register

$1E($3E)

EEAR

EEPROM Address Register

$1D($3D)

EEDR

EEPROM Data Register

$1C($3C)

EECR

EEPROM Control Register

$18($38)

PORTB

Data Register, Port B

$17($37)

DDRB

Data Direction Register, Port B

$16($36)

PINB

Input Pins, Port D

$12($32)

PORTD

Data Register, Port D

$11($31)

DDRD

Data Direction Register, Port D

$10($30)

PIND

Input Pins, Port D

$0C($2C)

UDR

UART I/O Data Register

$0B($2B)

USR

UART Status Register

$0A($2A)

UCR

UART Control Register

$09($29)

UBRR

UART Baud Rate Register

$08($28)

ACRR

Analog comparator Control and Status Register

Semua peripheral termasuk I/O dari AT90S2313 ditempatkan pada ruang ini. Lokasi I/O dapat diakses menggunakan instruksi IN dan OUT untuk melakukan transfer data dari dan keregister I/O. Register I/O dapat diakses secara per bit menggunakan instruksi SBI dan CBI melalui alamat register pada range $00 hingga $1F. Bit-bit dalam register ini dapat dicek menggunakan instruksi IN dan OUT, maka alamat I/O yang digunakan haruslah dalam rentang $00 – $3F. Sedangkan bila pengaksesan dilakukan menggunakan SRAM, nilai $20 harus anda tambahkan pada alamat ini.

SREG

Meskipun semua register I/O penting, namun I/O yang palilng banyak digunakan harus Anda ketahui adalah register STATUS (SREG) yang beralamat pada $3F($5F). register ini berisi status yang dihasilkan setiap operasi yang dilakukan ketika suatu instruksi dieksekusi.

Bit 7

6

5

4

3

2

1

0

§ Bit – I: Global Interrupt Enable

Bit ini harus diset untuk mengenable interupsi. Setelah itu, Anda dapat mengaktifkan interupsi mana yang akan Anda gunakan dengan cara mengenabel bit control register yang bersangkutan secara individual. Bit ini akan di-clear apalagi terjadi suatu interupsi yang dipicu oleh hardware dan tidak akan mengijinkan terjadinya interupsi serta akan diset kembali oleh interupsi RETI.

§ Bit – T: Bit Copy Storage

Instruksi BLD dan BST menggunakan bit-T sebagai sumber atau tujuan dalam operasi bit yang dilakukan. Suatu bit dalam sebuah register GPR dapat disalin ke bit-T ini menggunakan intruksi BST dan sebaliknya bit-T dapat disalin kembali ke suatu bit dalam register GPR dengan menggunakan instruksi BLD.

§ Bit5 – H: Half Carry Flag

§ Bit4 – S: Stop Bit

Bit – S merupakan hasil operasi EXOR antara flag-N (negative) dan flag V (komplemen dua overflow).

§ Bit3 – V: Two’s Complement Overflow Flag

Bit ini berguna untuk mendukung operasi aritmatika.

§ Bit2 – N: Negatif Flag

Bila suatu operasi menghasilkan bilangan negative, maka flag-N akan diset.

§ Bit1 – Z: Zero Flag

Bit ini akan diset bila hasil operasi yang diperoleh adalah nol.

§ Bit – C: Carry Flag

Bila suatu operasi menghasilkan carry, maka bit ini akan diset.

2.7 Interupsi

Terdapat 10 jenis interupsi yang dapat ditangani oleh AT90S2313. Interupsi tersebut akan mengarahkan aliran program menuju vector interupsi yang berbeda pada alamat $01 hingga $0A. Alamat $00 tidak digunakan untuk vector reset, yaitu alamat yang akan dituju apabila terjadi salah satu kondisi dari tiga kondisi reset. Agar suatu interupsi dapat difungsikan, maka bit pengenabel interupsi yang bersangkutan harus dienabel bersama dengan bit-I dalam register SREG yang merupakan bit pengenabel interupsi secara global.

Pembahasan lebih lanjut mengenai interupsi akan diterangkan dalam Bab 5.

2.8 Peripheral AT90S2313

Peripheral utama pada At90S2313 meli puti Timer/Counter, WatchDog Timer, EEPROM, Analog Comparator, dan UART. Untuk mengkonfigurasi fungsi periphera-peripheral di atas, maka hal yang harus Anda lakukan adalah mengatur setting bit pada register control yang bersangkutan.

2.8.1 Timer/Counter

AT90S2313 memiliki dua modul Timer/Counter, yaitu Timer/Counter0 (8-bit) yang dinamakan TCNT0 dan Timer/Counter1 (16-bit) yang dinamakan TCNT1L dan TCNT1H. Untuk mengatur kerja Timer/Counter Anda perlu melakukan setting terhadap bit-bit dalam register I/O.

TCNT0 (Timer/Counter0 8-bit)

Register-register yang berhubungan dengan penggunaan Timer/Counter0 adalah TCCR0 (Timer/Counter Register), TIFR (Timer/Counter0 Interrupt Flag Register), dan TIMSK (Timer/Counter0 interrupt Mask Register). Sumber clock untuk Timer/Counter0 dapat berasal dari clock CK, clock CK yang diprescaler, atau clock dari pin eksternal. Clock eksternal dapat digunakan sebagai sumber clock bagi TCNT0 melalui pin PD4/T0. Sinyal kendali untuk Timer/Counter0 diatur menggunakan register TCCR0. Hanya tiga bit dalam TCCR0 yang digunakan, yaitu CS00 (bit0), CS01(bit1), dan CS02(bit2). Bit ini digunakan untuk menentukan nilai prescaler dan sumber clock yang digunakan.

Bit 7

6

5

4

3

2

1

0

Nilai pengaturan bit-bit dalam register TCCR0 ditentukan menurut tabel 2.4.

Tabel 2.4 Pengaturan bit-bit Pada TCCR0

CS02

CS01

CS00

Deskription

0

0

0

Stop, the Timer/Counter0 is stoped

0

0

1

CK

0

1

0

CK/8

0

1

1

CK/64

1

0

0

CK/256

1

0

1

CK/1024

1

1

0

External Pin T0, falling edge

1

1

1

External Pin T0, rising edge

TCN1H dan TCNT1L (merupakan 2 register Timer/Counter1 16-bit)

Register-register yang berhubungan dengan pengaturan Timer/Counter adalah TCCR1B, TIFR, dan TIMSK. Timer/counter1 juga mendukung fungsi Output Compare menggunakan register OCR1A sebagai sumber data yang dibandingkan dengan isi Timer/Counter1. Selain itu, Timer Counter1 juga dapat digunakan sebagai modul PWM 8-bit, 9-bit, atau 10-bit. Penggunaan Timer/Counter1 sebagai modul PWM akan melibatkan register OCR1.

Untuk fungsi input Capture, Timer/Counter1 menyediakan capture dari isi Timer/Counter1 ke dalam register ICP. Pengaturan capture dilakukan menggunakan register control TCCR1B.

2.8.2 WathDog Timer

WDT merupakan sebuah timer dengan clock terpisah dari osilator chip dan bekerja pada frekuansi clock 1 MHz. Saat WDT mencapai nilai maksimal dan terjadi overflow, maka WDT akan mereset mikrokontroler. Clock untuk WDT dapat diatur menggunakan prescaler, sehingga waktu yang diperlukan untuk mencapai overflow juga dapat dikendalikan. Anda sebagai programmer harus menempatkan instruksi WDT secara berkala dari waktu ke waktu untuk mencegah WDT melakukan reset terhadap mikrokontroler. WDT dapat anda disable dengan membuat bit WDTOE berlogika “1” dan bit WDE berlogika “0” pada register WDTCR.

Bit 7

6

5

4

3

2

1

0

WDTCR (Watch Dog Timer Control Register) merupakan register pengendali WDT, termasuk untuk mengatur nilai prescalernya. Nilai prescaler WDT diatur sesuai dengan Tabel 2.5.

Tabel 2.5 Pengaturan Prescaler WDT

WDP2

WDP1

WDP0

Number of WDT Oscillator Cycles

Typical Time-out at

Vcc=3.0v

Vcc=5.0v

0

0

0

16K cycles

47 ms

15 ms

0

0

1

32K cycles

94 ms

30 ms

0

1

0

64K cycles

0.19 s

60 ms

0

1

1

128K cycles

0.38 s

0.12 s

1

0

0

256K cycles

0.75 s

0.24 s

1

0

1

512K cycles

1.5 s

0.49 s

1

1

0

1,024K cycles

3.0 s

0.97 s

1

1

1

2,048K cycles

6.0 s

1.9 s

2.8.3 EEPROM

AT90S2313 memiliki kapasitas EEPROM 128 byte. Untuk melakukan akses terhadap EEPROM, terhadap tiga register penting yang berhubungan dengan EEPROM. Register tersebut adalah EEAR (EEPROM Address Register), EEDR (EEPROM Data Register), dan EECR (EEPROM Cntrol Register).

Berikut ini adalah format dan cara pengaturan bit-bit dalam register tersebut.

EEAR (EEPROM Address Register)

Bit 7

6

5

4

3

2

1

0

EEDR (EEPROM Data Register)

Bit 7

6

5

4

3

2

1

0

EECR (EEPROM Control Register)

Bit 7

6

5

4

3

2

1

0

EEAR merupakan register yang digunakan untuk menempatkan alamat memori EEPROM yang akan diakses. Perhatikan bahwa bit7 dari register ini tidak digunakan dan akan menghasilkan “0” bila dibaca. Sedangkan EEDR merupakan register untuk menempatkan data sementara pada pengaksesan EEPROM. Pada operasi penulisan EEPROM, register ini berisi data yang akan dituliskan pada alamat EEPROM yang ditunjuk dalam register EEAR, sedangkan pada operasi pembaca EEPROM, register ini berisi data yang dibaca dari alamat EEPROM yang ditunjuk dalam EEAR.

Register EECR merupakan register yang mengontrol proses akses terhadap EEPROM. Bit yang digunakan dalam register ini adalah bit EEMWE, EEWE, dan EERE yang masing-masing menempati bit 0, bit1, dan bit 2 dalam register tersebut.

screenhunter_07-nov-03-1939.gif

 

Gambar 2.7 Diagram Blok Analog Comparator

 

Komparator analog dalam AVR akan membandingkan dua nilai pada input positif (AIN0) dan input negative (AIN1). Apabila tegangan pada AIN0 lebih tinggi dibandingkan tegangan pada AIN1, maka keluaran komparator analog pada AT90S2313 diatur menggunakan register ACSR (Analog Comparator Control and Status Register). Format ACSR adalah sebagai berikut.

Bit 7

6

5

4

3

2

1

0

§ Bit7 – ACD: Analog Comparator Disabel

Bit ini merupakan bit untuk menentukan apakah Analog Comparator On atau Off. Apabila bit ACD diset, maka komparator akan Off. Dengan membuat komparator tidak On (bila memasang tidak digunakan), maka konsumsi daya akan dapat ditekan baik pada mode aktif ataupun idle. Ketika terjadi perubahan pada bit ACD, bit ACIE harus di-clear. Hal ini akan mencegah terjadinya interupsi apabila terjadi perubahan pada bit ACD.

§ Bit6 – Tidak digunakan

Bit ini tidak digunakan dalam pengaturan komparator analog.

§ Bit5 – ACO: Analog Comparator Output

Bit ini terhubung langsung dengan keluaran komparator.

§ Bit4 – ACI: Analog Comparator Interrupt Flag

§

Bit ini akan diset bbila terjadi trigger interupsi yang disebabkan oleh pengaturan ACIS1 dan ACIS0. Rutin ACI dieksekusi bila ACIE diset dan bit-I dalam SREG juga diset. ACI akan di-clear oleh hardware ketika mengeksekusi penanganan interupsi. Selain itu bit ini juga akan di-clear bila terjadi penulisan logika “1” pada flag. Perhatikan bahwa bila bit lain dalam register ini dimodifikasi menggunakan intruksi SBI atau CBI, ACI akan di-clear sebelum operasi bit ini berlogika “1”.

§ Bit3 – ACIE: Analog Comparator Interrup Enable.

Bila bit ini diset sementara bit 1 dalam SREG juga diset maka interupsi komparator akan aktif. Bila bit ini di-clear, interupsi comparator komparator menjadi tidak aktif.

§ Bit2 – ACIC: Analog Comparator input Capture Enable

2.8.5 UART

AT90S2313 memiliki fitur untuk melakukan komunikasi menggunakan UART (Universal Asyncronous Receiver and Transmiter). Fasilitas komunikasi ini sangat bermanfaat agar system aplikasi AVR yang anda buat dapat berkomunikasi dengan system lain, misalnya PC atau jaringan system kendali lain.

Pengiriman Data

Pengiriman data menggunakan UART akan melibatkan pengoperasian 4 buah register UART, yaitu UDR, UCR, USR, dan UBRR.

screenhunter_08-nov-03-1939.gif

Gambar 2.8 Diagram Blok UART Transmitter

UDR (UART I/O Data Register) merupakan register yang berguna untuk menampung data sementara dalam proses pengiriman data. Data yang akan dikirimkan melalui post UART, harus terlebih dahulu ditempatkan dalam register ini, sebelum proses pengiriman data UART dapat dilakukan.

Bila register TX 10(11)-bit kosong (semua berlogika 0), maka bit UDRE (UART Data Register Empty) pada register status USR akan diset (“1”). Bila bit ini diset, berarti UART siap untuk menerima karakter berikutnya. Pada saat data ditransfer dari UDR ke shift register, bit0 shift register (star bit) akan di-clear. Dan bit9 atau bit10 akan diset (stop bit). Pengaturan lebar data karakter dapat diatur menggunakan bit CHR( pada register control UCR. Bila bit CHR9 diset, berarti pengiriman dan menggunakan lebar data 9 bit. Bila ini dipilih, maka bit TXB8 pada UCR akan dikirim ke bit9 dalam register geser transmit. Operasi pengiriman data menggunakan UART dilakukan melalui dengan pengiriman start bit, digeser keluar, dan diikuti data mulai dari LSB. Pengiriman ini dilakukan dengan kecepatan sesuai dengan baud rate yang dipilih. Ketika stop bit telah dikeluarkan, shift register transmitter akan diisi dengan data baru berikutnya yang telah dituliskan pada UDR selama proses pengiriman berlangsung. Pada kondisi ini, bit UDRE akan tetap diset hingga ada penulisan data baru pada register UDR. Bila tidak ada penulisan dat baru, maka bit TXC akan diset.

Untuk mengaktifkan fungsi pengiriman data menggunakan UART, bit TXEN pada register control UCR harus diset. Hal ini akan menghubungkan UART transmitter dengan pin PD1 dan memaksa pin ini sebagai output, tanpa memperdulikan pengaturan pada bit DDD1 pada register DDRD. Bila TXEN di-clear, maka pin PD1 akan digunakan sebagai pin I/O.

Penerima Data

Pada mode pengiriman data menggunakan UART, Receiver UART akan melakukan pencuplikan sebanyak 16 kali dari boud rate yang digunakan

screenhunter_09-nov-03-1939.gif

Gambar 2.9 Diagram Blok UART Receiver

Untuk mengaktifkan fungsi penerima UART, bit RXEN harus diset. Seperti halnya pada pengiriman, Bila bit ini di-clear, maka pin PD0 akan digunakan sebagai pin I/O. Namun, bila bit diset, maka pin PD0 akan dipaksa berlaku sebagai input, tanpa mempedulikan pengaturan bit DDD0 dalam register DDRD. Selain itu, PORTD0 tetap dapat digunakan untuk mengendalikan resistor pull-up pada pin tersebut.

Bila bit CHR9 pada UCR diset, maka data pengiriman data penerima dan pengiriman menggunakan panjang data 9-bit. Bit ke-9 yang dikirimkan adalah bit TXB8 dalam register UCR. Sedangkan pada proses penerimaan, bit ke-9 adalah bit RXB8 dalam register UCR.

Pengendalain UART

Pengendalian UART dilakukan menggunakan register UCR sedangkan status UART terdapat pada register USR. Register UDR merupakan register I/O untuk komunikasi UART yang berhubungan dengan data yang akan dikirim atau data yang telah diterima.

Berikut ini adalah format register control USR dan register statusUCR yang digunakan dalam pengoperasian fungsi UART.

USR (UART Status Register)

Bit 7

6

5

4

3

2

1

0

§ Bit7 – RXC: UART Receiver Complete

Bit ini akan diset bila suatu karakter yang diterima dikirimkan dari shift register Receiver ke UDR. Pengesetan ini tidak akanmemperhatikan terdeteksinya error frame pada penerimaan. Bila bit RXCIE dalam register UCR diset, maka interupsi penerima komplit akan dieksekusi saat RXC berlogika “1”. RXC akan di-cear saat pembacaan UDR.

§ Bit6 – TXC: UART Transmite Complete

Bit ini akan diset bila karakter dalam register geser Transmiter telah dikeluarkan semuanya ke pin PD1 dan tidak ada data baru yang dituliskan pada UDR. Bendera ini khususnya digunakan untuk antar muka komunikasi half-duplex, di mana penerimaan dan pengiriman dilakukan secara bergantian. Bila bit TXCIE dalam UCR diset, maka pengesetan pada bit TXC akan menyebabkan interupsi akibat sesuainya UART Transmit akan dieksekusi. TXC di-clear melalui hardware ketika mengeksekusi penanganan vector interupsi yang bersangkutan.

§ Bit5 – UDRE: UART Data Register Empty

Bit status yang menunjukkan kondisi register UDR. Bit ini akan diset ketika sebuah karakter yang ditulis pada UDR dikirimkan ke register Transmit. Pengesetan pada bit ini mengindikasikan bahwa pengirim siap menerima karakter baru untuk dikirimkan.

§ Bit4 – FE: Framing Error

Bit ini akan diset jika kondisi error frame terdeteksi, misalkan ketika bit stop karakter yang diterima berlogika “0”. Bit ini akan di-clear bila bit stop karakter yang diterima adalah “1”.

§ Bit3 – OR: Over Run

Bila suatu kondisi overrun terdeteksi, maka bit ini akan diset. Misalnya, ketika suatu karakter telah ada dalam UDR sebelum karakter berikutnya digeser dalam register Receiver. Bit OR akan di-clear bila suatu data diterima atau dikirim ke UDR.

§ Bit2 – 0: Tidak digunakan

UCR (UART Control Register)

Bit 7

6

5

4

3

2

1

0

§ Bit7 – RXCIE: RX Complete Interrupt Enable

Bila bit ini global interrupt diset, maka terjadinya pengesetan pada bit RXC dalam USR akan mengakibatkan rutin interupsi complete receiver dieksekusi.

§ Bit6 – TXCIE: TX Complete Interrupt Enable

Seperti halnya RXCIE, pengesetan bit ini akan mengijinkan terjadinya interupsi complete transmit akibat pengesetan bit TXC, bila bit global interrupt dienable.

§ Bit4 – RXEN: Receiver Enable

Bit ini digunakan untuk mengenabel UART Receiver. Ketika UART Receiver didisabel, maka bendera status RCX, OR, dan FE tidak dapat diset. Bila bendera-bendera tersebut diset, maka perubahan logika RXEN ke “0” tidak akan membuat bendera-bendera tersebut dii-clear.

§ Bit3 – TXEN: Transmitter Enable

Bit ini diset untuk mengenable UART Transmitter.

§ Bit2 – CHR9: 9 Bit Characters

Ketika bit ini diset, berarti karakter yang dikirim atau diterima memiliki panjang 9-bit ditambah start dan stop bit.

§ Bit1 – RXB8: Receiver Data Bit 8

Ketika bit CHR9 diset, bit ini akan menjadi bit9 karakter yang diterima.

§ Bit0 – TXB8: Transmit Data Bit 8

Bila bit CHR9 diset, bit ini akan menjadi bit ke9 dari data yang dikirimkan.

Pengaturan baud rate untuk UART ditentukan oleh isi register UBRR.

Tabel 2.6 Pengaturan UBRR Untuk Menentukan Baud Rate UART

Baud Rate

XTAL= 1 MHz

XTAL= 4 MHz

XTAL= 8 MHZ

UBRR

% Err

UBRR

% Err

UBRR

% Err

2400

25

0.2

103

0.2

207

0.2

4800

12

0.2

31

0.2

103

0.2

9600

6

7.5

25

0.2

51

0.2

14400

3

7.8

16

2.1

34

0.8

19200

2

7.8

12

0.2

25

0.2

28800

1

7.8

8

3.7

16

2.1

38400

1

22.9

6

7.5

12

0.2

57600

0

7.8

3

7.8

8

3.7

76800

0

22.9

2

7.8

6

7.5

115200

0

84.3

1

7.8

3

7.8

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: