งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

ADC & UART. Analog & Digital Signal Digital SignalAnalog SignalDigital Signal.

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "ADC & UART. Analog & Digital Signal Digital SignalAnalog SignalDigital Signal."— ใบสำเนางานนำเสนอ:

1 ADC & UART

2 Analog & Digital Signal Digital SignalAnalog SignalDigital Signal

3 Analog to Digital Converter QuantizeSampling and Hold

4 Sampling Rate Selection Sampling Rate fs >= 2 Bandwidth

5 Sampling Rate Selection Resolution LSB = (Vref+- Vref-)/2 k

6 ADC ชนิด Successive Approximation

7 ADC ของ PIC18F8722 PIC18F8722 มีวงจร Analog to Digital Converter ขนาด 10 bit ทั้งหมด 16 วงจร (AN0-AN15)

8 ADC ของ PIC18F8722

9

10

11 Register ของ ADC PIC มี Register ที่เกี่ยวกับ ADC ทั้งหมด 5 ตัวคือ 1.A/D Result High Register (ADRESH) 2.A/D Result Low Register (ADRESL) 3.A/D Control Register 0 (ADCON0) 4.A/D Control Register 1 (ADCON1) 5.A/D Control Register 2 (ADCON2)

12 ADRESH และ ADRESL ADRESH และ ADRESL เป็น Register ที่ใช้เก็บ ผลลัพธ์ของการแปลง ADC

13 ADCON0 ADCON0 เป็น Register ที่ใช้กำหนด ว่าจะให้วงจร V Ain ของวงจร ADC ต่อ กับ AN ตัวที่เท่าใด (CHS3:0) สั่งให้ ADC เริ่มทำงาน Go/DONE และตรวจสอบว่า ADC ทำงานเสร็จ หรือยัง ADON

14 ADCON0

15 ADCON1 ADCON1 เป็น Register ที่ใช้กำหนดให้ AN ตัว ใดทำงานเป็น Analog Input Port หรือทำงาน เป็น Digital I/O Port (PCFG3:0) และกำหนดให้ RA3/AN3 เป็น V Ref+ และ RA2/AN2 เป็น V Ref- (VCFG1:0)

16 ADCON1

17 ADCON2 ADCON2 เป็น Register ที่ใช้ กำหนด Acquisitio n Time ของวงจร ADC

18 Acquisition Time สัญญาณ Analog จะถูกป้อนผ่านสวิทซ์ไปเข้า ที่ขา V Ain ของวงจร ADC จากนั้น C HOLD จะถูกชาร์จประจุให้มีแรงดัน เท่ากับขา V Ain

19 Acquisition Time เพื่อให้การแปลง ADC มีความถูกต้อง จะต้อง ให้แรงดันของ C HOLD เท่ากับ V Ain เนื่องจาก V Ain ชาร์จประจุ C HOLD ผ่าน R S, R SS ดังนั้นจึงต้องใช้เวลาในการชาร์จประจุ เรา เรียกเวลาดังกล่าวว่า Acquisition Time (T ACQ )

20 Acquisition Time

21 เราสามารถตั้งค่า Acquisition Time ได้จาก ACQT เมื่อเซ็ทให้ GO/DONE = 1 PIC จะรอ เป็นเท่ากับ Acquisition Time จากนั้น จึงเริ่มแปลง ADC และเมื่อแปลง ADC เสร็จแล้ว GO/DONE จะเท่ากับ 0

22 ขั้นตอนการแปลง ADC

23 #include #define NUMBER_OF_LEDS 8 #pragma code int result; int shift; void main(void) { TRISAbits.TRISA0=1; TRISD = 0; PORTD = 0; ADCON1 = 0b00001110; ADCON2 = 0b10001010; ADCON0bits.ADON = 1; while(1) { ADCON0bits.GO=1; while(ADCON0bits.GO); result = ADRES; result >>=2; if(result==0) result = 1; //PORTD = result; PORTD=1< { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/36/10621503/slides/slide_23.jpg", "name": "#include #define NUMBER_OF_LEDS 8 #pragma code int result; int shift; void main(void) { TRISAbits.TRISA0=1; TRISD = 0; PORTD = 0; ADCON1 = 0b00001110; ADCON2 = 0b10001010; ADCON0bits.ADON = 1; while(1) { ADCON0bits.GO=1; while(ADCON0bits.GO); result = ADRES; result >>=2; if(result==0) result = 1; //PORTD = result; PORTD=1<>=2; if(result==0) result = 1; //PORTD = result; PORTD=1<

24 การสื่อสารแบบดิจิตอล การสื่อสารแบบดิจิตอลสามารถแบ่งออกเป็น 2 กลุ่มคือ 1. การสื่อสารแบบขนาน (Parallel Communication)  IEEE 488 หรือ General Purpose Interface Bus (GPIB)  IEEE 1248 หรือ Centronics Parallel Protocol  SCSI (Small Computer System Interface)  IDE (Integrated Drive Electronics)  ISA (Industrial Standard Architecture)  PCI (Peripheral Component Interconnect)  AGP (Accelerated Graphics Port)

25 การสื่อสารแบบดิจิตอล 2. การสื่อสารแบบอนุกรม (Serial Communication)  RS 232  RS 422  RS 485  UART (Universal Asynchronous receiver-transmitter)  USART (Universal Synchronous- Asynchronous receiver-transmitter)  MIDI IEEE1394 หรือ FireWire  CAN (Controller Area Network)  USB (Universal Serial Bus)  I 2 C (Inter Integrated Circuit)  SPI (Serial Peripheral Interface bus)  Micro-wire  Ethernet  Fiber optics  Bluetooth  WiFi

