หวขอ บทน ำ รปแบบของกำรสอสำร รปแบบกำรสอสำรแบบอนกรม
การสอสารขอมลแบบซงโครนส (Synchronous) การสอสารขอมลแบบอะซงโครนส (Asynchronous) การสอสารแบบขอมลแบบไอโซโครนส (Isochronous Transmission)
การสอสารขอมลแบบอนกรมของไมโครคอนโทรลเลอร AVR
บลอกไดอะแกรมอยางงายๆของพอรทอนกรม ATMega168 - USART รจสเตอรทเกยวของกบการท างานในโหมด USARTRelated Registers
ตวอยางโปรแกรม Serial Output โดยใช AVR Studio Arduino : Serial มาตราฐาน RS-232
2กำรสอสำรแบบอนกรม
3กำรสอสำรแบบอนกรม
บทน า
การสอสารขอมลแบบอนกรม เปนการรบสงขอมลทละบตแทนทจะท าการรบสงขอมลพรอมกนทกบตในเวลาเดยวกน ขอดของการสอสารแบบนคอ ใชจ านวนสายในการสอสารนอย สามารถรบสงไดในระยะ ทางทไกล ๆแตกมขอเสยในดานเวลา เพราะตองใชเวลาในการสอสารมาก เมอเทยบกบการสอสารแบบขนาน อกทงโอกาสเกดการผดพลาดของขอมลกสงกวาแบบขนาน
4กำรสอสำรแบบอนกรม
รปแบบของการสอสาร
รปแบบของการสอสาร แบงได 3 แบบ คอ1. แบบซมเพลกซ (Simplex) เปนการสอสารทาง
เดยว2. แบบฮาลฟดเพลกซ(Half-duplex) เปนการสอสารไดทงสองทาง แตจะตองผลดกนรบ-สง
3. แบบฟลดเพลกซ(Full-duplex ) เปนการสอสารไดทงสองทางและท าไดในเวลาเดยวกน
5กำรสอสำรแบบอนกรม
รปแบบการสอสารขอมลแบบอนกรม
การตดตอแบบอนกรมเมอแบงตามลกษณะของการสงขอมลแบงได 2 แบบ คอ1. การสอสารแบบซงโครนส (Synchronous) 2. การสอสารแบบอะซงโครนส(Asynchronous)3. การสงขอมลแบบไอโซโครนส (Isochronous
Transmission)
6กำรสอสำรแบบอนกรม
การสอสารขอมลแบบซงโครนส (Synchronous)
เปนการสงขอมลเปนบลอก ครงละหลายๆไบต สญญาณนาฬกาทชวยใหการท างานของตวสงและตวรบสอดคลองกนอาจจะถกเขารหสอยในชดของขอมลนนหรอแยกอสระออกเปนสายตางหากกได ตวอยางการรบสงขอมลแบบนไดแกโปรโตคอล High-Level Data Link Control
7กำรสอสำรแบบอนกรม
ชอฟลด ขนาดFlag Field( F ) 8 บตAddress Field( A ) 8 บตControl Field( C ) 8 or 16 บตInformation Field( I ) เปลยนแปลงได บางแฟลมกไมไดใชFrame Check Sequence( FCS ) 16 or 32 บตClosing Flag Field( F ) 8 บต
โปรโตคอล High-Level Data Link Control (HDLC) ทใชกบโมเดมแวน (WAN) ซงมลกษณะแฟรม (Fram) ดงน
โปรโตคอล High-Level Data Link Control (HDLC)
8กำรสอสำรแบบอนกรม
การสอสารแบบนใชมากในเครองไมโครคอมพวเตอรพซรปแบบการสอสารจะเปนการรบและสงขอมลครงละ 1 ไบต
การสอสารขอมลแบบอะซงโครนส (Asynchronous)
9กำรสอสำรแบบอนกรม
ตวอยางโปรโตคอลอะซงโครนส Serial Commincation - Example Protocols Morse code
RS-232 - Recommended Standard 232 RS422, RS-423, RS-485 I2C - Inter-Integrated Circuit
SPI - Serial Peripheral Interface
USB - Universal Serial Bus
Firewire
Ethernet
Serial ATA - Serial Advanced TEchnology Attachment
Serial Attach SCSI - Serial Attached Small Computer System
Interface
SONET - Synchronous Optical Network
PCI Express - Peripheral Component Interconnect Express
10กำรสอสำรแบบอนกรม
การสอสารแบบนใชมากในเครองไมโครคอมพวเตอรพซ รปแบบการสงขอมลจะเปนการสงครงละ 1 ไบต โดยมรปแบบดงน
การสอสารแบบอะซงโครนส (Asynchronous)
11กำรสอสำรแบบอนกรม
ความหมายของบต
Start Bit บอกจดเรมตนขอมล มขนาด 1 บตData Bit คาขอมลมได 5 ถง 8 บตParity Bit บตส าหรบใชตรวจสอบความผดพลาดของขอมล มได 0 ถง 1 บตStop Bit บตใชบอกจดสนสดขอมล มได 1 1.5 และ 2 บต
การสอสารแบบอะซงโครนส (Asynchronous) (ตอ)
12กำรสอสำรแบบอนกรม
ความเรวในการสอสารความเรวในการสอสาร หมายถงจ านวนบตทใชรบสงขอมลตอวนาท โดยปกตจะมคาเทากบ 110 150 300 1200 2400 4800 9600 และ 19200 บตตอวนาทอตราความเรวนบางครงกเรยกวาอตราบอด (Baud rate) ทงตวสงและตวรบตองก าหนดใหมความเรวในการสอสารเทากนตวอยางขอมลสงดวยความเรว 2400 บตตอวนาท ดงนนแตละบตใชเวลาสงเทากบ 1/2400 = 416.67 ไมโครวนาท
การสอสารแบบขอมลแบบไอโซโครนส (Isochronous Transmission)
กำรสอสำรแบบอนกรม 17
มาจากรากศพทในภาษากรก 2 ค า คอค าวา iso หมายถง เทากน และค าวา chronous ทหมาย ถง เวลา เมอน ามารวมกนจงหมายความวา เวลาทเทากน ส าหรบคณสมบตทส าคญของการสงขอมลแบบไอโซโครนส คอ การสงผานขอมลดวยความเรวสงใน อตราคงท และรบประกนเวลาในการสง
เนองจากการสงขอมลแบบเรยลไทม เชน ระบบออดโอและวดโอ จ าเปนตองสงขอมล ดวยความเรวสง ซงการสงขอมลแบบอะซงโครนส (มการหนวงเวลาเกดขนจากชองวางระหวาง เฟรม) และซงโครนสกยงไมสามารถรองรบได จงเกดการสงขอมลแบบไอโซโครนสขนมา เพอใชงานเรยลไทม ทรบประกนขอมลทจะสงมาถงดวยอตราเรวคงท
โดยจะน าการสงขอมลแบบไอโซโครนสมาใชเพอสงผานขอมลบนบส 1394 หรอ เรยกวา ไฟรไวร (FireWire) การสงผานขอมลของไอโซโครนสจะตงอยบนพนฐานของแพกเกต โดยขนาดของแพกเกตจะสงผานอยบนแชนเนลทใหไว และสามารถแปรผนจากเฟรมไปยงเฟรมได สวนขนาดของแพกเกตจะถกจ ากดโดยแบนดวดธเทาทมอยจาก http://teacher.aru.ac.th/sawita/images/stories/file/PDF_Presentation/3503103_Networking/02092010_Network_Chapter5.pdf
การสอสารขอมลแบบอนกรมของไมโครคอนโทรลเลอร AVR
กำรสอสำรแบบอนกรม18
ไมโครคอนโทรลเลอร AVR สามารถสอสารขอมลแบบอนกรมไดโดยใชโมดล USART ((Universal Synchronous and Asynchronous serial Receiver and Transmitter) ส าหรบ ATMega 16 ขาพอรทอนกรมก าหนดใวท PD0 Serial input RxD
PD1 Serial output TxD
19กำรสอสำรแบบอนกรม
คณลกษณะของ ATMega168-USARTUSART - Universal Synchronous Asynchronous Receiver Transmitter. ท างานแบบ Full Duplex (การรบและสงเปนอสระซงกนและกน) ท างานไดทงแบบ Asynchronous และ Synchronous Master or Slave Clocked Synchronous Operation High Resolution Baud Rate Generator รองรบการรบสงขอมลแบบ 5, 6, 7, 8, or 9 Data Bits และ 1 หรอ 2 Stop Bits Odd or Even Parity Generation and Parity Check Supported by Hardware Data OverRun Detection Framing Error Detection Three Separate Interrupts on TX Complete, TX Data Register Empty and RX Complete
20กำรสอสำรแบบอนกรม
Clock Generator
Transmitter
Receiver
บลอกไดอะแกรมอยางงายๆของพอรทอนกรม ATMega168 - USART
21กำรสอสำรแบบอนกรม
Clock Generation Logic, Block Diagram
Signal description:•txclk Transmitter clock (internal signal).•rxclk Receiver base clock (internal signal).•xcki Input from XCK pin (internal signal). Used for synchronous slave operation.•xcko Clock output to XCK pin (internal signal). Used for synchronous master operation.•fosc System clock frequency.
22กำรสอสำรแบบอนกรม
การค านวณหาอตราบอต (Baud rate)
โหมดการท างาน อตราบอต คารจสเตอร UBRRอะซงโครนสปกต (U2X = 0) Baud = fosc/(16*(UBRR+1)) UBRR = (fosc/16*Baud)-1อะซงโครนสทวคณ (U2X = 1) Baud = fosc/(8*(UBRR+1)) UBRR = (fosc/8*Baud)-1มาสเตอรซงโครนส Baud = fosc/(2*(UBRR+1)) UBRR = (fosc/2*Baud)-1
23กำรสอสำรแบบอนกรม
UBRRnL and UBRRnH – USART baud rate registers
Bit 15:12 – บตส ารองเพอการใชงาน บตเหลานตองใหเปน 0Bit 11:0 – UBRR11:0: USART บตก าหนดอตราบอด (baud rate) มคาไดตงแต 0 - 4095
25กำรสอสำรแบบอนกรม
รจสเตอรทเกยวของกบการท างานในโหมด USART1. รจสเตอร UDR (USART I/O 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. รจสเตอร UBRRL และ UBRRH (USART Baud Rate Register)
26กำรสอสำรแบบอนกรม
รจสเตอร UDR (USART I/O Data Register) รจสเตอรส าหรบอาน/เขยนขอมลขนาด 8 บต โดยแบงเปน RXB ใชรบขอมลจาก
ภายนอกและ TXB ใชสงขอมลใหภายนอก
27กำรสอสำรแบบอนกรม
รจสเตอร UCSRA (USART Control and Status Register A) รจสเตอรควบคมการท างานและแสดงสถานการณท างานของโมดล
USART ชด A เกยวของกบสถานะของการสอสารขอมล
บตท 7 6 5 4 3 2 1 0
ชอบต RXC TXC UDRE FE DOR PE U2X MPCM
Read/Write R R/W R R R R R/W R/W
คาเรมตน 0 0 1 0 0 0 0 0
บตท 7 - RXC: USART รบสมบรณ (USART Receive Complete)บตนจะเปน 1 เมอไดรบขอมลจากบฟเฟอรรบขอมล และจะเปน 0 เมอบฟเฟอรวาง และถาใชการอนเตอรรพท เมอบตนเปน 1 จะสงสญญาณไปอนเตอรรพทซพย
28กำรสอสำรแบบอนกรม
รจสเตอร UCSRA (USART Control and Status Register A)
บตท 6 - TXC: USART สงสมบรณ (USART Transmit Complete)บตนจะเปน 1 เมอขอมลในบฟเฟอรถกสงออกไปแลวและยงไมมขอมลใหมเขามา และจะเปน 0 เมอบฟเฟอรวาง และถาใชการอนเตอรรพท เมอบตนเปน 1 จะสงสญญาณไปอนเตอรรพทซพย
บตท 5 – UDRE (USART data register empty)บตนจะเปน 1 เมอ รจสเตอรขอมล UDR วาง พรอมจะรบขอมลตวใหม
บตท 4 – FE (Frame error) บตนจะเปน 1 เมอ เฟรมขอมลผดพลาด หรอบตหยดขอมลเปน 0
29กำรสอสำรแบบอนกรม
รจสเตอร UCSRA (USART Control and Status Register A)
บตท 3 – DOR (USART parity error)บตนจะเปน 1 เมอเกดขอผดพลาดแบบ OverRun คอมขอมลใหมเขามาในขณะทขอมลเดมยงไมถกอานออกไป
บตท 2 – PE (Parity Error)บตนจะเปน 1 เมอเกดขอผดพลาดแบบพารต
บตท 1 – U2X (Double the USART transmission speed)ใชก าหนดอตราทวคณของการสอสาร
บตท 0 – MPCM (Multi-processor communication mode)บตนเปน 1 เมอตองการใชการสอสารแบบมลตโปรเซสเซอร
30กำรสอสำรแบบอนกรม
รจสเตอร UCSRB (USART Control and Status Register B) รจสเตอรควบคมการท างานและแสดงสถานการณท างานของโมดล
USART ชด B เกยวของกบการอนเตอรรพทและขนาดของขอมลแบบ 9 บต
บตท 7 6 5 4 3 2 1 0
ชอบต RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
Read/Write R/W R/W R/W R/W R/W R/W R R/W
คำเรมตน 0 0 0 0 0 0 0 0
บตท 7 - RXCIE: (RX complete interrupt enable)ใหบตนเปน 1 เมอตองการใหเกดการอนเตอรรพท เมอรบขอมลเขามาบตท 6 - TXCIE: (TX complete interrupt enable)ใหบตนเปน 1 เมอตองการใหเกดการอนเตอรรพท เมอสงขอมลแลว
31กำรสอสำรแบบอนกรม
รจสเตอร UCSRB (USART Control and Status Register B)บตท 5 - UDRIE: USART data register empty interrupt enable ใหบตนเปน 1 เมอตองการใหเกดการอนเตอรรพท เมอรจสเตอร UDR วาง
บตท 4 – RXEN: Receiver enable ใหบตนเปน 1 เมอตองการใหเกดการอนเตอรรพท เมอเกดการรบขอมล
บตท 3 – TXEN: Transmitter enable ใหบตนเปน 1 เมอตองการใหเกดการอนเตอรรพท เมอเกดการสงขอมล
บตท 2 UCSZ2: Character size ใชก าหนดจ านวนบตขอมล ใชคกบ UCSZ1 และ UCSZ0 ใน UCSRC
บตท 1 RXB8: Receive data bit 8 บตท 8 ของการรบขอมล แบบ 9 บต
บตท 0 TXB8: Transmit data bit 8 บตท 8 ของการสงขอมล แบบ 9 บต
32กำรสอสำรแบบอนกรม
รจสเตอร UCSRC (USART Control and Status Register C) รจสเตอรควบคมการท างานและแสดงสถานการณท างานของโมดล
USART ชด A เกยวของกบอตราบอตในการรบสง
บตท 7 6 5 4 3 2 1 0
ชอบต UMSEL1 UMSEL0 UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
คาเรมตน 0 0 0 0 0 1 1 0
UMSEL1 UMSEL0 Mode
0 0 Asynchronous USART
0 1 Synchronous USART
1 0 (Reserved)
1 1 Master SPI (MSPIM)(1)
บตท 7:6 – UMSEL1:0 USART mode select
33กำรสอสำรแบบอนกรม
รจสเตอร UCSRC (USART Control and Status Register C)
บตท 5:4 – UPM1:0: Parity mode
บตท 3 – USBS: Stop bit selectUSBS Stop bit(s)
0 1-bit1 2-bit
บตท 2:1 – UCSZ1:0: Character sizeใชรวมกบกบ UCSZ2 ใน UCSRB
บตท 0 – UCPOL: Clock polarityในแบบอะซงโครนสใหบตนเปน 0 ถาใชในแบบ ซงโครนส เปนการก าหนดขอบสญญาณ XCX
UPM1 UPM0 Parity mode0 0 Disable0 1 Reserved1 0 Enable พำรตค
1 1 Enable พำรตค
UCSZ2 UCSZ1 UCSZ0 Character size
0 0 0 5 บต
0 0 1 6 บต
0 1 0 7 บต
0 1 1 8 บต
1 0 0 Reserved
1 0 1 Reserved
1 1 0 Reserved
1 1 1 9 บต
UCPOLTransmitted data changed
(output of TxDn pin)
Received data sampled
(input on RxDn pin)
0 Rising XCK edge Falling XCK edge
1 Falling XCK edge Rising XCK edge
34กำรสอสำรแบบอนกรม
ตวอยางโปรแกรม Serial Output โดยใช AVR Studio#include <avr/io.h>#include <util/delay.h>
void serial_init(unsigned int bittimer){
/* Set the baud rate */UBRR0H = (unsigned char) (bittimer >> 8);UBRR0L = (unsigned char) bittimer;/* set the framing to 8N1 */UCSR0C = (3 << UCSZ00);/* Engage! */UCSR0B = (1 << RXEN0) | (1 << TXEN0);return;
}
void serial_write(unsigned char c){
while ( !(UCSR0A & (1 << UDRE0)) );UDR0 = c;
}
35กำรสอสำรแบบอนกรม
ตวอยางโปรแกรม Serial Output โดยใช AVR Studio (ตอ)#define SPEED 9600int main (void){
char i = 0;char *str = "the quick brown fox jumps over the lazy dog. 1234567890\r\n";
/* let the preprocessor calculate this */serial_init( ( F_CPU / SPEED / 16 ) - 1);
while (1) {serial_write(str[i++]);if (str[i] == '\0') {
i = 0;_delay_ms(500);
}}return 0;
}
36กำรสอสำรแบบอนกรม
ตวอยางโปรแกรม Serial Input โดยใช AVR Studio#include <avr/io.h>#include <util/delay.h>
void serial_init(unsigned int bittimer){
/* Set the baud rate */UBRR0H = (unsigned char) (bittimer >> 8);UBRR0L = (unsigned char) bittimer;/* set the framing to 8N1 */UCSR0C = (3 << UCSZ00);/* Engage! */UCSR0B = (1 << RXEN0) | (1 << TXEN0);return;
}
unsigned char serial_read(void){
while( !(UCSR0A & (1 << RXC0)) );
return UDR0;}
37กำรสอสำรแบบอนกรม
ตวอยางโปรแกรม Serial Input โดยใช AVR Studio (ตอ)void serial_write(unsigned char c){
while ( !(UCSR0A & (1 << UDRE0)) );
UDR0 = c;}
#define SPEED 9600int main (void){
/* let the preprocessor calculate this */serial_init( ( F_CPU / SPEED / 16 ) - 1);
while (1) {/* read a character and echo back the next one */serial_write( serial_read() + 1);
}return 0;
}
38กำรสอสำรแบบอนกรม
Arduino : Serial if (Serial)
available()
begin()
end()
find()
findUntil()
flush()
parseFloat()
parseInt()
peek()
print()
println()
read()
readBytes()
readBytesUntil()
setTimeout()
write() begin()
อำงอง http://arduino.cc/en/Reference/Serial
ตวอยางการสงขอมล โดยใช Arduino
กำรสอสำรแบบอนกรม 39
int analogValue = 0; // variable to hold the analog value
void setup() {
Serial.begin(9600); // open the serial port at 9600 bps:
}
void loop() {
analogValue = analogRead(0); // read the analog input on pin 0:
// print it out in many formats:
Serial.println(analogValue); // print as an ASCII-encoded decimal
Serial.println(analogValue, DEC); // print as an ASCII-encoded decimal
Serial.println(analogValue, HEX); // print as an ASCII-encoded hexadecimal
Serial.println(analogValue, OCT); // print as an ASCII-encoded octal
Serial.println(analogValue, BIN); // print as an ASCII-encoded binary
// delay 10 milliseconds before the next reading:
delay(10);
}
42กำรสอสำรแบบอนกรม
DS275 Line-Powered RS-232 Transceiver Chip
RXOUT RS–232 Receiver Output VDRV Transmit driver +V
TXIN RS–232 Driver Input GND System Ground (0V)
TXOUT RS–232 Driver Output NC No Connection
RXIN RS–232 Receive Input VCC System Logic Supply (+5V)
43กำรสอสำรแบบอนกรม
RS-232 Specs
SPECIFICATIONS RS232
Mode of Operation SINGLE-ENDED
Total Number of Drivers and Receivers on One Line 1 DRIVER1 RECVR
Maximum Cable Length 50 FT.
Maximum Data Rate 20kb/s
Maximum Driver Output Voltage +/-25V
Driver Output Signal Level (Loaded Min.)Loaded +/-5V to +/-15V
Driver Output Signal Level (Unloaded Max) Unloaded +/-25V
Driver Load Impedance (Ohms) 3k to 7k
Max. Driver Current in High Z State (Power On) N/A
Max. Driver Current in High Z State (Power Off) +/-6mA @ +/-2v
Slew Rate (Max.) 30V/uS
Receiver Input Voltage Range +/-15V
Receiver Input Sensitivity +/-3V
44กำรสอสำรแบบอนกรม
RS-232 vs RS-423
SPECIFICATIONS RS232 RS423
Mode of Operation SINGLE-ENDED SINGLE-ENDED
Total Number of Drivers and Receivers on One Line 1 DRIVER 1 RECVR 1 DRIVER10 RECVR
Maximum Cable Length 50 FT. 4000 FT.
Maximum Data Rate 20kb/s 100kb/s
Maximum Driver Output Voltage +/-25V +/-6V
Driver Output Signal Level (Loaded Min.) Loaded +/-5V to +/-15V +/-3.6V
Driver Output Signal Level (Unloaded Max) Unloaded +/-25V +/-6V
Driver Load Impedance (Ohms) 3k to 7k >=450
Max. Driver Current in High Z State Power On N/A N/A
Max. Driver Current in High Z State Power Off +/-6mA @ +/-2v +/-100uA
Slew Rate (Max.) 30V/uS Adjustable
Receiver Input Voltage Range +/-15V +/-12V
Receiver Input Sensitivity +/-3V +/-200mV
45กำรสอสำรแบบอนกรม
RS232 Pin Assignments (DB9 PC signal set)
Pin 1 Received Line Signal Detector
(Data Carrier Detect) In
Pin 2 Received Data In
Pin 3 Transmit Data Out
Pin 4 Data Terminal Ready Out
Pin 5 Signal Ground
Pin 6 Data Set Ready In
Pin 7 Request To Send Out
Pin 8 Clear To Send In
Pin 9 Ring Indicator
46กำรสอสำรแบบอนกรม
RS232 Pin Assignments (DB25 PC signal set)
Pin 1 Protective Ground
Pin 2 Transmit Data
Pin 3 Received Data
Pin 4 Request To Send
Pin 5 Clear To Send
Pin 6 Data Set Ready
Pin 7 Signal Ground
Pin 8 Received Line Signal Detector
(Data Carrier Detect)
Pin 20 Data Terminal Ready
Pin 22 Ring Indicator
48กำรสอสำรแบบอนกรม
การตอสายแบบปอนกลบ
Handshake looping a PC serial connector RS232 DB9 PC Loopback test plug