Mengenal dan memahami prinsip dasar USART, menampilkan data simulasi ke komputer, Interfacing dengan Komputer
loading...
Mengenal dan memahami prinsip dasar USART,
menampilkan data simulasi ke komputer, Interfacing dengan Komputer
USART (Universal Synchronous
Asynchronous Receiver Transmitter)
Merupakan
teknik komunikasi antara mikrokomputer (PC) dengan sistem lain seperti
mikroprosesor atau mikrokontroler baik secara sinkron atau asinkron dengan
pengiriman secara serial, yaitu pentransferan data bit demi bit sampai
membentuk satu frame data yang diawali dengan start bit dan diakhiri dengan stop
bit.
Komunikasi
data serial secara sinkron merupakan bentuk komunikasi data serial yang
memerlukan sinyal clock untuk sinkronisasi, sinyal clock tersebut akan tersulut pada setiap bit pengiriman bit yang
pertama dengan perubahan bit data yang dapat diketahui oleh penerima dengan
singkronisasi melalui sinyal clock.
Sedang komunikasi
asinkron adalah suatu komunikasi data serial yang tidak memerlukan sinyal clock
sebagai sinkronisasi. Namun pengiriman data ini harus diawali dengan start bit
dan diakhiri dengan stop bit. Sinyal clock merupakan baud rate dari komunikasi
data yang dibangkitkan oleh masing-masing baik penerima maupun pengirim data
dengan frekwensi yang sama, jika nilai baud rate berbeda maka tidak akan pernah
terjadi komunikasi.
Prinsipnya yaitu
bahwa penerima hanya perlu mendeteksi start bit sebagai awal pengiriman data,
selanjutnya komunikasi data terjadi antar dua buah shift register yang ada pada pengirim maupun penerima. Setelah 8
bit data diterima, penerima akan menunggu adanya stop bit sebagai tanda bahwa 1
byte data telah dikirim dan penerima dapat siap untuk menunggu pengiriman data
berikutnya.
Pada aplikasi
proses komunikasi asinkron ini selalu digunakan untuk mengakses
komponen-komponen yang mempunyai fasilitas UART ( Universal Asynchonous Receiver/Transmiter) seperti pada port
serial PC atau port serial mikrokontroler lain. Format data komunikasi Asinkron
diperlihatkanpada gambar berikut:
Komunikasi Asinkron
Pada komputer
sudah disediakan port serial agar dapat berhubungan dengan perangkat luar
(pengubah level tegangan – dan + lebih dari 12 V menjadi level TTL 5V), yaitu
dengan menyediakan interface 232 (RS 232) dan RS 485, sekaligus sebagai
pengirim dan penerima data secara serial. Transfer
data secara serial dapat berlangsung secara sinkron dan asinkron,
sedangkan IBM PC XT/AT hanya menyediakan
interface serial dengan mode asinkron (bergantian). Terminal atau konektor yang
digunakan untuk mengkonversi level tegangan biasa disebut DB9, seperti pada
gambar berikut:
|
Tabel 12-1 Fungsi Pin
Port Serial
1.
DCD (Data Carier Detect)
Sinyal DCD
dikirimkan dari PC ke modem, mengindifikasi bahwa modem telah menerima sinyal
pembawa dari sebuah modem saluran telepon jarak jauh.
2.
RXD (Receive Data)
Sinyal RXD
adalah sinyal data yang diterima dari perangkat lainnya. Diakhir perangkat
lain, sinyal ini didapat dari sinyal TXD (Transmit data). Harus diketahui bahwa
sinyal TXD dan RXD, bersama ground, mereka hanya menghendaki saluran untuk
komunikasi data. Semua saluran yang lain digunakan untuk mengontrol atau
handshaking.
3.
TXD (Transmit Data)
Sinyal TXD
adalah sinyal data actual yang dikirimkan dari satu perangkat ke perangkat
lainnya. Sinyal ini masuk ke RXD yang berhubungan dengan pin RXD konektor itu.
4.
DTR(Data terminal ready)
Sinyal DTR
dikirimkan dari PC ke modem , mengindikasikan bahwa PC memiliki daya untuk
digunakan .
5.
SG (Sinyal Ground)
6.
DSR (Data set ready)
Sinyal DSR
dikirimkan dari modem ke PC , mengindikasikan bahwa modem siap digunakan dengan
demikian sinyal ini mengindikasikan bahwa modem memiliki kekuatan mempergunakan
dan menginisialisasi sendiri (internal
setup).
7.
RTS (Request to send)
Sinyal RTS
adalah output PC kesebuah modem untuk menginikasikan bahwa modem bisa mengirim
data ke PC.
8.
CTS (Clear to send)
sinyal CTS
adalah output modem ke PC utuk mengindikasikan bahwa modem bisa mengirim data
ke PC.
9.
RI (Ring indicator)
(a) Pin RS232 (b) diagram blok internal RS232
Standard RS232
ditetapkan oleh Electronic Industry
Association dan Telecomunication
Industry Association pada tahun 1962. Nama lengkapnya adalah EIA/TIA-232
Interface Between Data Terminal
Equipment and Data Circuit- Terminating Equipment Employing Serial Binary Data
Interchange. Ada
3 hal pokok yang diatur standard RS232, antara lain adalah: 1) Bentuk sinyal
dan level tegangan yang dipakai. 2) Penentuan jenis sinyal dan konektor yang
dipakai, serta susunan sinyal pada kaki-kaki di konektor. 3) Penentuan tata
cara pertukaran informasi antara computer dan alat-alat pelengkapnya.
Penerapan USART pada ATMEGA8535
|
Konfigurasi USART
Mengaktifkan Rx dan Tx (pada fasilitas USART) dengan baud rate yang digunakan
adalah 9600 Bd, 8 bit data, 1 atop bit dan no parity, mode asynchronous.
Inisialisasi dengan CodeWizardAVR baik digunakan jika komunikasi yang diinginkan
hanya menggunakan 1 Baud Rate saja dan tidak berubah-ubah. Agar penggunaan
fungsi lebih fleksibel, maka dapat dilakukan dengan cara inisialisai fungsi,
yaitu mengeset internal register berikut:
1)
UCSRA : USART Control dan Status Register A
7 6
5 4 3
2 1 0
=================================================
| RXC | TXC | UDRE | FE | DOR | PE | U2X | MPCM | UCSRA
=================================================
R R/W
R R R
R R/W R/W
0 0
1 0 0
0 0 0
§
Bit 7 RXC :
sebagai flag (tanda) bahwa penerimaan data1 byte telah selesai dan data bisa
dibaca pada register UDR.
§
Bit 6 TXC : sebagai
flag (tanda) bahwa pengiriman data1 byte telah selesai dan data selanjutnya
bisa diberikan pada register UDR
2)
UCSRB : USART Control dan Status Register B.
7 6
5 4 3
2 1 0
=============================================================
| RXCIE | TXCIE | UDRIE | RXEN | TXEN | UCSZ2 | TXB8 | TXB8 | UCSRB
=============================================================
R/W R/W
R/W R/W R/W
R/W R R/W
0 0
0 0 0
0 0 0
§
Bit 7 RXCIE :
mengatur interupsi penerimaan data serial. Nilai awal 0 dan akan bernilai 1
jika RXC = 1.
§
Bit 6 TXCIE : mengatur
interupsi pengiriman data serial. Nilai awal 0 dan akan bernilai 1 jika TXC
= 1.
§
Bit 4 RXEN :
mengaktifkan penerimaan RX.
§
Bit 3 TXEN :
mengaktifkan pengiriman TX.
§
Bit 2 UCSZ2 :
menentukan panjang karakter yang akan dikirimkan. Register ini digunakan
bersamaan dengan register UCSZ0 dan UCSZ1 yang terdapat
pada register UCSRC. Akan dibahas dibawah.
3)
UCSRC : USART Control dan Status Register C.
7 6
5 4 3
2 1 0
==============================================================
| URSEL | UMSEL | UPM1 | UPM0 | USBS | UCSZ1 | UCSZ0 | UCPOL | UCSRC
==============================================================
R/W R/W
R/W R/W R/W
R/W R/W R/W
1 0
0 0 0 1
1 0
§
Bit 7 URSEL :
karena UCSRC dan UBRRH memakai alamat yang sama maka fungsi bit
ini adalah memutuskan register mana yang akan "ditulis". Jika
bernilai 1 maka data akan ditulis ke UCSRC dan jika bernilai 0 maka data
akan ditulis di UBRRH.
§
Bit 6 UMSEL :
menentukan apakah komunikasi sinkron atau asinkron. Bernilai 0 maka komunikasi
asinkron dan jika bernilai 1 maka komunikasi sinkron.
§
Bit 3 USBS :
Usart Stop Bit Select jika bernilai 0 maka stop bit-nya 1 dan jika bernilai 1
stop bit-nya 2.
§
Bit 2 UCSZ1 dan
bit 1 UCSZ0 : bersamaan dengan UCSZ2 menentukan panjang bit
yang akan digunakan. Umumnya 8 bit tetapi anda bisa memilih 5,6,7,8, atau 9
bit.
UMSEL Mode
0
asynchronous
1
synchronous
UPM1 UPM0
Parity mode
0 0
disabled
0
1 reserved
1 0
enabled: even parity
1 1
enabled: odd parity
USBS Stop Bit(s)
0 1-bit
1
2-bit
UCSZ2
UCSZ1 UCSZ0 character size
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
UCPOL
transmitted data
0 rising XCK edge
1 falling XCK edge
4)
UBRR : Baud rate register
Register 16 bit sehingga dibagi menjadi 2 yaitu bit0 -
bit7 UBRRL dan bit8 - bit15 UBRRH. Register ini digunakan untuk menyimpan nilai
kecepatan transmisi data. Nilai Baud rate pada UBRR didapatkan dengan rumus UBRR=(fosc/16xBaudrate)
- 1 (asinkron kecepatan normal). Hal yang harus diingat adalah UBRR
bernilai 16 bit sehingga menggunakan tipe data unsigned integer bukannya
float dan juga hasil perhitungan dengan pembulatan kebawah bukan keatas
(jika float), hal ini untuk mencegah error pada komunikasi data.
Pada ATmega8535, pin RxD (PORTD.0) untuk menerima data dan TxD (PORTD.1) untuk mengirim
data, konfigurasi ini adalah konfigurasi secara umum untuk komunikasi UART
(Serial asinkron). Kecepatan Transfer Data (Baud Rate) adalah perangkat telah memiliki
baudrate standar atau baudrate tertentu yang tetap (tidak dapat diubah)
sehingga perangkat yang lebih fleksibel harus mengikuti-nya. Karena komputer
memiliki nilai-nilai baudrate tertentu, maka mikrokontroler sebagai perangkat
yang fleksibel mengikuti nilai baudrate yang dimiliki komputer. Apabila akan
dilakukan komunikasi serial asinkron antar perangkat yang fleksibel, misal
mikro dengan mikro maka kecepatan transfer data dapat diberikan pada nilai
berapapun asalkan kedua mikro memiliki baudrate yang sama. Beberapa nilai
standar baudrate antara lain:
1200 2400 4800 9600 19200 38400 57600 115200 dst
Jika kecepatan transfer data 9600 bit per second maka 1 bit
membutuhkan 1/9600 detik atau 0,000104 detik atau 104 uS (microsecond= 10^-6
detik).
Protokol Komunikasi Data
Komunikasi asinkron antar perangkat harus memiliki protokol yang sama
antara perangkat 1 dengan perangkat yang lain, apabila protokolnya berbeda maka
akan terjadi kesalahan komunikasi data.
Protokol komunikasi data antara lain :
§
Start Bit Selalu bernilai 0 : Ketika komunkasi UART (serial asinkron) akan
diberikan, terlebih dahulu dimulai dengan pemberian Start Bit. Fungsinya
sebagai pemicu (tanda) kepada penerima (RxD) bahwa akan ada data yang diberikan
oleh pemancar (TxD) dan juga akan memicu clock pada reciever sehingga disinkronkan
dengan clock pada transmitter. Clock penerima dan pemancar haruslah
akurasi dengan toleransi 10% sehingga tidak terjadi kesalahan data.
§
Data Bits : adalah data yang akan dikirimkan secara UART dimulai dari LSB (bit ke
0) hingga MSB (bit terakhir). Jangan lupa menentukan banyaknya bit tersebut
haruslah sama antara pemancar dengan penerima. Banyaknya data bits pada AVR bisa
bernilai 7,8, atau 9 data bits.
§
Parity(keseimbangan) : berfungsi sebagai pengecekan error data yang
ditransfer. Parity bisa bernilai ODD (ganjil), EVEN (Genap), dan NONE
selain itu pemancar dan penerima harus menggunakan parity yang sama. Jika ODD
parity maka jumlah total nilai 1 pada data bits + parity berjumlah ganjil,
contoh ODD, jika data bits 00110101 maka parity bernilai 1. Sedangkan
jika EVEN parity maka jumlah total nilai 1 pada data bits + parity
berjumlah genap. Contoh even, jika data bits 00110101 maka parity
bernilai 0.
§
Stop Bit Selalu bernilai 1 : berfungsi sebagai akhir dari komunikasi data dan
kamudian masuk pada IDLE state. Pengiriman data selanjutnya dapat
dilakukan setelah stop bit diberikan.
§
IDLE state : adalah kondisi tidak terjadinya komunikasi data dan jalur data
berlogika 1 secara terus menerus (marking).
|
1. Setelah
melakukan konfigurasi seperti pada gambar 13-9, ketik program berikut:
#include
<mega8535.h>
#include
<stdio.h>
void
main(void)
{
char c;
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
while
(1)
{
c=getchar();
putchar(c);
};
}
Untuk melihat hasil program diatas, buat koneksi baru di HyperTerminal
dengan cara:
Klik Start → Program → Accessories
→ Communications → HyperTerminal
Ketik nama, misal usart → OK → step
2 OK → step 3 set bps 9600 → step 4 Connect
Ketik sembarang karakter
di layar pada step 4, setelah itu cabut kabel RS232 yang terhubung di board
modul AVR, ketik lagi sembarang karakter, (lihat apa yang terjadi).
2. Menampilkan kata “TEMPERATUR” di HyperTerminal.
Dengan
memodifikasi pada aplikasi 1, tambahkan preposesor berikut:
#include
<delay.h>
#include
<string.h>
Tambahkan pada
main program
char
kampus[]={"TEMPERATUR "};
lakukan
inisialisasi usart seperti pada aplikasi 1
tambahkan
puts(baca);
delay_ms(1000);
Jika
menginginkan kata “TEMPERATUR” muncul terus menerus di PC, tempatkan baris
penambahan pada rutinitas while (1);
3.
Tugas: Buat flowchart dan program untuk kasus:
a.
Baca tegangan POT1 di PINA.1 dengna indicator LED, dan
tampilkan di HyperTerminal pada Baris 3 kolom 7.
b.
Baca suhu LM35 dengan indikator tampilan pada Led menggunakan
PortB sekaligus menampilkan di PC melalui HyperTerminal.
c.
Tampilkan hasil pembacaan suhu pada display LCD dan 7-Segmen.
Berikut ini contoh
penempatan kursor di HyperTerminal:
void letak_kursor (unsigned char
row,unsigned char col)
{
// cursor
movement: cl=\E%row;%colH
putchar(27);
putchar('[');
printf("%d",row);
putchar(';');
printf("%d",col);
putchar('H');
}
loading...
Comments
Post a Comment