Elegant Rose - Busy

Selasa, 14 Januari 2014

MODE KOMUNIKASI SERIAL

MODE KOMUNIKASI SERIAL

 

 

 

1.  Teori Dasar


Komunikasi Serial:
“Komunikasi serial adalah komunikasi yang mengantarkan data digital secara bit per bit secara bergantian melalui media interface serial”, contoh: modem, mouse dll
Pengiriman data melalui interface serial dapat dilakukan secara bit per bit (setiap satu step waktuà 1 bit) atau juga dalam satuan baud dimana 1 baud tidak mesti senilai dengan 1 bit per second, tergantung besaran data untuk setiap kali clock transfer.
Kerugian Komunikasi Paralel
§  Penggunaan kabel yang lebih pendek, sebab keterbatasan proses transfer
§  Membutuhkan banyak kabel penghantar
Konsekuensi terhadap Komunikasi Serial
§  Tingginya tingkat keamanan terhadap gangguan karena tingginya ayunan tegangan (dengan jangkauan max. 50 Volt) à Sehingga dapat direalisasikan dengan kabel yang lebih panjang.
§  Membutuhkan sedikit kabel penghantar (misalkan dg tiga utas kabel: Tx, Rx dan Ground)
§  Membutuhkan penyesuaian protokol komunikasi data terutama untuk sinkronisasi antara pengirim dan penerima.
Perbedaan diantara Komunikasi Serial
§  Perbedaan data rate (jumlah data per waktu)
§  Jumlah dan jenis penghantar (min. 1 kabel koaxial)
§  Penggunaan protokol komunikasi


Metode Sinkronisasi
n  Problem utama komunikasi serial adalah metode sinkronisasi, yakni pengendalian clock pengirim dan penerima. Kedua clok seharusnya berada pada frekuensi yang sama, agar penerima dapat mengambil data tepat pada waktunya.
n  Tujuan sinkronisasi adalah menghindari keterlambatan dan kesalahan pengambilan data sehingga perlu dilakukan penyesuaian clok penerima dengan clok pengirim.
Komunikasi Sinkron
n  Ditandai dg: Clok penerima disetting hanya pada awal komunikasi clok pengirim.
n  Terdapat dua bentuk realisasi:
1.    Menyediakan 3 penghantar ( untuk data yang dikirim, data yang diterima dan external clok). Dengan bantuan penghantar clok, penerima dapat mengendalikan proses pengambilan data (sampling data).
2.    Interface serial terdiri hanya satu penghantar atau pasangan penghantar, dimana diawal paket data dikirimkan bit preamble sebagai bit sinkronisasi. Clok penerima akan mengalami settingan selama bit preamble berjalan.
Komunikasi Asynchrone (Tidak Sinkron)
n  Ditandai dg: Dimana sinkronisasi clok pengirim dan penerima terjadi pada awal dari setiap simbol data yang dikirim.
n  Realisasinya: sebelum bits data terdapat satu atau dua startbit. Starbit ini menentukan kapan penerima mengambil data, dan ini berjalan dalam sebagian dari periode clok.
n  Komunikasi Asynchrone mengirimkan data secara simbol per simbol, dimana disini ditandai acknowledge untuk setiap penyelesaian masing-masing simbol.
n  Format  Data Komunikasi Asynchrone tidak standard, bervariasi tergantung pada:
1.    Genap atau ganjilnya parity (parity menandakan genap atau ganjilnya jumlah dari bit ‘1’ )
2.    Satu atau dua stopbits
Komunikasi Asynchrone pada RS -232 (mis. 1 simbol = 1 Byte)
Gambar diatas memperlihatkan bentuk gelombang komunikasi serial dengan format 8N1, yaitu 8-bit data, tanpa parity, 1 stop bit.
n  Pada keadaan idle atau menganggur (idle), jalur RS-232 ditandai dengan mark state atau Logika HIGH.
n  Pengiriman data diawali dengan start bit yang berlogika 0 atau LOW, berikutnya data dikirimkan bit demi bit mulai dari LSB (Least Significant Bit) atau bit ke-0.
n  Pengiriman setiap byte diakhiri dengan stop bit yang berlogika HIGH.
Gambar ini memperlihatkan kondisi LOW setelah stop bit, ini adalah start bit yang menandakan data berikutnya akan dikirimkan. Jika tidak ada lagi data yang ingin dikirim, maka jalur transmisi ini akan dibiarkan dalam keadaan HIGH.
Ada yang disebut ‘Break Signal’, yaitu keadaan LOW yang lamanya cukup untuk mengirimkan 8-bit data. Jika pengirim menyebabkan jalur komunikasi dalam keadaan seperti ini, penerima akan menganggap ini adalah ‘break signal’ atau sinyal rusak.
Data yang dikirimkan dengan cara seperti pada gambar diatas disebut data yang terbingkai (to be framed) oleh start dan stop bit. Jika stop bit dalam keadaan LOW, berarti telah terjadi framing error. Biasanya hal ini terjadi karena perbedaan kecepatan komunikasi antara pengirim dengan penerima.


