Anda di halaman 1dari 48

Komunikasi Serial dan USART ATMega8535

Mikroprosesor

Sasaran
Komunikasi Serial Antarmuka Serial dan USART Arsitektur Internal USART ATMega8535 Register Kontrol ATMega8535 Prosedur Penggunaan USART ATMega8535

Pendahuluan
Komunikasi serial merupakan salah satu alternatif yang relatif murah untuk menggantikan komunikasi paralel, karena transfer data paralel menggunakan 8 jalur konduktor/kawat untuk mentransfer data sekaligus. Komunikasi serial hanya menggunakan satu kawat penghantar, tetapi data ditransfer bit per bit. Jangkauan komunikasi serial lebih jauh dibandingkan komunikasi paralel. Perangkat untuk mengubah serial ke paralel atau sebaliknya adalah USART atau UART.

Antarmuka Serial dan USART


Data di dalam CPU di proses secara paralel. Transfer data input/output serial harus dimulai dan diakhiri dengan data paralel. Konversi data serial ke paralel atau paralel ke serial menggunakan register geser (shift register). Transmisi data Paralel ke Serial (PISO)

Pengiriman Data Serial

Arsitektur Internal USART ATMega8535


AVR ATMega8535 memiliki 4 buah register I/O yaitu :
1) UART Data Register (UDR), 2) UART Baud Rate Register (UBRR), 3) UART Status Register (USR) 4) UART Control Register (UCR).

Perangkat Keras USART terdiri :


Transmitter

Receiver

Melakukan pengiriman data melalui pin Melakukan penerimaan data TX. melalui pin RX. Register UDR digunakan sebagai tempat Register yang digunakan menampung (buffer) data yang akan untuk menampung data ditransmisikan. yang telah diterima adalah Indikator keberhasilan data yang UDR. ditransmisikan diberikan oleh flag TXC. Indikator keberhasilan Flag UDRE adalah sebagai indikator jika bahwa data telah diterima UDR kosong dan siap untuk diisi data ditangani oleh flag RXC. yang akan ditransmisikan lagi.

Clock Generator
Berhubungan dengan kecepatan transfer data. Baud rate ditentukan oleh register pasangan UBRR

Clock Generation Logic, Block Diagram

Persamaan untuk Menghitung Baud Rate dan Seting Register

Synchronous Mode XCK Timing

Frame Formats Asinkron

Format data terdiri dari : IDLE St 0...4 [5] ...[8] P Sp1 [Sp2]

USART I/O Data Register UDR

Sebagai penyangga (buffer) data yang akan dikirimkan dan penyangga data yang diterima. Transmit Data Buffer Register (TXB) berfungsi sebagai penyangga data yang akan ditulis ke dalam register UDR. Receive Data Buffer Register (RXB) berfungsi sebagai penyangga data yang diterima oleh register UDR. Register UDR untuk penyangga hanya dapat ditulis ketika bit flag UDRE dalam register UCSRA (bit 5) dalam keadaan set.

USART Control and Status Register A UCSRA

Register UCSRA digunakan sebagai register kontrol dan status USART A.

Bit 7 RXC: USART Receive Complete

Flag ini akan di-set jika data yang masuk (lengkap) ke dalam UDR belum dibaca. Akan clear jika receiver buffer kosong (yakni tidak berisi data yang belum dibaca). Jika penerima disable, maka penyangga penerima akan dikosongkan dan sebagai akibatnya bit RCX akan menjadi nol. Flag RCX dapat digunakan untuk membangkitkan interupsi RX complete (lihat penjelasan RXCIE)

Bit 6 TXC: USART Transmit Complete

Flag ini akan di-set jika data yang akan dikirim telah digeser keluar semuanya dan tidak ada data baru yang berada dalam transmit buffer (UDR). Flag TXC akan clear secara otomatis jika Transmit Complete Interrupt telah dieksekusi, atau flag ini dapat di-clear dengan menuliskan satu pada lokasi bit-nya. Flag TCX dapat membangkitkan Transmit Complete Interrupt (lihat penjelasan bit TXCIE).

Bit 5 UDRE: USART Data Register Empty

Berfungsi untuk menyatakan kesiapan transmit buffer (UDR) menerima data baru. Jika UDRE satu, maka buffer kosong, karena itu siap untuk ditulisi. Flag UDRE dapat membangkitkan Data Register Empty Interrupt (lihat penjelasan bit UDRIE). UDRE set setelah suatu reset yang menunjukkan bahwa Transmitter siap.