26 เปรียบเทียบการสื่อสารแบบขนานและ อนุกรม การสื่อสารแบบขนานสามารถรับส่งข้อมูลได้ เร็วกว่าการสื่อสารแบบอนุกรมเนื่องจาก สามารถรับส่งข้อมูลได้หลายบิทพร้อมกัน การสื่อสารแบบขนานใช้จำนวน Port มากกว่า การสื่อสารแบบอนุกรม การสื่อสารแบบขนานสามารถรับส่งข้อมูลได้ สั้นกว่าแบบอนุกรมเนื่องจากเกิดสัญญาณ Crosstalk ขึ้นระหว่างสายสัญญาณแต่ละเส้น

27 Universal Asynchronous Receiver and Transmitter (UART) การรับส่งข้อมูลแบบ UART ประกอบด้วยสายสัญญาณ 3 เส้นคือ  Transmit (TX) ใช้ในการส่ง ข้อมูล  Receiver (RX) ใช้ในการรับ ข้อมูล สามารถรับส่งข้อมูลได้ 2 โหมดคือ  8 bit-Transmission ประกอบด้วย 1 start bit, 8-bit data, 1 stop

28 Universal Asynchronous Receiver and Transmitter (UART)  9 bit-Transmission ประกอบด้วย 1 start, 9-bit Data ( บิทที่ 8 มักใช้เป็น parity bit), 1 stop Bit  parity Bit ใช้ในการ ตรวจสอบความถูกต้องของ ข้อมูล มีอยู่ 2 แบบคือ  even parity, parity bit = 1 ถ้า จำนวนบิทข้อมูลที่เป็น 1 เป็น เลขคี่  odd parity, parity bit = 1 ถ้า จำนวนบิทข้อมูลที่เป็น 1 เป็น เลขคู่

29 Universal Asynchronous Receiver and Transmitter (UART) BAUD Rate หมายถึงจำนวนบิททั้งหมด (start + stop + data + parity) ที่สามารถรับส่งได้ใน 1 วินาที BAUD Rate มาตรฐานมีดังนี้ 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000 และ 256000

30 Register ที่เกี่ยวข้อง

31

32

33 ตารางการเซ็ท Configuration Bit สำหรับ คำนวณ BAUD Rate Configuration Bits BRG/EUSART ModeBAUD Rate Formula SYNCBRG16BRGH 0008-bit/Asynchronous Fosc/[64(n+1)] 0018-bit/Asynchronous Fosc/[16(n+1)] 01016-bit/Asynchronous 011 Fosc/[4(n+1)] 10x8-bit/Synchronous 11x16-bit/Synchronous n = SPBRGx (8-bit Asynchronous) หรือ n = SPBRGHx:SPBRGx (16-bit Asynchronous

34 วิธีการคำนวณ BAUD Rate

35 ตัวอย่างการคำนวณ BAUD Rate

36 void UART_Init(void) { BRGH = 1; BRG16 = 0; SPBRG = 25; SYNC = 0; //Setting Asynchronous Mode, ie UART SPEN = 1; //Enables Serial Port TRISC7 = 1; //As Prescribed in Datasheet TRISC6 = 0; //As Prescribed in Datasheet CREN = 1; //Enables Continuous Reception TXEN = 1; //Enables Transmission } void UART_Write(char data) { while(!TRMT); TXREG = data; } char UART_TX_Empty() { return TRMT; } void UART_Write_Text(char *text) { int i; for(i=0;text[i]!='\0';i++) UART_Write(text[i]); }

37 char UART_Data_Ready() { return RCIF; } char UART_Read() { while(!RCIF); return RCREG; } void UART_Read_Text(char *Output, unsigned int length) { unsigned int i; for(int i=0;i { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.in.th/36/10621503/slides/slide_37.jpg", "name": "char UART_Data_Ready() { return RCIF; } char UART_Read() { while(!RCIF); return RCREG; } void UART_Read_Text(char *Output, unsigned int length) { unsigned int i; for(int i=0;i

38 #define _XTAL_FREQ 8000000 #include #include "uart.h" // BEGIN CONFIG #pragma config FOSC = HS #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config BOREN = ON #pragma config LVP = OFF #pragma config CPD = OFF #pragma config WRT = OFF #pragma config CP = OFF //END CONFIG void main() { TRISB = 0xFF; //PORTB as Input nRBPU = 0; //Enables PORTB Internal Pull Up Resistors UART_Init(); do { UART_Write(PORTB); __delay_ms(100); } while(1); } #define _XTAL_FREQ 4000000 #include #include "uart.h" // BEGIN CONFIG #pragma config FOSC = HS #pragma config WDTE = OFF #pragma config PWRTE = OFF #pragma config BOREN = ON #pragma config LVP = OFF #pragma config CPD = OFF #pragma config WRT = OFF #pragma config CP = OFF //END CONFIG void main() { TRISB = 0x00; //PORTB as Output UART_Init(); do { if(UART_Data_Ready()) PORTB = UART_Read(); __delay_ms(100); }while(1); }


ดาวน์โหลด ppt ADC & UART. Analog & Digital Signal Digital SignalAnalog SignalDigital Signal.

งานนำเสนอที่คล้ายกัน


Ads by Google