UART pada 8051
n  UART: Universal Asynchronous Receiver Transmitter.
Fungsi UART membangun komunikasi aliran data digital secara serial dalam frame yang ditetapkan. Frame ini terdiri dari Start Bit, 5 s/d 9 Bits Data, optional memiliki bit Parity yang berperan untuk mendeteksi kesalahan transfer data, dan Stop Bit.
UART juga merupakan salah satu sarana yang disediakan oleh Intel 8051, yang melayani pengiriman dan penerimaan data dengan bantuan register SBUF.
Dengan adanya UART, programer hanya butuh membaca data dari register SBUF tanpa harus susah payah mengatur pengiriman data bit demi bit dengan baudrate tertentu.
Baudrate : besaran kecepatan komunikasi data untuk setiap kali step (clok) pengiriman. Satuannya adalah baud atau symbol/second
Sebelum komunikasi berlangsung, harus dilakukan dulu inisialisasi register-register tertentu pada SFR yang terkait dengan komunikasi serial termasuk penentuan baudrate. Saat proses pengiriman maupun penerimaan data sedang berlangsung, kosong dan penuhnya SBUF akan diberitakan melalui bit indikator TI dan RI. Pemantauan TI dan RI dapat dilakukan dengan atau tanpa melibatkan sistem interupsi.


2.  Setting Mode Komunikasi Serial

Sebelum komunikasi dilakukan, programer harus melakukan setting-an register:
§  SCON à apabila komunikasi yang dilakukan secara sinkron
§  SCON serta TMOD (utk settingan Timer Mode), TH1, dan SMOD (salah satu bit register PCON) à apabila komunikasi dilakukan secara asynchrone
Isi Register SCON
Bit ke-
Nama bit
Address
Explanation of Function
7
SM0
9F
Serial port mode bit 0
6
SM1
9E
Serial port mode bit 1.
5
SM2
9D
Multiprocessor Communications Enable
4
REN
9C
Receiver Enable.
3
TB8
9B
Transmit bit 8. The 9th bit to transmit in mode 2 and 3.
2
RB8
9A
Receive bit 8. The 9th bit received in mode 2 and 3.
1
TI
99
Transmit Flag. Set when a byte has been completely transmitted.
0
RI
98
Receive Flag. Set when a byte has been completely received.
Sebagai tambahannya, tabel diatas berisi mode komunikasi serial yang sesuai dengan keadaan bit-bit SM0 dan SM1.
Mode komunikasi serial berdasarkan bit pada SM0 dan SM1
SM0
SM1
Serial Mode
Explanation
Baud Rate
0
0
0
8-bit Shift Register
Oscillator / 12
0
1
1
8-bit UART
Terkait dengan Timer 1
1
0
2
9-bit UART
Oscillator / 32 or / 64
1
1
3
9-bit UART
Terkait dengan Timer 1