Bit 4 FE: Frame Error

Bit ini set jika karakter berikutnya pada receive buffer mempunyai Frame Error saat diterima. Misalnya, jika bit stop pertama karakter berikutnya pada receiver buffer adalah nol. Bit in valid hingga receive buffer (UDR) di baca. Bit FE nol jika bit stop data yang diterima adalah satu. Bit ini selalu set ke nol jika dilakukan penulisan ke UCSRA.

Bit 3 DOR : Data OverRun

Bit ini set jika kondisi Data OverRun (tumpang tindih data) terdeteksi. Data OverRun terjadi jika receiver buffer penuh (dua karakter) yang merupakan suatu karakter baru yang menunggu pada Receiver Shift Register, dan sebuah bit start baru terdeteksi. Bit ini valid hingga receiver buffer (UDR) di baca. Bit in selalu set ke nol jika terjadi penulisan ke UCSRA.

Bit 2 PE: Parity Error

Bit ini set jika karakter berikutnya pada receiver buffer mempunyai Parity Error ketika diterima, dan pengecekan parity adalah enable pada saat tersebut (UPM1 = 1). Bit ini valid hingga receiver buffer (UDR) di baca. Bit ini selalu set ke nol saat terjadi penulisan ke UCSRA.

Bit 1 U2X: Double the USART Transmission Speed

Bit ini hanya mempunyai efek pada operasi asinkron. Bit ini ditulis ke nol jka menggunakan operasi sinkron. Penulisan bit ini ke satu akan mengurangi pembagi (divisor) baud rate divider dari 16 ke 8 secara efektif dobel transfer rate pada komunikasi asinkron.

Bit 0 MPCM : Multi Processor Communication Mode

Bit ini berfungsi untuk meng-enable atau mengaktifkan mode Multi-Processor Communication. Bila bit MPCM ditulis ke satu, semua frame yang diterima oleh penerima USART yang tidak berisi informasi alamat akan diabaikan. Transmitter tidak dipengaruhi oleh setting MPCM.

USART Control and Status Register B UCSRB

Bit 7 RXCIE : RX Complete Interrupt Enable Berfungsi mengaktifkan interupsi RX Complete (1=enable, 0=disable). Jika satu data diterima dalam register UDR sudah lengkap (tanpa error), maka otomatis akan men-set flag RXC dalam register UCSRA dan kemudian membangkitkan interupsi RX Complete.

Bit 6 TXCIE : TX Complete Interrupt Enable

Berfungsi mengaktifkan interupsi RX Complete (1=enable, 0=disable). Jika satu data diterima dalam register UDR sudah lengkap (tanpa error), maka otomatis akan menset flag RXC dalam register UCSRA dan kemudian membangkitkan interupsi RX Complete.

Bit 5 UDRIE : USART Data Register Empty Interrupt Enable

Berfungsi mengaktifkan interupsi Data Register Empty (UDR kosong, 1=enable, 0=disable). Jika data yang dituliske UDR telah dikirimkan kemudian UDR akan kosong, hal ini yang dimanfatkan untuk membangkitkan interupsi data register empty.

Bit 4 RXEN : Receiver Enable

Berfungsi mengaktifkan pin RX saluran USART (1=enable, 0=disable). Ketika diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran penerima USART.

Bit 3 TXEN : Transmitter Enable

Berfungsi mengaktifkan pin TX saluran USART (1=enable, 0=disable). Ketika diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran pemancar USART.

Bit 2 UCSZ2 : Character Size

Bit bersama UCSZ1, UCSZ0 dalam register UCSRC digunakan untum memilih format lebar data bit (character size) yang digunakan.

Bit 1 RXB8 : Receive Data Bit 8

Bit ini dignakan sebagai bit ke-9 ketika menggunakan format data 9-bit. Bit ini harus dibaca dahulu sebelum membaca UDR.

Bit 0 TXB8 : Transmit Data Bit 8

Bit ini digunakan sebagai bit ke-9 ketika menggunakan format data 9-bit. Bit ini harus ditulis dahulu sebelum menuliskan ke UDR.

USART Control and Status Register C UCSRC(1)

Bit

7 URSEL : Register Select


Berfungsi memilih antara pengaksesan register UCSRC atau UBRRH. Dibaca seperti ketika membaca UCSRC. URSEL harus satu ketika menulisi UCSRC

Bit 6 UMSEL : USART Mode Select

Berfungsi

