• Tidak ada hasil yang ditemukan

Interfacing. Materi 4: Serial Communications. Disusun Oleh: I Nyoman Kusuma Wardana

N/A
N/A
Protected

Academic year: 2021

Membagikan "Interfacing. Materi 4: Serial Communications. Disusun Oleh: I Nyoman Kusuma Wardana"

Copied!
52
0
0

Teks penuh

(1)

Interfacing

Materi 4: Serial Communications

Disusun Oleh:

(2)

Outline

• Serial Communication Overview • Asynchronous vs Synchronous • RS232

• AVR Serial Port Programming • Workshop

(3)
(4)

Serial Communications

• Mikrokontroler sering melakukan pertukaran data dgn periperal

• Data dpt dikirim dgn cara:

1. Paralel 2. Serial

(5)

Serial Communications

• Paralel  keseluruhan byte data dikirim scr

simultan dikirim dr transmitter ke receiver

• Paralel bersifat efisien  namun boros

jalur/kabel: membutuhkan tambahan biaya

Transmitter Receiver

D0

D7

(6)

Serial Communications

• Komunikasi serial  data byte dikirim berupa single bit

dalam waktu tertentu

• Segera setelah 8 bit diterima oleh receiver, maka data byte akan direkonstruksi

• Dr sisi waktu, komunikasi serial tidak secepat paralel

 namun hanya membutuhkan 1(atau 2) jalur/kabel

utk mentransmisikan data

6

Transmitter Receiver

(7)

Serial Communications

• Komunikasi serial  lebih murah

• Jarak komunikasi  lebih dipilih serial drpd paralel

• Antar Periperal atau antar komputer dpt berkomunkasi lebih jauh  misal melalui komunikasi telepon

(8)

Serial Communications

• AVR (misal ATmega16)  dilengkapi dgn bbrp tipe komunikasi serial, yaitu sbb:

1. USART 2. SPI

3. TWI

(9)

Serial Communications

Asynchronous vs Synchronous Serial Transmission

• Dlm komunikasi serial  mengirim dan menerima data hrs disinkronkan menggunakan data rate & protokol yg sama

• Synchronization  memungkinkan transmitter & receiver menerima dan mengirim data yg sama dan benar

• Dua metode dasar:

1. Asinkron 2. Sinkron

(10)

Serial Communications

• Asinkron  misal USART pd ATmega16, menggunakan framing bits, diletakkan pd awal dan akhir data byte

• Framing bit  mengingatkan receiver akan

kedatangan data byte dan selanjutnya

mengatakan bahwa data sinyal telah komplit

diterima

• Data rate asinkron  lebih rendah dr sinkron, namun hanya membutuhkan 1 jalur

(11)

Serial Communications

• Sinkron  menggunakan clock yg sama pada transmitter & receiver

• Data bit dikirim dan diterima berdasarkan

edge (transisi) dr clock

• Data rate sinkron  lebih cepat drpd asinkron, namun membutuhkan 2 jalur

(12)

Baud Rate

• Baud rate  kecepatan transmisi data • Baud = bits per second rate

• Nilai komunikasi yg umum: 9600 baud  data

ditransfer sebanyak 9600 bit/detik

(13)

Simplex, Half & Full Duplex

Transmitter Receiver Transmitter Receiver Transmitter Receiver Receiver Transmitter Simplex Half Duplex Full Duplex Receiver Transmitter

(14)

Asynchronous Serial Comm.

Start and Stop Bits

• Protokol  kumpulan aturan, bgmn data

dipaket, bmgn kumpulan bit membentuk

karakter, kapan mulai dan berakhir suatu, dsb • Asinkron  character-oriented transmission

• Setiap karakter ditempatkan diantara start

dan stop bit  hal ini dsbt framing

(15)

Asynchronous Serial Comm.

• Data framing pd asinkron, msl karakter ASCII

diapit oleh start dan stop bit

• Start bit : 1 bit dan selalu 0 (low)

• Stop bit : 1 atau 2 bit dan selalu 1 (high)

Contoh:

• karakter ASCII utk A (0100 0001)  diapit oleh start bit dan stop bit.

(16)

Asynchronous Serial Comm.

• Karakter A (0100 0001)

• Jika tidak ada transfer  sinyal 1 (high): mark

• Sinyal rendah  space (start bit)

• Urutan transmisi: markMSB(data)LSBspace

16 0 1 0 0 0 0 0 1 start bit stop bit space mark D0 D7

(17)

RS232 Standards

• Electronics Industries Association (EIA) thn 1960 mengeluarkan standar RS232

