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

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

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 = 0b ; ADCON2 = 0b ; ADCON0bits.ADON = 1; while(1) { ADCON0bits.GO=1; while(ADCON0bits.GO); result = ADRES; result >>=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, , และ

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)] 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

38 #define _XTAL_FREQ #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 #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