parallel serial prog
Post on 18-Dec-2014
526 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
Oleh : Mujahidinhttp://www.iddhien.com
iddhien@gmail.commujahidin@iddhien.com
iddhien2006 all rights reserved
1
Tata Cara Komunikasi Data Serial
iddhien2006 all rights reserved
Ada 2 macam cara komunikasi data serialyaitu Sinkron dan Asinkron
Pada komunikasi data serial sinkron, clock dikirimkan bersama sama dengan data serial, tetapi clock tersebut dibangkitkan sendiri – sendiri baik pada sisi pengirim maupun penerima.Sedangkan pada komunikasi serial asinkron tidak diperlukan clock karena data dikirimkan dengan kecepatan tertentu yang sama baik pada pengirim / penerima.2
http://www.iddhien.com
2
iddhien2006 all rights reserved
Pada IBM PC kompatibel port serialnya termasuk jenis asinkron. Komunikasi data serial ini dikerjakan oleh UART (Universal Asynchronous Receiver Transmitter). IC UART dibuat khusus untuk mengubah data parallel menjadi data serial dan menerima data serial yang kemudian dirubah lagi menjadi data parallel.IC UART 8250 merupakan salah satunya. Selain berbentuk IC mandiri berbagai macam mikrokontroller juga ada yang dilengkapi dengan UART, misalnya AT89S51/52/53 atau PIC16F8773
http://www.iddhien.com
iddhien2006 all rights reserved
Pada UART, kecepatan pengiriman data ( atau yang sering disebut dengan Baud Rate ) dan fase clock pada sisi transmitter dan sisi receiver harus sinkron.
Untuk itu diperlukan sinkronisasi antara Transmitter dan Receiver. Hal ini dilakukan oleh bit “Start” dan bit “Stop”. Ketika saluran transmisi dalam keadaan idle, output UART adalah dalam keadaan logika “1”.
4http://www.iddhien.com
3
iddhien2006 all rights reserved
Ketika Transmitter ingin mengirimkan data, output UART akan diset dulu ke logika “0” untuk waktu satu bit. Sinyal ini pada receiver akan dikenali sebagai sinyal “Start” yang digunakan untuk menyinkronkan fase clocknya sehingga sinkron dengan fase clock transmitter.
Selanjutnya data akan dikirimkan secara serial dari bit yang paling rendah (bit0) sampai bit tertinggi.Selanjutnya akan dikirimkan sinyal “Stop” sebagai akhir dari pengiriman data serial.
5http://www.iddhien.com
iddhien2006 all rights reserved
Sebagai contoh misalnya akan dikirimkan data huruf “A” dalam format ASCII (atau sama dengan 41 heksa atau 0100 0001
6
PENGIRIMAN HURUF “A” TANPA BIT PARITAS
http://www.iddhien.com
4
iddhien2006 all rights reserved
Kecepatan transmisi (baud rate) dapat dipilih bebas dalam rentang tertentu.Baud rate yang umum dipakai adalah 110, 135, 150, 300, 600, 1200, 2400, dan 9600 (bit/perdertik).Dalam komunikasi data serial, baud rate dari kedua alat yang berhubungan harus diatur pada kecepatan yang sama. Selanjutnya harus ditentukan panjang data (6,7 atau 8 bit), paritas (genap, ganjil, atau tanpa paritas), dan jumlah bit “Stop” (1, 1 ½ , atau 2 bit)7
http://www.iddhien.com
Karakteristik Sinyal Port Serial
iddhien2006 all rights reserved
Standar sinyal komunikasi serial yang banyak digunakan adalah Standar RS232 yang dikembangkan oleh Electronic Industri Association (EIA/TIA) yang pertama kali dipublikasikan pada tahun 1962.Ini terjadi jauh sebelum IC TTL populer sehingga sinyal ini tidak ada hubungan sama sekali dengan level tegangan IC TTL. Standar ini hanya menyangkut komunikasi antara (Data Terminal Equipment – DTE) dengan alat – alat pelengkap komputer (Data Circuit Terminating Equipment –DCE)8
http://www.iddhien.com
5
iddhien2006 all rights reserved
Standar sinyal RS232 memiliki ketentuan level tegangan sebagai berikut :
1. Logika 1 disebut ‘Mark’ terletak antara -3 Volt sampai -25 Volt
2. Logika ‘0’ disebut ‘space’ terletak antara +3 Volt samapai +25 Volt.
3. Daerah tegangan antara -3 Volt sampai +3 Volt adalah invalid level, yaitu daerah tegangan yang tidak memiliki level logika pasti sehingga harus dihindari. Demikian juga level tegangan dibawah -25 Volt dan diatas +25 Volt juga harus dihindari karena bisa merusak line driver pada saluran RS2329
http://www.iddhien.com
iddhien2006 all rights reserved
Gambar dibawah adalah contoh level tegangan RS232 pada pengiriman huruf “A” dalam format ASCII tanpa bit paritas.
10
Level Tegangan RS232 pada pengiriman huruf “A”Tanpa Bit Paritas.
http://www.iddhien.com
6
Flow Control
iddhien2006 all rights reserved
Jika kecepatan transfer data dari DTE ke DCE (misal dari komputer / modem) lebih cepat dari pada transfer data dari DCE ke DCE (modem ke modem) maka cepat atau lambat kehilangan data akan terjadi karena buffer pada DCE akan mengalami overflow. Untuk itu diperlukan sistem flow control untuk mengatasi masalah tersebut.Ada 2 macam flow control yaitu secara hardware dan secara software.
11http://www.iddhien.com
iddhien2006 all rights reserved
Flow control secara software atau yang sering disebut dengan Xon (karakter ASCII 17) dan Xoff (karakter ASCII 19).DCE akan mengirimkan Xoff ke komputer untuk memberitahukan agar komputer menghentikan pengiriman data jika buffer pada DCE telah penuh.Jika buffer telah kembali siap menerima data DCE akan mengirimkan karakter Xon ke komputer dan komputer akan melanjutkan pengiriman data sampai data terkirim semua.Keuntungan Flow Control ini adalah hanya diperlukan kabel sedikit karena karakter kontrol dikirim lewat saluran TX RX.12
http://www.iddhien.com
7
iddhien2006 all rights reserved
Flow Control secara hardware atau sering disebut RTS / CTS menggunkan dua kabel untuk melakukan pengontrolan.Komputer akan men-set saluran Request to Send (RTS) jika akan mengirimkan data ke DCE. Jika buffer di DCE siap menerima data, maka DCE akan membalas dengan men-set saluran Clear to Send (CTS) dan komputer akan mulai mengirimkan data.Jika buffer telah penuh, maka saluran akan di reset dan komputer akan menghentikan pengiriman data sampai saluran ini di-set kembali.13
http://www.iddhien.com
Konfigurasi Port Serial
iddhien2006 all rights reserved
Konektor DB-9 pada bagian belakang komputer adalah port serial RS232 yang biasa dinamai dengan COM1 dan COM2.
14http://www.iddhien.com
8
iddhien2006 all rights reserved
15
Transmit DataOutTxD3
Data Terminal ReadyOutDTR4
Ground-GND5
Data Set ReadyInDSR6
Request to SendOutRST7
Clear to SendInCTS8
Ring IndicatorInRI9
Receive DataInRxD2
Data Carrier Detect/ Receive Line Signal
DetectInDCD1
KeteranganDirectionNama SinyalNomor PIN
Konfigurasi pin dan nama sinyal konektor serial DB-9
http://www.iddhien.com
iddhien2006 all rights reserved
Keterangan mengenai fungsi saluran RS232 pada konektor DB-9 adalah sebagai berikut :
1. Received Line Signal Detect, dengan saluran ini DCE memberitahukan ke DTE bahwa pada terminal masukan ada data masuk.
2. Receive Data, digunakan DTE menerima data dari DCE.
3. Transmit Data, digunakan DTE mengirimkan data ke DCE.
4. Data Terminal Ready, pada saluran ini DTE memberitahukan kesiapan terminalnya.
5. Signal Ground, saluran ground16http://www.iddhien.com
9
iddhien2006 all rights reserved
6. DCE ready, sinyal aktif pada saluran ini menunjukkan bahwa DCE sudah siap.
7. Request to Send, dengan saluran ini DCE diminta mengirim data oleh DTE.
8. Clear to Send, dengan saluran ini DCE memberitahukan bahwa DTE boleh mulai mengirim data.
9. Ring Indicator, pada saluran ini DCE memberitahukan ke DTE bahwa sebuah stasiun menghendaki hubungan dengannya.
17http://www.iddhien.com
iddhien2006 all rights reserved
18
Untuk dapat menggunakan port serial harus diketahui dahulu alamat dari port serial tersebut. Biasanya tersedia dua port serial pada CPU, yaitu COM1 dan COM2. Base Address COM1 biasanya 1016 (3F8h) dan COM2 biasanya 760 (2F8h). Alamat tersebut adalah alamat yang biasa digunakan, tergantung komputer yang digunakan.Tepatnya kita bisa melihat pada peta memori tempat menyimpan alamat tersebut, yaitu memori 0000.0400h untuk COM1 dan 0000.0402h untuk COM2
http://www.iddhien.com
10
iddhien2006 all rights reserved
19
Berikut adalah nama – nama register yang digunakan beserta alamatnya.
COM2COM1Nama Register
2F9h3F9hBaud Rate Divisor Latch MSB
2F9h3F9hInterrupt Enable Register
2FAh3FAhInterrupt Identification Register
2FBh3FBhLine Control Register
2FCh3FChModem Control register
2FDh3FDhLine Status Register
2FEh3FEhModem Status Register
2F8h3F8hBaud Rate Divisor latch LSB
2F8h3F8hRX Buffer
2F8h3F8hTX Buffer
http://www.iddhien.com
iddhien2006 all rights reserved
20
Keterangan Register• RX Buffer , digunakan untuk menampung dan menyimpan data dari DCE.• TX Buffer , digunakan untuk menampung dan menyimpan data yang akan dikirim ke port serial.• Baud Rate Divisor Latch LSB , digunakan untuk menampung byte bobot rendah untuk pembagi clock pada IC UART agar didapat baud rate yang tepat• Baud Rate Divisor Latch MSB , digunakan untuk menampung byte bobot tinggi untuk pembagi clock pada IC UART sehingga total angka pembagi adalah 4 byte yang dapat dipilih dari 0001h sampai FFFFh
http://www.iddhien.com
11
iddhien2006 all rights reserved
21
Berikut adalah tabel angka pembagi yang sering digunakan :
0180h300
0C00h600
0060h1200
0040h1800
000Ch9600
0018h4800
0030h2400
Angka PembagiBaud Rate (bit / detik)
Sebagai catatan, register Baud Rate Divisor Latch ini bisa diisijika bit 7 pada register Line Control Register diisi 1
http://www.iddhien.com
iddhien2006 all rights reserved
22
• Interrupt Enable Register, digunakan untuk menset interupsi apa saja yang akan dilayani komputer.
1: interupsi diaktifkan jika ada perubahan keadaan pada Line Status Register
2
1: Interupsi diaktifkan jika ada perubahan keadaan pada Modem Status Register
3
Diisi 04,5,6,7
1: Interupsi akan diaktifkan jika register Tx kosong
1
1 : Interupsi akan diaktifkan jika menerima data
0
KeteranganNomor Bit
Rincian bit pada interrupt Enable register
http://www.iddhien.com
12
iddhien2006 all rights reserved
23
• Interrupt Identification Register, digunakan untuk menentukan urutan prioritas interupsi
Diisi 03, 4, 5, 6, 7
00 : Prioritas tertinggi oleh Line Status register01 : Prioritas tertinggi oleh register Rx jika menerima data10 : Prioritas tertinggi oleh register Tx jika telah kosong11 : Prioritas tertinggi oleh modem status register
1 & 2
0 : Interupsi menunggu1 : No interrupt pending
0
KeteranganNomor Bit
Rincian bit pada interrupt identification register
http://www.iddhien.com
iddhien2006 all rights reserved
24
• Line Control register, digunakan untuk menentukan jumlah bit data, jumlah bit pariti, jumlah bit stop, serta untuk menentukan apakah baud rate divisor dapat diubah atau tidak.
Bit Stop0 : Jumlah bit stop adalah 11: Jumlah bit stop adalah 5 untuk 5 bit data dan 2 untuk 6 hingga 8 bit data
2
Jumlah bit data00 : jumlah bit data adalah 501 : jumlah bit data adalah 610 : jumlah bit data adalah 711 : jumlah bit data adalah 8
0 dan 1
KeteranganNomor Bit
Rincian bit pada Line Control register
http://www.iddhien.com
13
iddhien2006 all rights reserved
25
0 : Set break control tidak diaktifkan1 : Set break control diaktifkan
6
1 : Bit pariti ikut dikirimkan (stick parity)5
0 : Baud rate divisor tidak dapat diakses1 : Baud rate divisor dapat diakses
7
0 : Pariti ganjil1 : Pariti Genap
4
Bit pariti0 : tanpa Pariti1 : Dengan Pariti
3
KeteranganNomor Bit
Lanjutan Rincian bit pada interrupt identification register
http://www.iddhien.com
iddhien2006 all rights reserved
26
• Modem Control register, digunakan untuk mengatur saluran pengatur modem terutama saluran DTR dan saluran RST
Bit RST0 = Saluran RST diaktifkan (aktif 0)1 = Saluran RST dibuat normal (tidak aktif)
1
Bit DTR0 = Saluran DTR diaktifkan (Aktif 0)1 = Saluran DTR dibuat normal (tidak aktif)
0
KeteranganNomor Bit
Rincian bit pada Modem Control register
http://www.iddhien.com
14
iddhien2006 all rights reserved
27
• Lanjutan
Diisi 05, 6, 7
0 = Loop Back internal diaktifkan1 = Loop Back internal tidak diaktifkan.
4
Bit OUT2 digunakan untuk penghubung ke pernagkat lain dapat dibuat logika low atau high.
3
Bit OUT1 digunakan untuk penghubung ke perangkat lain, dapat dibuat logika high atau low. Secara normal tidak digunakan.
2
KeteranganNomor Bit
Rincian bit pada Modem Control register
http://www.iddhien.com
iddhien2006 all rights reserved
28
• Line Status Register, digunakan untuk menampung bit – bit yang menyatakan keadaan penerimaan atau pengiriman data dan status kesalahan operasi.
Diisi kosong7
1 = Menyatakan bahwa transmitter Shift Register telah kosong
6
1 = Menyatakan bahwa register TX telah kosong5
1 = Terjadi Break Interrupt4
1 = Terjadi kesalahan framing3
1 = Terjadi kesalahan pada bit pariti2
1 = Data yang masuk mengalami overrun1
1 = Menyatakan adanya data masuk pada buffer RX0
KeteranganNomor Bit
Rincian bit pada Line Status register
http://www.iddhien.com
15
iddhien2006 all rights reserved
29
• Modem Status Register, digunakan untuk menampung bit – bit yang menyatakan status dari saluran hubungan dengan modem
1 = Menyatakan adanya perubahan keadaan di saluran Ring Indicator (RI) dari Low ke High
2
1 = Menyatakan adanya perubahan keadaan di saluran Data Set Ready (DSR)
1
1 = Menyatakan adanya perubahan keadaan di saluran Clear to Send (CTS)
0
KeteranganNomor Bit
Rincian bit pada Modem Status register
http://www.iddhien.com
iddhien2006 all rights reserved
30
• Lanjutan.
1 = Menyatakan bahwa saluran Receive Line Signal Detect (DCD) sudah dalam keadaan aktif
7
1 = Menyatakan bahwa saluran Ring Indicator sudah dalam keadaan High
6
1 = Menyatakan saluran Data Set Ready (DSR) sudah dalam keadaan aktif
5
1 = Menyatakan saluran Clear to Send (CTS) sudah dalam keadaan aktif
4
1 = Menyatakan adanya perubahan di saluran Receive Line Signal Detect (DCD)
3
KeteranganNomor Bit
Rincian bit pada Modem Status register
http://www.iddhien.com
16
Alasan Penggunaan Port Serial
iddhien2006 all rights reserved
Dibandingkan dengan menggunakan port parallel penggunaan port serial terkesan lebih rumit. Berikut adalah keuntungan penggunaan port serial dibandingkan penggunaan port parallel.
31
1. Pada komunikasi dengan kabel yang panjang, masalah cable loss tidak akan menjadi masalah besar daripada menggunakan kabel parallel. Port serial mentransmisikan “1” pada level tegangan -3 Volt sampai -25 Volt dan “0” pada level tegangan +3 Volt sampai +25 Volt, sedangkan port parallel mentransmisikan “0” pada level tegangan 0 Volt dan “1” pada level tegangan 5 Volt.
http://www.iddhien.com
iddhien2006 all rights reserved
32
2. Dubutuhkan jumlah kabel yang sedikit, bisa hanya menggunakan 3 kabel yaitu saluran Transmit Data, saluran Receive Data, dan saluran Ground (Konfigurasi Null Modem)
3. Saat ini penggunaan mikrokontroller semakin populer. Kebanyakan mikrokontroller sudah dilengkapi dengan SCI (Serial Communication Interface) yang dapat digunakan untuk komunikasi dengan port serial komputer.
http://www.iddhien.com
17
Pengaksesan Port Serial Pada Visual Basic
iddhien2006 all rights reserved
Untuk pengaksesan port serial kita dapat mengaksesnya secara langsung menggunakan kontrol MSComm yang telah disediakan Visual basic.Kontrol MSComm menyediakan fisilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial.Setiap MSComm hanya menangani satu port serial sehingga jika kita ingin menggunakan lebih dari satu port serial harus digunakan MSComm lain.33
http://www.iddhien.com
iddhien2006 all rights reserved
34
Properti MSCommJumlah properti pada MSComm sangat banyak, dan hanya beberapa properti yang perlu kita ketahui. Properti yang sering digunakan adalah :CommPortDigunakan untuk menentukan nomor port serial yang akan dipakaiSettingDigunakan untuk menset nilai baud rate, pariti, jumlah bit data, dan jumlah bit stop.PortOpenDigunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini
http://www.iddhien.com
18
iddhien2006 all rights reserved
35
InputDigunakan untuk mengambil data string yang ada pada buffer penerima.OutputDigunakan untuk menulis data string pada buffer kirim
Berikut adalah contoh penggunaan properti tersebut
http://www.iddhien.com
iddhien2006 all rights reserved
36
Berikut adalah contoh penggunaan properti tersebut Private Sub Form_Load ()
MSComm1.ComPort = 1MSComm1.Setting = “9600,N,8,1”MSComm1.InputLen = 0MSComm1.PortOpen = TrueMSComm1.Output = “ATV1Q0” & Chr$(13)Do
DoEventsBuffer$ = Buffer$ & MSComm1.InputLoop Until InStr (Buffer$, “OK”& vbCLRF)MSComm1.PortOpen = False
End Subhttp://www.iddhien.com
19
iddhien2006 all rights reserved
37
Kode – kode program pada prosedur diatas akan melakukan aksi sebagai berikut :• Port serial yang digunakan adalah COM1• Setting MSComm adalah : Baud rate 9600, tanpa paritas,
jumlah data 8 bit, dan jumlah bit stop adalah 1 bit• Memerintahkan kontrol MSComm membaca seluruh isi
buffer ketika menggunakan perintah input (MSComm1.InputLen = 0)
• Membaca port serial• Mengirim perintah “ATV1Q0” diikuti ASCII 13 (enter)
ke modem• Menunggu modem mengirimkan jawaban “OK” ke
komputer• Menutup port serial
http://www.iddhien.com
iddhien2006 all rights reserved
38
Even Pada MSCommMSComm hanya mempunyai satu even saja, yaitu even OnComm. Even OnComm dibangkitkan jika nilai properti dari CommEvent berubah yang mengindikasikan telah terjadi even pada port serial baik even komunikasi maupun even error.
Tabel berikut adalah tabel mengenai nilai – nilai dari properti CommEvent, nilai properti ini tidak tersedia pada saat design time, tetapi hanya dapat dibaca pada saat run time.
http://www.iddhien.com
20
iddhien2006 all rights reserved
39
Nilai-nilai properti even error pada CommEvent
Mendapatkan kembali Device Control Block (DCB) dari port serial
comEventDCB
Sinyal Break diterimacomEventBreak
Port mengalami overruncomEventOverrun
Buffer kirim penuhcomEventTxFull
Buffer penerima mengalami over flow, tidak ada ruang kosong lagi pada buffer penerima
comEventRxOver
Hardware mendeteksi adanya kesalahan pariticomEventRxParity
Hardware mendeteksi adanya kesalahan frame
comEventFrame
KeteranganKonstanta
http://www.iddhien.com
iddhien2006 all rights reserved
40
Nilai-nilai properti even komunikasi pada CommEvent
Karakter End of File diterimacomEvEOF
Terdeteksi adanya sinyal RingcomEvRing
Terjadi perubahan pada saluran Carrier DetectcomEvCD
Terjadi perubahan pada saluran Data Set ReadycomEvDSR
Terjadi perubahan pada saluran Clear to SendcomEvCTS
Telah diterima karakter sebanyak nilai properti Rthreshold. Even ini akan dibangkitkan terus menerus sampai data diambil dari buffer penerima menggunakan perintah Input. Even ini akan dibangkitkan jika nilai pada properti Rthershold tidak diisi “0”
comEvReceive
Jumlah karakter pada buffer kirim lebih sedikit dari pada nilai properti Sthreshold. Even ini akan dibangkitkan jika nilai pada properti Sthreshold tidak diisi “0”
comEvSend
KeteranganKonstanta
http://www.iddhien.com
21
iddhien2006 all rights reserved
41
Berikut adalah contoh penggunaan even OnComm untuk komunikasi menggunakan mikrokontroller. Akan dibaca hanya even comEvReceive sajaPrivate Static Sub MSComm1_OnComm ()
Dim Buffer As VariantSelect Case MSComm1.CommEvent
Case comEvReceiveIf MSComm1.InVufferCount >= 3thenbuffer = CStr (MSComm1.Input)If Mid (Buffer,1,1) = “0”then
if Mid (Buffer,2,1)= “K”then
http://www.iddhien.com
iddhien2006 all rights reserved
42
StatusBar1.Panels (“Value”).Text = “Value : “ & Asc(Mid(Buffer,3,1))StatusBar1.Panels(“Status”).Text = “Status :Connect”End If
End IfEnd If
End SelectEnd Sub
http://www.iddhien.com
22
iddhien2006 all rights reserved
43
Kode – kode program pada prosedur diatas akan melakukan aksi sebagai berikut :• Mendeteksi even comEvenReceive, kemudian menentukan apakah sudah diterima tiga buah karakter pada buffer penerima• Menentukan apakah karakter yang diterima adalah karakter “OK”. Jika karakter yang diterima adalah “OK” maka akan diubah nilai “Value” dan nilai “Status” pada properti panel kontrol StatusBar1
http://www.iddhien.com
iddhien2006 all rights reserved
43
QUIZBuatlah sebuah program aplikasi dengan VB pada Komputer yang mengatur komunikasi serial antara komputer sebagai host dengan client.
• Setting komunikasi serial 9600 baudrate, no parity, 8 data bit, 1 bit Stop, Com Port 1.• Komputer akan mengirimkan data (20)h, (21)h, (22)h. Setelah client menerima data tersebut, client akan menjawab (membalas) dengan mengirim data “OK1” ke komputer. Setelah komputer menerima OK1, komputer akan menampilkan label “Akses 1 OK”• Selanjutnya komputer akan mengirimkan lagi data (30)h, (31)h, (32)h. Client akan menjawab (membalas) dengan “OK2” ke komputer. Selanjutnya komputer akan menampilkan label “Akses 2 OK”.• Selanjutnya komputer akan melakukan tugas untuk mengakuisisi setiap data yang lewat pada Serial Comm untuk ditampilkan dalam sebuah Text di Visual basic.
http://www.iddhien.com
23
iddhien2006 all rights reserved
43http://www.iddhien.com
top related