Bit ke-7 sampai bit ke-4 pada SCON merupakan bit konfigurasi. Seperti tampak pada Tabel 10.2, setting bit SM0 dan bit SM1 memungkinkan kita memilih 1 dari 4 mode komunikasi. Mode 0 berarti komunikasi asinkron dengan kecepatan transfer 1/12 kali frekuensi osilator. Jika kita menggunakan osilator 12 MHZ, berarti kecepatan transfernya 1 Mbaud. Mode 1 adalah mode yang palign sering dipilih. Pada mode ini, komunikasi dilakukan secara asinkron dengan baudrate ditentukan berdasarkan setting pada Timer 1. Jika mode 1 ini dipilih, Timer 1 harus diset pada mode 8-bit autoreload. Pengisian register TH1 dan bit SMOD pada register PCON menentukan baudrate yang akan berlaku pada komunikasi serial tipe ini.
Mode 2 dan 3 adalah mode komunikasi serial dengan bingkai atau frame berukuran 9-bit. Karena 1-byte data hanya terdiri dari 8-bit, bit kesembilan diambil dari bit TB8 atau RB8 pada register SCON. Bit TB8 adalah bit yang ditambahkan ketika dilakukan transmit atau pengiriman data, sedangkan bit RB8 ditambahkan ketika prosesor sedanga menerima atau receive data.
Bit SM2 hanya digunakan untuk komunikasi multiprosesor. Biasanya, jika prosesor sedang berperan sebagai penerima data, saat SBUF penuh, bit RI akan berubah menjadi HIGH. Tetapi jika SM2 diset HIGH, maka perubahan RI menjadi HIGH ini bergantung pada bit ke-9 yang diterima, jika bit ke-9 ini HIGH, maka RI juga ikut menjadi HIGH. Meskipun SBUF telah penuh, jika bit ke-9 LOW, maka bit indikator RI tidak akan berubah menjadi HIGH. Hal seperti ini berguna pada aplikasi tertentu yang melibatkan beberapa prosesor untuk berkomunikasi antar mereka. Dengan kata lain setting SM2 bisa membuat prosesor bersangkutan menjadi tuli, tidak menghiraukan datangnya data pada SBUF karena memang data tersebut bukan untuknya tetapi untuk prosesor lainnya yang ada pada jalur komunikasi serial yang sama.
Bit REN atau Receive Enable diset jika kita ingin komunikasi berlangsung 2 arah, prosesor juga dapat menerima data selain dapat mengirim data melalui saluran serial. Jika bit ini diset LOW, maka prosesor menjadi tuli, sama sekali tidak dapat menerima data.
Empat bit LSB pada register SCON merupakan bit-bit operasional. Bit TB8 dan bit RB8 terkait dengan komunikasi serial mode 2 dan 3 seperti telah dijelaskan sebelumnya. Sedangkan bit RI dan TI merupakan bit indikator yang menyatakan SBUF telah dalam keadaan penuh atau kosong. Jika prosesor mengirim data, data tsb cukup diletakkan di register SBUF, pengiriman bit demi bit dilakukan oleh internal USART. Saat SBUF kosong karena semua bit telah dikirimkan ke saluran serial TxD, maka bit indikator TI (transmit interrupt) akan berubah menjadi HIGH. Sedangkan bit indikator RI bekerja sebaliknya. Ketika prosesor sedang menerima data bit demi bit dari saluran serial RxD, bit indikator RI (receive interrupt) akan berubah menjadi HIGH saat SBUF telah dipenuhi 8-bit data.
Perlu dicatat bahwa sebenarnya bit TI diset HIGH pada pertengahan pengiriman stop bit, sedangkan bit RI diset pada pertengahan penerimaan stop bit. Untuk komunikasi dengan standard RS-485 programmer tidak boleh melakukan disable saluran komunikasi terlalu cepat, ia harus menunggu paling tidak selama setengah periode stop bit setelah RI atau TI berubah menjadi HIGH, jika tidak, maka akan terjadi transmission error.

3.  Setting untuk menentukan Baudrate

