BAB II : DASAR TEORI
2.2. Lengan Robot
2.2.5. Mikrokontroler AVR Atmega32
2.2.5.4. Komunikasi Serial USART
Komunikasi serial merupakan alternatif untuk menggantikan komunikasi paralel, karena transfer data paralel menggunakan delapan jalur konduktor/kawat untuk mentransfer delapan bit sekaligus. Dengan komunikasi serial, maka komunikasi hanya menggunakan satu kawat konduktor saja untuk men-transfer bit demi bit sebanyak 8 kali untuk menyelesaikan transfer satu byte data [27]. Komunikasi USART dapat dibedakan menjadi dua macam, yaitu komunikasi data serial sinkron dan komunikasi data serial asinkron. Komunikasi serial sinkron adalah komunikasi antara mikrokontroler dengan peripheral lain dimana sinyal clock yang digunakan antara transmitter dan receiver berasal dari satu sumber
clock yang sama. Sedangkan komunikasi serial asinkron masing-masing memiliki sumber clock sendiri [4].
Pada proses inisialisasi ini setiap perangkat yang terhubung harus memiliki baudrate yang sama. Beberapa fasilitas yang disediakan USART AVR adalah sebagai berikut:
a) Operasi full duplex (mempunyai register reciver dan transmit yang terpisah) b) Mendukung komunikasi multiprosesor
c) Mode kecepatan berorde Mbps d) Mode operasi asinkron atau sinkron e) Operasi master atau slave clock sinkron
f) Dapat menghasilkan baud-rate (laju data) dengan resolusi tinggi g) Modus komunikasi kecepatan ganda pada asinkron
Inisialisasi USART
Pada mikrokontroler AVR untuk mengaktifkan dan mengeset komunikasi USART dilakukan dengan cara mengaktifkan register-register yang digunakan untuk komunikasi USART. Register-register yang digunakan untuk komunikasi USART antara lain:
USART I/O Data Register (UDR)
UDR merupakan register 8 bit yang terdiri dari dua buah dengan alamat yang sama, yang digunakan sebagai tempat untuk menyimpan data yang akan dikirimkan (TXB) atau tempat data yang diterima (RXB) sebelum data tersebut dibaca [4]. Gambar 2.27 menunjukan Register UDR.
Gambar 2.27. Register UDR [28]
USART Control and Status Register A (UCSRA)
Gambar 2.28 menunjukan Register UCSRA. Penjelasan bit penyusun UCSRA [27]:
a) RXC (USART Receive Complete)
Flag ini akan set jika data yang masuk (lengkap) ke dalam UDR belum dibaca, dan
akan clear jika receiver buffer kosong (tidak berisi data yang belum dibaca). Flag ini dapat digunakan untuk membangkitkan interupsi RX jika diaktifkan dan akan berlogika nol secara otomatis bersamaan dengan eksekusi vector interupsi yang bersangkutan.
b) TXC (USART Transmit Complete)
Flag ini akan set jika data yang akan dikirim telah digeser keluar semuanya dan tidak
ada data baru yang berada dalam transmit buffer (UDR). Flag ini akan membangkitkan interupsi TX jika diaktifkan dan akan clear secara otomatis bersamaan dengan eksekusi
vector interupsi yang bersangkutan.
c) UDRE( USART Data Register Empety)
Flag ini berfungsi untuk menyatakan kesiapan UDR menerima data baru. Jika bernilai
satu maka UDR dalam keadaan kosong dan siap menerima data berikutnya, jika flag bernilai nol berarti sebaliknya.
d) FE (Frame Error)
Bit ini sebagai indicator ketika data diterima error, misalnya ketika stop bit pertama data dibaca berlogika nol maka bit FE bernilai satu. Bit akan bernilai 0 ketika stop bit data yang akan diterima
e) DOR (Data Over Run)
Bit ini berfungsi untuk mendeteksi jika ada data yang overrun. Flag ini selalu set ke nol jika terjadi penulisan ke UCSRA. Flag akan bernilai satu ketika terjadi overrun data.
f) PE (Parity Error)
Bit yang menentukan apakah terjadi kesalahan paritas. Bit ini berfungsi jika ada kesalahan paritas. Bit akan berlogika satu ketika terjadi bit parity error apabila bit paritas digunakan.
g) U2X (Double the USART Transmission Speed)
Bit yang berfungsi untuk menggandakan laju data menjadi dua kalinya pada operasi asinkron. Bit ini ditulis ke nol jika menggunakan operasi sinkron.
h) MPCM (Multi Processor Communication Mode)
Bit untuk meng-enable mode multi prosesor, dimana ketika data yang diterima oleh USART tidak mengandung informasi alamat akan diabaikan.
USART Control and Status Register B (UCSRB)
Gambar 2.29. Register UCSRB [28]
Gambar 2.29 menunjukan Register UCSRB. Penjelasan bit penyusun UCSRB [27]:
a) RXCIE (RX Complete Interrupt Enable)
Bit ini berfungsi mengaktifkan interupsi RX copmplete. Jika satu data diterima dalam register UDR sudah lengkap (tanpa error) maka secara otomatis akan men-set flag RXC dalam register UCSRA dan akan membangkitkan interupsi RX complete.
b) TXCIE (TX Complete Interrupt Enable)
Bit ini berfungsi mengaktifkan interupsi TX copmplete. Jika satu data diterima dalam register UDR sudah lengkap (tanpa error) maka secara otomatis akan men-set flag TXC dalam register UCSRA dan akan membangkitkan interupsi TX complete.
c) UDRIE (USART Data Register Empety Interrupt Enable)
Bit ini berfungsi untuk mengaktifkan interupsi data register kosong, berlogika satu jika diaktifkan dan sebaliknya.
d) RXEN (Receiver Enable)
Bit ini berfungsi untuk mengaktifkan pin RX saluran USART. Ketika pin diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran penerima USART.
e) TXEN (Transmitter Enable)
Bit ini berfungsi untuk mengaktifkan pin TX saluran USART. Ketika pin diaktifkan maka pin tersebut tidak dapat digunakan untuk fungsi pin I/O karena sudah digunakan sebagai saluran pengirim USART.
f) UCSZ2 (Character Size)
Bit ini bersama dengan bit UCSZ1 dan UCSZ0 dalam register UCSRC digunakan untuk memilih tipe lebar data bit (character size) yang digunakan.
Tabel 2.1. Penentuan ukuran karakter [28]
UCSZ2 UCSZ1 UCSZ0 Ukuran Karakter
0 0 0 5 bit 0 0 1 6 bit 0 1 0 7 bit 0 1 1 8 bit 1 0 0 Reserved 1 0 1 Reserved 1 1 0 Reserved 1 1 1 9 bit
g) RXB8 (Recive Data Bit 8)
Bit ini digunakan sebagai bit ke-9 ketika menggunakan format data 9 bit, dan bit ini harus dibaca hdahulu sebelum membaca UDR.
h) TXB8 (Transmit Data Bit 8)
Bit ini digunakan sebagai bit ke-9 ketika menggunakan format data 9 bit, dan bit ini harus ditulis dahulu sebelum membaca UDR.
USART Control and Status Register C (UCSRC)
Gambar 2.30. Register UCSRC [28]
Gambar 2.30 menunjukan Register UCSRC. Penjelasan bit penyusun UCSRC [27]:
a) URSEL (Register Select)
Bit ini berfungsi untuk memilih antara pengaksesan register UCSRC dengan UBBRH, dimana untuk menulis atau membaca register UCSRC maka bit ini harus ditulis satu.
b) UMSEL (USART Mode Select)
Bit pemilih mode komunikasi serial antara sinkron dan asinkron (1 = sinkron, 0 = asinkron).
c) UPM1:0 (Parity Mode)
Bit ini berfungsi untuk memilih mode paritas bit yang akan digunakan. Transmitter USART akan membuat paritas yang akan digunakan secara otomatis.
d) USBS (Stop Bit Select)
Bit yang berfungsi untuk memilih jumlah stop bit yang akan digunakan.
Merupakan bit pengatur jumlah karakter serial bit yang berfungsi untuk memilih lebar data yang digunakan dikombinasikan dengan bit UCSZ2 dalam register UCSRB.
f) UCPOL (Clock Parity)
Bit yang berguna hanya untuk modus sinkron. Bit ini berhubungan dengan perubahan data keluaran dan sampel masukkan, dan clock sinkron (XCK).