Post on 30-Oct-2015
description
7/15/2019 Serial ATMega8535
1/48
Komunikasi Serial dan
USART ATMega8535
Mikroprosesor
7/15/2019 Serial ATMega8535
2/48
Sasaran
Komunikasi Serial
Antarmuka Serial dan USART
Arsitektur Internal USART ATMega8535
Register Kontrol ATMega8535
Prosedur Penggunaan USARTATMega8535
7/15/2019 Serial ATMega8535
3/48
Pendahuluan
Komunikasi serial merupakan salah satu alternatifyang relatif murah untuk menggantikan komunikasiparalel, karena transfer data paralel menggunakan8 jalur konduktor/kawat untuk mentransfer data
sekaligus. Komunikasi serial hanya menggunakan satu kawat
penghantar, tetapi data ditransfer bit per bit.
J angkauan komunikasi serial lebih jauhdibandingkan komunikasi paralel.
Perangkat untuk mengubah serial ke paralel atausebaliknya adalah USART atau UART.
7/15/2019 Serial ATMega8535
4/48
Antarmuka Serial dan USART
Data di dalam CPU di proses secara paralel.
Transfer data input/output serial harus dimulai dandiakhiri dengan data paralel.
Konversi data serial ke paralel atau paralel ke serial
menggunakan register geser (shift register). Transmisi data Paralel ke Serial (PISO)
7/15/2019 Serial ATMega8535
5/48
Pengiriman Data Serial
7/15/2019 Serial ATMega8535
6/48
Arsitektur Internal USART ATMega8535
AVR ATMega8535
memiliki 4 buah
registerI/O yaitu :1) UART Data
Register(UDR),2) UART Baud RateRegister(UBRR),
3) UART StatusRegister(USR)
4) UART ControlRegister(UCR).
7/15/2019 Serial ATMega8535
7/48
Perangkat Keras USART terdiri :
Transmitter
Melakukan pengiriman data melalui pinTX.
Register UDR digunakan sebagai tempatmenampung (buffer) data yang akanditransmisikan.
Indikator keberhasilan data yangditransmisikan diberikan oleh flag TXC.
Flag UDRE adalah sebagai indikator jikaUDR kosong dan siap untuk diisi datayang akan ditransmisikan lagi.
Receiver
Melakukan penerimaan datamelalui pin RX.
Register yang digunakanuntuk menampung data
yang telah diterima adalahUDR.
Indikator keberhasilanbahwa data telah diterimaditangani oleh flag RXC.
Clock Generator
Berhubungan dengan kecepatan transfer data.
Baud rate ditentukan oleh register pasangan UBRR
7/15/2019 Serial ATMega8535
8/48
Clock Generation Logic, Block Diagram
7/15/2019 Serial ATMega8535
9/48
Persamaan untuk Menghitung Baud Rate
dan Seting Register
7/15/2019 Serial ATMega8535
10/48
Synchronous Mode XCK Timing
7/15/2019 Serial ATMega8535
11/48
Frame Formats Asinkron
Format data terdiri dari : IDLE St 0...4 [5] ...[8] P Sp1 [Sp2]
7/15/2019 Serial ATMega8535
12/48
USART I/O Data Register UDR
Sebagai penyangga (buffer) data yang akan dikirimkan danpenyangga data yang diterima.
Transmit Data Buffer Register(TXB) berfungsi sebagaipenyangga data yang akan ditulis ke dalam register UDR.
Receive Data Buffer Register(RXB) berfungsi sebagaipenyangga data yang diterima oleh register UDR.
Register UDR untuk penyangga hanya dapat ditulis ketika bitflag UDRE dalam register UCSRA (bit 5) dalam keadaan set.
7/15/2019 Serial ATMega8535
13/48
USART Control and Status Register A UCSRA
Register UCSRA digunakan sebagairegister kontrol dan status USART A.
7/15/2019 Serial ATMega8535
14/48
Bit 7 RXC: USART Receive Complete
Flag ini akan di-set jika data yang masuk (lengkap) ke dalam
UDR belum dibaca. Akan clearjika receiver bufferkosong (yakni tidak berisi data
yang belum dibaca).
J ika penerima disable, maka penyangga penerima akandikosongkan dan sebagai akibatnya bit RCX akan menjadi
nol. Flag RCX dapat digunakan untuk membangkitkan interupsi
RX complete (lihat penjelasan RXCIE)
7/15/2019 Serial ATMega8535
15/48
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 yangberada dalam transmit buffer(UDR).
Flag TXC akan clearsecara otomatis jika TransmitComplete Interrupt telah dieksekusi, atau flag ini dapatdi-cleardengan menuliskan satu pada lokasi bit-nya.
Flag TCX dapat membangkitkan Transmit CompleteInterrupt (lihat penjelasan bit TXCIE).
7/15/2019 Serial ATMega8535
16/48
Bit 5 UDRE: USART Data Register Empty
Berfungsi untuk menyatakan kesiapan transmit
buffer (UDR) menerima data baru. J ika 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.
7/15/2019 Serial ATMega8535
17/48
Bit 4 FE: Frame Error
Bit ini set jika karakter berikutnya pada receive buffer
mempunyai Frame Errorsaat diterima. Misalnya, jika bit stop pertama karakter berikutnya pada
receiver bufferadalah 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 keUCSRA.
7/15/2019 Serial ATMega8535
18/48
Bit 3 DOR : Data OverRun
Bit ini set jika kondisi Data OverRun (tumpang tindih
data) terdeteksi. Data OverRun terjadi jika receiver bufferpenuh (dua
karakter) yang merupakan suatu karakter baru yangmenunggu pada Receiver Shift Register, dan sebuah bitstart baru terdeteksi.
Bit ini valid hingga receiver buffer(UDR) di baca.
Bit in selalu set ke nol jika terjadi penulisan ke UCSRA.
7/15/2019 Serial ATMega8535
19/48
Bit 2 PE: Parity Error
Bit ini set jika karakter berikutnya pada receiver
buffermempunyai Parity Errorketika diterima, danpengecekan parity adalah enable pada saattersebut (UPM1 = 1).
Bit ini valid hingga receiver buffer(UDR) di baca.
Bit ini selalu set ke nol saat terjadi penulisan keUCSRA.
7/15/2019 Serial ATMega8535
20/48
Bit 1 U2X: Double the USART Transmission Speed
Bit ini hanya mempunyai efek pada operasiasinkron.
Bit ini ditulis ke nol jka menggunakan operasisinkron.
Penulisan bit ini ke satu akan mengurangi pembagi
(divisor) baud rate dividerdari 16 ke 8 secara efektifdobel transfer rate pada komunikasi asinkron.
7/15/2019 Serial ATMega8535
21/48
Bit 0 MPCM : Multi Processor Communication Mode
Bit ini berfungsi untuk meng-enable atau
mengaktifkan mode Multi-ProcessorCommunication.
Bila bit MPCM ditulis ke satu, semua frame yangditerima oleh penerima USART yang tidak berisi
informasi alamat akan diabaikan. Transmitter tidak dipengaruhi oleh setting MPCM.
7/15/2019 Serial ATMega8535
22/48
USART Control and Status Register B UCSRB
Bit 7 RXCIE : RX Complete Interrupt Enable
Berfungsi mengaktifkan interupsi RXComplete (1=enable, 0=disable).
J ika satu data diterima dalam register UDRsudah lengkap (tanpa error), maka
otomatis akan men-set flag RXC dalamregister UCSRA dan kemudianmembangkitkan interupsi RX Complete.
7/15/2019 Serial ATMega8535
23/48
Bit 6 TXCIE : TX Complete Interrupt Enable
Berfungsi mengaktifkan interupsi RX Complete(1=enable, 0=disable).
J ika satu data diterima dalam register UDR sudahlengkap (tanpa error), maka otomatis akan men-set flag RXC dalam register UCSRA dan
kemudian membangkitkan interupsi RX Complete.
7/15/2019 Serial ATMega8535
24/48
Bit 5 UDRIE : USART Data Register EmptyInterrupt Enable
Berfungsi mengaktifkan interupsi Data RegisterEmpty (UDR kosong, 1=enable, 0=disable).
J ika data yang dituliske UDR telah dikirimkankemudian UDR akan kosong, hal ini yangdimanfatkan untuk membangkitkan interupsi data
register empty.
7/15/2019 Serial ATMega8535
25/48
Bit 4 RXEN : Receiver Enable
Berfungsi mengaktifkan pin RX saluran USART(1=enable, 0=disable).
Ketika diaktifkan maka pin tersebut tidak dapatdigunakan untuk fungsi pin I/O karena sudahdigunakan sebagai saluran penerima USART.
7/15/2019 Serial ATMega8535
26/48
Bit 3 TXEN : Transmitter Enable
Berfungsi mengaktifkan pin TX saluran USART(1=enable, 0=disable).
Ketika diaktifkan maka pin tersebut tidak dapatdigunakan untuk fungsi pin I/O karena sudahdigunakan sebagai saluran pemancar USART.
7/15/2019 Serial ATMega8535
27/48
Bit 2 UCSZ2 : Character Size
Bit bersama UCSZ1, UCSZ0 dalam registerUCSRC digunakan untum memilih format lebardata bit (character size) yang digunakan.
7/15/2019 Serial ATMega8535
28/48
Bit 1 RXB8 : Receive Data Bit 8
Bit ini dignakan sebagai bit ke-9 ketikamenggunakan format data 9-bit.
Bit ini harus dibaca dahulu sebelum membacaUDR.
7/15/2019 Serial ATMega8535
29/48
Bit 0 TXB8 : Transmit Data Bit 8
Bit ini digunakan sebagai bit ke-9 ketikamenggunakan format data 9-bit.
Bit ini harus ditulis dahulu sebelum menuliskan keUDR.
7/15/2019 Serial ATMega8535
30/48
USART Control and Status Register C UCSRC(1)
Bit 7 URSEL : Register Select
Berfungsi memilih antara pengaksesanregister UCSRC atau UBRRH.
Dibaca seperti ketika membacaUCSRC.
URSEL harus satu ketika menulisiUCSRC
7/15/2019 Serial ATMega8535
31/48
Bit 6 UMSEL : USART Mode Select
Berfungsi memilih antara mode operasiasinkron atau sinkron.
7/15/2019 Serial ATMega8535
32/48
Bit 5:4 UPM1:0 : Parity Mode
Berfungsi meng-enable dan men-settipe pembangkitan parity dan check.
J ika di-enable, pengirim secaraotomatis akan membangkitkan danmengirimkan parity dari bit-bit datayang dikirimkan dalam setiap frame.
Penerima akan membangkitkan sebuah nilai parity untuk data yang
masuk/diterima dan membandingkan dengan setting UMP0. J ika terdeteksi ketidaksesuaian (missmatch), maka flag PE pada
UCSRA akan di-set.
7/15/2019 Serial ATMega8535
33/48
Bit 3 USBS : Stop Bit Select
Berfungsi memilih jumlahbit stop yang akandisisipkan oleh pengirim.
Penerima mengabaikan
setting ini.
7/15/2019 Serial ATMega8535
34/48
Bit 2:1 UCSZ1:0 : Character Size
Bit-bit UCSZ 1:0
bersama dengan bitUCSZ2pada UCSRBakan mengeset jumlahbit data (ukuran karakter)dalam sebuah frame
penerima dan pengirimyang digunakan.
7/15/2019 Serial ATMega8535
35/48
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).
7/15/2019 Serial ATMega8535
36/48
USART Baud Rate Registers UBRR
UBRRL and UBRRH(1)
Register UBRRH digunkan secara sharelokasi I/O yang sama sebagai registerUCSRC.
7/15/2019 Serial ATMega8535
37/48
Bit 15 URSEL : Register Select
Berfungsi untuk memilih antara pengaksesanregister UBRRH atau UCSRC.
Bit ini dibaca sebagai nol ketika membacaUBRRH.
URSEL harus nol ketika menulisi UBRRH.
7/15/2019 Serial ATMega8535
38/48
Bit 14:12 Reserved Bit
Digunakan sebagai cadangan untukpengunan pengembangan di masa datang.
Untuk kompatibilitas dengan piranti yang akandatang, maka bit ini harus ditulis ke nol ketika
UBRRH ditulisi.
7/15/2019 Serial ATMega8535
39/48
Bit 11:0 UBRRR11:0 : USARTBaud Rate Register
Terdapat 12 bit yang digunakan untukmenentukan 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 pengirimdan penerima berbeda.
7/15/2019 Serial ATMega8535
40/48
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 padaSREG diaktifkan
7/15/2019 Serial ATMega8535
41/48
Inisialisasi USART ATmega8535
;================;inisialisasi USART
;================
USART_Init:
;set baud rat e
out UBRRH, r17
out UBRRL, r16;enable penerima dan pengir im
ldi r16, (1
7/15/2019 Serial ATMega8535
42/48
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
7/15/2019 Serial ATMega8535
43/48
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
7/15/2019 Serial ATMega8535
44/48
TUGAS_01 :
Buat program untuk menerima data karakterdari port serial kemudian ditampilkan di LCD.
7/15/2019 Serial ATMega8535
45/48
TUGAS_02 :
Buat program untuk mengirim data karakterdari keypad 4x4 melalui port serial.
7/15/2019 Serial ATMega8535
46/48
Inisialisasi USART :
.equ fclock = 11059200
.equ baud_rate = 19200
.equ ubbr_value = (fclock / (16*baud_rate)) - 1init_usart:
ldi temp,high(ubbr_value)out UBRRH,templdi temp,low(ubbr_value)out UBRRL,templdi temp,(1
7/15/2019 Serial ATMega8535
47/48
Contoh pengiriman USART :
usart_tx:
sbis UCSRA,UDRErjmp usart_tx
out UDR,txbyte
7/15/2019 Serial ATMega8535
48/48
Contoh penerimaan USART :
usart_rx:
sbis UCSRA,RXCrjmp usart_rx
in rxbyte,UDR