Seperti tampak pada tabel sebelumnya penentuan kondisi bit SM0 dan SM1 berakibat pada pilihan 1 dari 4 mode komunikasi serial. Mode 0 dan 2 menggunakan baudrate yang hanya bergantung pada frekuensi osilator. Pada mode 0, hanya satu macam baudrate yang diizinkan, yaitu  frekuensi kristal. Jika kita menggunaka kristal 11.0592 Mhz, baudrate untuk mode 0 adalah 921600 baud. Untuk mode 2, disediakan 2 pilihan baudrate, yaitu  atau  kali frekuensi kristal, bergantung pada kondisi bit SMOD pada register PCON. Jika SMOD diset HIGH, maka baudrate sama dengan  kali frekuensi kristal. Jika frekuensi kristal 11.0592 Mhz dan SMOD diset LOW, maka baudrate untuk mode 2 adalah 172800 baud.
Untuk mode 1 dan 3, penentuan baudrate harus melibatkan Timer 1. Timer 1 harus digunakan dengan mode 8-bit autoreload dan pengisian TH1 harus disesuaikan dengan baudrate yang diinginkan. Rumus untuk menentukan isi TH1 terkait dengan budrate yang diinginkan adalah sebagai berikut.
, jika bit SMOD pada register PCON diset LOW.
, jika bit SMOD = HIGH.
Misalnya, jika kita menggunakan kristal 11.0592 Mhz, untuk memperoleh baudrate 19200 baud, TH1 harus diisi dengan angka berikut ini,
TH1 = 256 - ((f / 384) / Baud)
TH1 = 256 - ((11059200 / 384) / 19200)
TH1 = 256 - ((28,799) / 19200)
TH1 = 256 - 1.5 = 254.5
Tetapi karena TH1 harus diisi dengan bilangan integer, maka kita harus memilih pembulatan dari 254.5 menjadi 254 atau 255. Jika kita pilih TH1 = 254, maka baudrate yang akan kita peroleh adalah 14400 baud, sedangkan jika kita pilih TH1 = 255, maka baudratenya menjadi 28800 baud. Tentu saja ini menyulitkan kita. Untuk mengatasinya, kita dapat memanfaatkan bit SMOD pada register PCON. Jika SMOD diset HIGH, maka perhitungan TH1 menjadi seperti berikut ini,
TH1 = 256 - ((f / 192) / Baud)
TH1 = 256 - ((11059200 / 192) / 19200)
TH1 = 256 - ((57699) / 19200)
TH1 = 256 - 3 = 253
Karena yang diperoleh adalah bilangan integer, yaitu 253, maka baudrate yang kita peroleh akan sama dengan 19200 baud.
Secara ringkas, untuk memperoleh baudrate 19200 baud, kita harus melakukan langkah-langkah berikut ini,
1. Pilih komunikasi serial mode 1 atau 3.
2. Pilih mode 2 atau 8-bit autoreload untuk Timer 1.
3. Isi register TH1 dengan bilangan 253.
4. Set bit SMOD pada register PCON menjadi HIGH.


4.  Mengirim dan Menerima Data melalui saluran Serial

Secara ringkas, pengiriman data cukup dilakukan dengan mengisi register SBUF dengan data yang akan dikirimkan, byte selanjutnya dikirim ketika bit TI berubah menjadi HIGH. Sedangkan penerimaan ada cukup dilakukan dengan mengambil data dari SBUF setelah bit RI menjadi HIGH.
Berikut ini adalah contoh potongan program tanpa interupsi untuk mengirimkan 8-byte data dari RAM mulai alamat 30H melalui saluran serial TxD dengan kecepatan transfer 19200 baud. Frekuensi kristal yang digunakan harus 11.0592 MHz.
$MOD51
DSEG
ORG 30H
Buffer:    DS   10   ;pesan tempat 10-byte pada RAM mulai 30H
Loop:      DS   1    ;sebagai counter pengulangan

CSEG
ORG 0H
LJMP START
ORG 30H
START:
MOV  SCON,#01010000B
MOV  TMOD,#00100001B
MOV  PCON,#10000000B
MOV  TH1,#253
MOV  TL1,#253
SETB TR1

MOV  R1,#buffer
MOV  Loop,#8
Ulang:
CLR  TI
MOV  SBUF,@R1        ;copy data dari RAM internal ke SBUF
JNB  TI,$
INC  R1
DJNZ Loop,ulang

END
Jika kita ingin mengambil 8-byte data dari saluran serial RxD kemudian meletakkannya di RAM mulai alamat 30H, maka potongan programnya sebagai berikut,
$MOD51
DSEG
ORG 30H
Buffer:    DS   10   ;pesan tempat 10-byte pada RAM mulai 30H
Loop:      DS   1    ;sebagai counter pengulangan

CSEG
ORG 0H
LJMP START
ORG 30H
START:
MOV  SCON,#01010000B
MOV  TMOD,#00100001B
MOV  PCON,#10000000B
MOV  TH1,#253
MOV  TL1,#253
SETB TR1

MOV  R1,#buffer
MOV  Loop,#8
Ulang:
JNB  RI,$
MOV  @R1,SBUF        ;copy data dari SBUF ke RAM internal
CLR  RI
INC  R1
DJNZ Loop,ulang

END

5. Menghubungkan pin TxD dan RxD dengan konektor DB9.