• Dimodifikasi thn 1963 mnjd RS232A

• Modifikasi selanjutnya: RS232B (1965), RS232C (1969)

• Krn standar diset sebelum perkembangan keluarga TTL (transistor-transistor Logic) 

(18)

RS232 Standards

• Pada RS232:

• Logika 1 : -3 sampai -25V

• Logika 0 : +3 sampai +25V

• Nilai antara -3 sampai +3 tidak terdefinisi

• Utk koneksi RS232 pd mikrokontroler  harus menggunakan konverter : MAX232

• MAX232  konversi TTL ke tegangan RS232, dan sebaliknya

(19)

RS232 Standards

• RS232 pins, diperlihatkan pd gambar berikut:

• Original RS232: DB25 (skrg tdk dgunakan lagi) • Selanjutnya, IBM  menciptakan DB9

(20)

RS232 Standards

• Konfigurasi DB9:

(21)
(22)

ATmega16 Connection to RS232

• RS232 standar  tidak

kompatibel dgn TTL

• MAX232  diperlukan utk

menjembatani hal ini

• Antarmuka ATmega16 dgn MAX232 adlh topik utama dlm pokok bahasan ini

• PD0 dan PD1  2 pin utk

TX dan RX

(23)

ATmega16 Connection to RS232

• Pada AT Mega16:

• Pin 15: TX • Pin 14: RX

MAX232

• Produk dr Maxim Corp

• Menggunakan power 5V

sama dgn AVR

• Jd, cukup dgn single +5V

(24)

ATmega16 Connection to RS232

• Koneksi MAX232 dan ATmega16

(25)
(26)

AVR Serial Port Programming

• USART  Universal Synchronous Asynchronous Receiver Transmitter

• Dlm mikrokontroler AVR trdpt 5 register utk mengontrol USART:

1. UDR (USART Data Register)

2. UCSRA (USART Control and Status Register A)

3. UCSRB (USART Control and Status Register B)

4. UCSRC (USART Control and Status Register C)

5. UBRR (USART Baud Rate Register)

(27)

AVR Serial Port Programming

UBBR Register and Baud Rate in the AVR

• Tipikal kecepatan COM Port pd komputer x86:

Baud Rate pada HyperTerminal (bit/s) 1.200 2.400 4.800 19.200 38.400 57.600 115.200

(28)

AVR Serial Port Programming

• Sblm Windows 7  komunikasi serial menggunakan HyperTerminal

• Baud rate pd AVR dapat diprogram menggunakan register UBRR

• Berdasarkan pd detak kristal, nilai yg

dimasukkan pd UBRR menentukan baud rate

(29)

AVR Serial Port Programming

• Jika: Fosc (frequency of oscillator) diketahui, maka:

Baud Rate yg diinginkan = 𝐹𝑜𝑠𝑐

16 𝑈𝐵𝑅𝑅 + 1

𝑈𝐵𝐵𝑅 = 𝐹𝑜𝑠𝑐

(30)

AVR Serial Port Programming

• Contoh: Asumsikan kita memakai kristal dgn detak 8MHz (Fosc = 8MHZ)

• Baud Rate yg diinginkan = 16 𝑈𝐵𝑅𝑅+1𝐹𝑜𝑠𝑐

• Baud Rate yg diinginkan = 16 𝑈𝐵𝑅𝑅+18MHz

• Baud Rate yg diinginkan = 500kHz

𝑈𝐵𝑅𝑅+1

• Baud Rate yg diin1𝑈𝐵𝐵𝑅 = 500kHz𝑈𝐵𝐵𝑅 − 1

(31)

• Fosc = 8 MHZ  (500.000/Baud rate) – 1

AVR Serial Port Programming

Baud Rate UBRR (Decimal) UBRR (Hex)

38.400 12 C 19.200 25 19 9.600 51 33 4.800 103 67 2.400 207 CF 1.200 415 19F

(32)

AVR Serial Port Programming

• Down-counter dimuati dgn nilai UBRR dan menghitung sampai nol

• Ketika down-counter mencapai nol  satu detak dihasilkan

• Membentuk frequency divider (pembagi frek.) • Selanjutnya dibagi lg dgn 2, 4 dan 2

(33)

AVR Serial Port Programming

(34)

AVR Serial Port Programming

UDR Registers and USART data I/O

(35)

AVR Serial Port Programming

• AVR  utk menyediakan komunikasi serial full-duplex diperlukan 2 shift register: Transmit Shift Register & Receive Shift Register