memilih antara mode operasi asinkron atau sinkron.

Bit 5:4 UPM1:0 : Parity Mode

Berfungsi meng-enable dan men-set tipe pembangkitan parity dan check. Jika di-enable, pengirim secara otomatis akan membangkitkan dan mengirimkan parity dari bit-bit data yang dikirimkan dalam setiap frame.

Penerima akan membangkitkan sebuah nilai parity untuk data yang masuk/diterima dan membandingkan dengan setting UMP0. Jika terdeteksi ketidaksesuaian (missmatch), maka flag PE pada UCSRA akan di-set.

Bit 3 USBS : Stop Bit Select

Berfungsi memilih jumlah bit stop yang akan disisipkan oleh pengirim. Penerima mengabaikan setting ini.

Bit 2:1 UCSZ1:0 : Character Size

Bit-bit UCSZ 1:0 bersama dengan bit UCSZ2pada UCSRB akan mengeset jumlah bit data (ukuran karakter) dalam sebuah frame penerima dan pengirim yang digunakan.

Bit 0 UCPOL : Clock Parity

Digunakan hanya untuk mode sinkron. Bit ini ditulis ke nol jika digunakan sebagai mode asinkron. Bit UCPOL mengeset hubungan antara sampling keluaran data, masukan data, dan clock sinkron (XCK).

USART Baud Rate Registers UBRR UBRRL and UBRRH(1)

Register UBRRH digunkan secara share lokasi I/O yang sama sebagai register UCSRC.

Bit 15 URSEL : Register Select

Berfungsi untuk memilih antara pengaksesan register UBRRH atau UCSRC. Bit ini dibaca sebagai nol ketika membaca UBRRH. URSEL harus nol ketika menulisi UBRRH.

Bit 14:12 Reserved Bit

Digunakan sebagai cadangan untuk pengunan pengembangan di masa datang. Untuk kompatibilitas dengan piranti yang akan datang, maka bit ini harus ditulis ke nol ketika UBRRH ditulisi.

Bit 11:0 UBRRR11:0 : USART Baud Rate Register

Terdapat 12 bit yang digunakan untuk menentukan baud rate USART. UBRRH berisi 4 bit MSB dari USART baud rate. UBRRL berisi 8 bit LSB dari USART baud rate. Akan terjadi kesalahan jika baud rate pengirim dan penerima berbeda.

Prosedur Penggunaan USART ATmega8535

Memilih mode yang akan digunakan Memilih interupsi yang akan diaktifkan Memilih saluran yang akan digunakan Memilih lebar data yang akan digunakan Memilih parity bit dan stop bit Menentukan baud rate Membuat fungsi ISR jika bit I pada SREG diaktifkan

Inisialisasi USART ATmega8535


;================ ;inisialisasi USART ;================ USART_Init: ;set baud rate out UBRRH, r17 out UBRRL, r16 ;enable penerima dan pengirim ldi r16, (1<<RXEN) | (1 <<TXEN) out UCSRB, r16 ;set frame format: 8 data, 2 stop bit ldi r16, (1<<URSEL) | (1 << USBSC) (3 << UCSZ0) out UCSRC, r16 ret

Pengiriman Data
USART_Transmit: ;menunggu buffer pengiriman kosong sbis UCSRA, UDRE rjmp USART_Transmit ;mengisi data (r16) ke buffer, mengirim data out UDR, r16 ret

Penerimaan Data
USART_Receive: ;wait for data to be receive sbis UCSRA, RXC rjmp USART_Receive ;get and return received data from buffer in r16, UDR ret

TUGAS_01 :

Buat program untuk menerima data karakter dari port serial kemudian ditampilkan di LCD.

TUGAS_02 :

Buat program untuk mengirim data karakter dari keypad 4x4 melalui port serial.

Inisialisasi USART :
.equ fclock = 11059200 .equ baud_rate = 19200 .equ ubbr_value = (fclock / (16*baud_rate)) - 1 init_usart: ldi temp,high(ubbr_value) out UBRRH,temp ldi temp,low(ubbr_value) out UBRRL,temp ldi temp,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE) out UCSRB,temp ldi temp,(1<<URSEL)|(3<<UCSZ0) out UCSRC,temp

Contoh pengiriman USART :


usart_tx: sbis UCSRA,UDRE rjmp usart_tx out UDR,txbyte

Contoh penerimaan USART :


usart_rx: sbis rjmp in UCSRA,RXC usart_rx rxbyte,UDR