Untuk melakukan komunikasi serial dengan standar RS-232, harus dilakukan penyesuaian level sinyal dari level TTL menjadi level RS-232 menggunakan IC tertentu, misalnya DS 275 atau MAX232. Gambar 5.1. di bawah ini merupakan contoh penggunaan IC MAX232 untuk menyesuaikan tegangan dari prosesor dengan tegangan standar RS-232 yang melalui konektor DB9. Pin TxD dari prosesor dihubungkan dengan pin T1IN pada MAX232, sedangkan pin RxD dari prosesor dihubungkan dengan pin R1OUT pada MAX232.
Gambar 5.1. Contoh penggunaan IC pengubah level sinyal.
Gambar 5.2. memperlihatkan contoh sambungan prosesor AT89C2051 dengan konektor DB9. Karena prosesor terhubung juga dengan driver stepper motor, maka dapat dibuat program untuk memungkinkan pengendalian stepper tersebut melalui saluran serial. Informasi dapat berasal dari PC maupun alat lainnya seperti handphone.
Gambar 5.2. Contoh sambungan antara DB9 dengan prosesor AT89C2051.



6. Menghubungkan prosesor Intel 8051 dengan Personal Computer.

Berikut ini adalah contoh potongan program yang menggunakan interupsi untuk komunikasi anta prosesor Intel 8051 dengan sebuah Personal Computer melalui konektor DB9. Gambar 6.1. memperlihatkan software yang digunakan untuk komunikasi serial pada PC, sedangkan gambar 6.2. adalah contoh setting format data dan baudrate yang diinginkan.

Gambar 6.1. Penggunaan program Hyper Terminal pada Windows XP.

Gambar 6.2. Penentuan konektor DB9 (kiri) dan baudrate (kanan)
Untuk menerima data dari PC, prosesor Intel 8051 harus diisi dengan program penerimaan data dari PC seperti tampak pada listing berikut ini,

PENERIMAAN DATA DARI PC
$MOD51
ORG     000H
LJMP    START       ;alamat awal program

ORG     023H        ;alamat awal ISR untuk Komunikasi Serial
LJMP    SERIALKOM

START:          MOV     SCON,#50H
MOV     TMOD,#0010000B
MOV    TL1,#0FDH         ;baud rate 9600 bps
MOV     TH1,#0FDH
MOV     PCON,#00H
SETB    TR1
SETB    ES
SETB    EA
SJMP    $

SERIALKOM:      CLR     RI
MOV     A,SBUF
MOV     P1,A
RETI

   END

PENGIRIMAN DATA KE PC
$MOD51
ORG     000H
LJMP    START       ;alamat awal program

ORG     023H        ;alamat awal ISR untuk Komunikasi Serial
LJMP    SERIALKOM

START:          CLR     ET1
    MOV         SCON,#40H
MOV     TMOD,#0010000B
MOV     TL1,#0FDH         ;baud rate 9600 bps
MOV     TH1,#0FDH
MOV     PCON,#80H
SETB    TR1
SETB    ES
SETB    EA
MOV     A,#’1’            ;kode ASCII untuk angka ‘1’
CLR     TI
MOV     SBUF,A
SJMP    $

SERIALKOM:      CLR     TI
    MOV         SBUF,A
CJNE    A,#’9’,PLUS
MOV     A,#’1’
SJMP    EXIT
PLUS:           INC     A
EXIT:           RETI
END
PENERIMAAN DAN PENGIRIMAN DATA.
Program ini memungkinkan prosesor Intel 8051 menerima data dari PC, kemudian langsung mengembalikannya ke PC.
$MOD51
ORG     000H
LJMP    START       ;alamat awal program
ORG     023H        ;alamat awal ISR untuk Komunikasi Serial
LJMP    SERIALKOM

START:          CLR     ET1
    MOV         SCON,#50H
MOV     TMOD,#0010000B
MOV    TL1,#0FDH         ;baud rate 9600 bps
MOV     TH1,#0FDH
MOV     PCON,#00H
SETB    TR1
SETB    ES
SETB    EA
SJMP    $
SERIALKOM:      CLR     RI
MOV     A,SBUF
CLR     TI
MOV     SBUF,A
JNB     TI,$
CLR     TI
RETI
       END


Tidak ada komentar:

Posting Komentar