• Msg2 memiliki buffer yg terhubung scr langsung:

Transmit Data Buffer Register dan Receive Data

Buffer Register

• Keduanya berbagi I/O address  bersama membentuk USART Data Register (UDR)

(36)

AVR Serial Port Programming

• Menulis data ke UDR  TXB

• Membaca data dr UDR  RXB

(37)

AVR Serial Port Programming

UCSR Registers and USART Configurations

• Ada 3 UCSR: UCSRA, UCSRB, UCSRC

(38)

Workshop

(39)

AVR Serial Port Programming

Contoh:

• Berapakah nilai UCSRB dan UCSRC yg

diperlukan agar komunikasi terkonfigurasi: • Asinkron

• 8 data bit (ukuran karakter) • Tdk terdapat parity

• 1 stop bit

(40)

Jawab:

• RXEN = 1 & TXEN = 1 (enable receive & transmit)

• UCSZ2:0 = 011 (8-bit data)

• UMSEL = 0 (asinkron)

• UPM1:0 = 00 (no parity)

• USBS = 0 (1 stop bit)

(41)

AVR Serial Port Programming

Contoh:

• Tulislah fungsi dlm bhs C utk menginisialisasi USART agar memiliki etentuan berikut:

• 9600 baud • 8-bit data • 1 stop bit

• Asumsi XTAL = 8 MHz

(42)

AVR Serial Port Programming

Jawab:

Kusuma Wardana - Interfacing 2013 42

void inisialisasi_usart (void) {

UCSRB = (1 << TXEN);

UCSRC = (1 << UCSZ1)|(1 << UCSZ0)|(1 << URSEL);

UBRRL = 0x33; //9600

(43)

AVR Serial Port Programming

Contoh:

• Tulislah program utk mengirim huruf ‘G’ terus-menerus secara serial dgn ketentuan:

• 9600 baud • 8-bit data • 1 stop bit

• Asumsi XTAL = 8 MHz

(44)

AVR Serial Port Programming

Jawab (part 1):

Kusuma Wardana - Interfacing 2013 44

#include <mega16.h>

#include <stdio.h>

#include <delay.h>

void inisialisasi_usart (void) {

UCSRB = (1 << TXEN);

UCSRC = (1 << UCSZ1)|(1 << UCSZ0)|(1 << URSEL);

UBRRL = 0x33; //9600

(45)

AVR Serial Port Programming

Jawab (part2):

void kirim_usart (unsigned char ch) {

while(!(UCSRA & (1<<UDRE))); //tunggu sampai

UDR = ch; // UDR kosong

}

void main (void) { inisialisasi_usart(); while(1) { kirim_usart(‘G’); delay_ms(1000); } }

(46)

AVR Serial Port Programming

• Rangkai pd Proteus

(47)

AVR Serial Port Programming

(48)

AVR Serial Port Programming

Contoh:

• Tulislah program utk mengirim kalimat

Aku Pasti Bisa! ” terus-menerus secara serial

dgn ketentuan: • 9600 baud • 8-bit data • 1 stop bit

• Asumsi XTAL = 8 MHz

(49)

AVR Serial Port Programming

Jawab (part 1):

#include <mega16.h>

#include <stdio.h>

#include <delay.h>

void inisialisasi_usart (void) {

UCSRB = (1 << TXEN);

UCSRC = (1 << UCSZ1)|(1 << UCSZ0)|(1 << URSEL); UBRRL = 0x33; //9600

}

void kirim_usart (unsigned char ch) {

while(!(UCSRA & (1<<UDRE))); //tunggu sampai

UDR = ch; // UDR kosong

(50)

Jawab (part2):

Kusuma Wardana - Interfacing 2013 50

void main (void) {

unsigned char str[30] = "Aku Pasti Bisa!";

unsigned char strLength = 20; unsigned char i = 0; inisialisasi_usart(); while(1) { kirim_usart(str[i++]); if (i >= strLength) { i = 0; delay_ms(1000); } } }

(51)
(52)

Daftar Pustaka

• Daniel J.Pack and Steven F.Barrettt, 2008,

Atmel AVR Microcontroller Primer:

Programming and Interfacing, Morgan & Claypool Publisher

• Mazidi, Naimi and Naimi, 2011, The AVR

Microcontroller and Embedded System: Using

Assembly and C, Prentice Hall

• AVR ATmega16 Manual, Atmel Corporation

Gambar

Tabel Perhitungan Baud Rate (Fosc = 8MHZ, U2X=0)

Referensi

Dokumen terkait