Interfacing
Materi 4: Serial Communications
Disusun Oleh:
Outline
• Serial Communication Overview • Asynchronous vs Synchronous • RS232
• AVR Serial Port Programming • Workshop
Serial Communications
• Mikrokontroler sering melakukan pertukaran data dgn periperal
• Data dpt dikirim dgn cara:
1. Paralel 2. Serial
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
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
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
Serial Communications
• AVR (misal ATmega16) dilengkapi dgn bbrp tipe komunikasi serial, yaitu sbb:
1. USART 2. SPI
3. TWI
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
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
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
Baud Rate
• Baud rate kecepatan transmisi data • Baud = bits per second rate
• Nilai komunikasi yg umum: 9600 baud data
ditransfer sebanyak 9600 bit/detik
Simplex, Half & Full Duplex
Transmitter Receiver Transmitter Receiver Transmitter Receiver Receiver Transmitter Simplex Half Duplex Full Duplex Receiver TransmitterAsynchronous 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
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.
Asynchronous Serial Comm.
• Karakter A (0100 0001)
• Jika tidak ada transfer sinyal 1 (high): mark
• Sinyal rendah space (start bit)
• Urutan transmisi: markMSB(data)LSBspace
16 0 1 0 0 0 0 0 1 start bit stop bit space mark D0 D7
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)
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
RS232 Standards
• RS232 pins, diperlihatkan pd gambar berikut:
• Original RS232: DB25 (skrg tdk dgunakan lagi) • Selanjutnya, IBM menciptakan DB9
RS232 Standards
• Konfigurasi DB9:
ATmega16 Connection to RS232
• RS232 standar tidakkompatibel 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
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
ATmega16 Connection to RS232
• Koneksi MAX232 dan ATmega16
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)
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
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
AVR Serial Port Programming
• Jika: Fosc (frequency of oscillator) diketahui, maka:
Baud Rate yg diinginkan = 𝐹𝑜𝑠𝑐
16 𝑈𝐵𝑅𝑅 + 1
𝑈𝐵𝐵𝑅 = 𝐹𝑜𝑠𝑐
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
• 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
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
AVR Serial Port Programming
AVR Serial Port Programming
UDR Registers and USART data I/O
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)
AVR Serial Port Programming
• Menulis data ke UDR TXB
• Membaca data dr UDR RXB
AVR Serial Port Programming
UCSR Registers and USART Configurations
• Ada 3 UCSR: UCSRA, UCSRB, UCSRC
Workshop
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
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)
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
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
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
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
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); } }
AVR Serial Port Programming
• Rangkai pd Proteus
AVR Serial Port Programming
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
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
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); } } }
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