ไมโครคอนโทรลเลอร์ AVR (Atmel 8) การสื่อสารแบบอนุกรมการกำหนดค่า USART

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ไมโครคอนโทรลเลอร์เป็นอุปกรณ์ควบคุมที่มีอุปกรณ์ต่อพ่วงต่างๆเช่น RAM, ROM TIMERS, การสื่อสารข้อมูลแบบอนุกรม ฯลฯ ซึ่งจำเป็นสำหรับการทำงานที่กำหนดไว้ล่วงหน้า ทุกวันนี้ ไมโครคอนโทรลเลอร์ประเภทขั้นสูง ถูกใช้ในแอพพลิเคชั่นที่หลากหลายตามความสามารถและความเป็นไปได้ในการทำงานที่ต้องการและตัวควบคุมเหล่านี้รวมถึง ไมโครคอนโทรลเลอร์ 8051, AVR และ PIC . ในบทความนี้เราจะเรียนรู้เกี่ยวกับไมโครคอนโทรลเลอร์ตระกูล AVR ขั้นสูงและการเขียนโปรแกรม .

ไมโครคอนโทรลเลอร์ AVR

AVR เป็นอุปกรณ์ควบคุมประเภทหนึ่งที่ผลิตโดย Atmel Corporation ในปี 1996 AVR ไม่ได้มีไว้เพื่ออะไรเลยมันเป็นเพียงแค่ชื่อเท่านั้น AVR ไมโครคอนโทรลเลอร์ประกอบด้วยสถาปัตยกรรมฮาร์วาร์ด ดังนั้นอุปกรณ์จึงทำงานเร็วมากโดยมีคำแนะนำระดับเครื่อง (RISC) ลดลง ไมโครคอนโทรลเลอร์ AVR ประกอบด้วยคุณสมบัติพิเศษเมื่อเทียบกับไมโครคอนโทรลเลอร์อื่น ๆ เช่นโหมด 6 โหมดสลีป ADC ในตัวออสซิลเลเตอร์ภายในและการสื่อสารข้อมูลแบบอนุกรมเป็นต้น ไมโครคอนโทรลเลอร์ AVR มีให้ใช้งานในการกำหนดค่าต่าง ๆ ของ 8 บิต 16 บิตและ 32 บิตเพื่อดำเนินการต่างๆ




ไมโครคอนโทรลเลอร์ AVR

ไมโครคอนโทรลเลอร์ AVR

USART Serial Data Communication ใน AVR Microcontroller

USART ย่อมาจากตัวรับและตัวส่งแบบซิงโครนัสและอะซิงโครนัสสากล เป็นการสื่อสารแบบอนุกรมของสองโปรโตคอล โปรโตคอลนี้ใช้สำหรับการส่งและรับข้อมูลทีละบิตเกี่ยวกับพัลส์นาฬิกาบนสายเส้นเดียว ไมโครคอนโทรลเลอร์ AVR มีสองพิน: TXD และ RXD ซึ่งใช้เป็นพิเศษสำหรับการส่งและรับข้อมูลแบบอนุกรม ไมโครคอนโทรลเลอร์ AVR ใด ๆ ประกอบด้วยโปรโตคอล USART พร้อมคุณสมบัติของตัวเอง



การสื่อสาร USART ในไมโครคอนโทรลเลอร์ AVR

การสื่อสาร USART ในไมโครคอนโทรลเลอร์ AVR

คุณสมบัติหลักของ AVR USART

  • โปรโตคอล USART รองรับโปรโตคอลฟูลดูเพล็กซ์
  • สร้างอัตราการรับส่งข้อมูลความละเอียดสูง
  • รองรับการส่งบิตข้อมูลอนุกรมตั้งแต่ 5 ถึง 9 และประกอบด้วยบิตหยุดสองตัว

การกำหนดค่าพิน USART

USART ของ AVR ประกอบด้วยสามพิน:


  • RXD: ขารับ USART (ATMega8 PIN 2 ATMega16 / 32 Pin 14)
  • TXD: ขาส่งสัญญาณ USART (ATMega8 PIN 3 ATMega16 / 32 Pin 15)
  • XCK: เข็มนาฬิกา USART (ATMega8 PIN 6 ATMega16 / 32 Pin 1)

โหมดการทำงาน

ไมโครคอนโทรลเลอร์ AVR ของโปรโตคอล USART ทำงานในสามโหมด ได้แก่ :

  • โหมดปกติแบบอะซิงโครนัส
  • โหมดความเร็วสองเท่าแบบอะซิงโครนัส
  • โหมดซิงโครนัส
โหมดการทำงาน

โหมดการทำงาน

โหมดปกติแบบอะซิงโครนัส

ในโหมดการสื่อสารนี้ข้อมูลจะถูกส่งและรับทีละบิตโดยไม่มีสัญญาณนาฬิกาโดยอัตรารับส่งข้อมูลที่กำหนดไว้ล่วงหน้าซึ่งกำหนดโดยทะเบียน UBBR

โหมดความเร็วสองเท่าแบบอะซิงโครนัส

ในโหมดการสื่อสารนี้ข้อมูลที่ถ่ายโอนด้วยอัตราบอดสองเท่าถูกกำหนดโดยทะเบียน UBBR และตั้งค่าบิต U2X ในทะเบียน UCSRA นี่คือโหมดความเร็วสูงสำหรับการสื่อสารแบบซิงโครนัสสำหรับการส่งและรับข้อมูลอย่างรวดเร็ว ระบบนี้ใช้ในกรณีที่ต้องการการตั้งค่าอัตราบอดและนาฬิการะบบที่แม่นยำ

โหมดซิงโครนัส

ในระบบนี้การส่งและรับข้อมูลเกี่ยวกับพัลส์นาฬิกาถูกตั้งค่า UMSEL = 1 ในทะเบียน UCSRC

การกำหนดค่า USART ในไมโครคอนโทรลเลอร์ AVR

USART สามารถกำหนดค่าได้โดยใช้การลงทะเบียนห้ารายการเช่น การลงทะเบียนควบคุมสามรายการ การลงทะเบียนข้อมูลหนึ่งรายการและการลงทะเบียนการเลือกอัตราการส่งข้อมูลเช่น UDR, UCSRA, UCSRB, UCSRC และ UBRR

7 ขั้นตอนในการเขียนโปรแกรม

ขั้นตอนที่ 1: คำนวณและกำหนดอัตรารับส่งข้อมูล

อัตรารับส่งข้อมูลของ USART / UART ถูกกำหนดโดยผู้รับจดทะเบียน UBRR รีจิสเตอร์นี้ใช้เพื่อสร้างการส่งข้อมูลด้วยความเร็วที่กำหนด UBRR เป็นรีจิสเตอร์ 16 บิต เนื่องจาก AVR เป็นไมโครคอนโทรลเลอร์ 8 บิตและขนาดรีจิสเตอร์ใด ๆ ก็คือ 8 บิต ดังนั้นในที่นี้การลงทะเบียน UBRR 16 บิตจึงประกอบด้วยการลงทะเบียน 8 บิตสองตัวเช่น UBRR (H), UBRR (L)

สูตรของอัตราการส่งข้อมูลคือ

BAUD = มืด / (16 * (UBBR + 1))

สูตรของทะเบียน UBRR คือ

UBRR = มืด / (16 * (BAUD-1))

ความถี่ของไมโครคอนโทรลเลอร์ AVR คือ 16MHz = 16000000 ให้เราถือว่าอัตราการส่งข้อมูลเป็น 19200Bps จากนั้น

UBRR = 16000000 / (16 * (19200-1))

UBRR = 16000000 / (16 * (19200-1))

UBRR = 51.099

ในที่สุดหาอัตราการส่งข้อมูล

บาท = 16000000 / (16 * (51 + 1))
UBRR = 19230bps

ขั้นตอนที่ 2: การเลือกโหมดข้อมูล

โหมดการส่งข้อมูลบิตเริ่มต้นและบิตหยุดและขนาดอักขระถูกกำหนดโดย UCSRC การควบคุมและการลงทะเบียนสถานะ

การเลือกโหมดข้อมูล

การเลือกโหมดข้อมูล

ขั้นที่ 3: การเลือกโหมดการส่งข้อมูล

โหมดซิงโครนัสและอะซิงโครนัสถูกเลือกโดยบิต UMSEL ของการลงทะเบียนสถานะการควบคุม ถ้าเราให้ UMSEL = 0 แล้ว USART จะทำงานในโหมดอะซิงโครนัสมิฉะนั้นจะทำงานในโหมดซิงโครนัส

การเลือกโหมดการส่งข้อมูล

การเลือกโหมดการส่งข้อมูล

ขั้นตอนที่ 4: เริ่มบิตและหยุดบิต

บิตเริ่มต้นและบิตหยุดเป็นวิธีการส่งและรับข้อมูลแบบอนุกรม โดยทั่วไปชื่อเสียงข้อมูลใด ๆ ประกอบด้วยบิตสถิติหนึ่งบิตและบิตหยุดหนึ่งครั้ง แต่ไมโครคอนโทรลเลอร์ AVR มีบิตเริ่มต้นหนึ่งบิตและบิตหยุดสองบิตสำหรับประมวลผลข้อมูล บิตหยุดพิเศษมีประโยชน์ในการเพิ่มเวลาประมวลผลการรับพิเศษเล็กน้อย มีประโยชน์อย่างยิ่งสำหรับอัตราการถ่ายโอนข้อมูลที่สูงในขณะที่ความเร็วในการถ่ายโอนข้อมูลสูงมากเราจึงไม่ได้รับข้อมูลที่เหมาะสม ดังนั้นเราสามารถเพิ่มเวลาในการประมวลผลโดยใช้บิตหยุดสองตัวเพื่อให้ได้ข้อมูลที่เหมาะสม

เริ่มบิตและหยุดบิต

เริ่มบิตและหยุดบิต

จำนวนบิตหยุดถูกเลือกโดยบิต USBS ของ UCSRC - การลงทะเบียนสถานะการควบคุม USBS = 0 สำหรับบิตหยุดเดียวและ USBS = 1 สำหรับบิตหยุดสองตัว

ขั้นที่ 5: กำหนดขนาดตัวอักษร

เช่นเดียวกับ ไมโครคอนโทรลเลอร์พื้นฐาน การส่งและรับข้อมูลทีละไบต์ (8 บิต) ไม่ว่าจะเป็นไมโครคอนโทรลเลอร์ AVR เราสามารถเลือกรูปแบบเฟรมข้อมูลในแต่ละเฟรมได้โดยใช้บิต UCSZ ของทะเบียน UCSRC

รูปแบบกรอบข้อมูล

รูปแบบกรอบข้อมูล

ขั้นที่ 6: จัดเก็บข้อมูลที่ได้รับ

ไมโครคอนโทรลเลอร์ AVR ประกอบด้วย UDR บัฟเฟอร์รีจิสเตอร์สำหรับส่งและรับข้อมูล UDR เป็นบัฟเฟอร์รีจิสเตอร์ 16 บิตโดย 8 บิตใช้สำหรับรับ (RXB) ข้อมูลและบิตอื่น ๆ ใช้สำหรับการส่งข้อมูล (TXB) การส่งการลงทะเบียนบัฟเฟอร์ข้อมูลจะเป็นปลายทางในการลงทะเบียน UDR สำหรับข้อมูลที่เป็นลายลักษณ์อักษรบนตำแหน่งของมัน การรับการลงทะเบียนบัฟเฟอร์ข้อมูลจะส่งคืนเนื้อหาของทะเบียน UDR

ขั้นที่ 7: การเปิดใช้งานเครื่องส่งและตัวรับ

ข้อมูลที่ส่งและรับจะได้รับอนุญาตโดยพิน RXC และ TXC ของไมโครคอนโทรลเลอร์ซึ่งกำหนดโดยทะเบียน UCSRA ของไมโครคอนโทรลเลอร์ แฟล็กบิตนี้กำหนดโดยไมโครคอนโทรลเลอร์สำหรับข้อมูลจะเสร็จสมบูรณ์โดยการรับและส่ง (TXC = RXC = 1)

เพิ่มอัตรารับส่งข้อมูลเป็นสองเท่า

เราสามารถเพิ่มอัตราการถ่ายโอนการสื่อสาร USART ของ AVR ได้เป็นสองเท่า ไมโครคอนโทรลเลอร์ตั้งแต่ 16 บิตถึง 8 บิต อย่างมีประสิทธิภาพโดย U2X –bit ในทะเบียน UCSRA บิตนี้มีผลเฉพาะกับการทำงานแบบอะซิงโครนัส หากเราสามารถตั้งค่าบิตนี้ได้ (U2X = 1) มันจะลดอัตราการส่งข้อมูลจาก 16 บิตเป็น 8 บิตได้อย่างมีประสิทธิภาพโดยเพิ่มอัตราการถ่ายโอนข้อมูลเป็นสองเท่าสำหรับการสื่อสารแบบซิงโครนัส

นี่เป็นคุณสมบัติขั้นสูงของไมโครคอนโทรลเลอร์ AVR สำหรับการประมวลผลข้อมูลที่รวดเร็ว

โปรแกรม USART

ไมโครคอนโทรลเลอร์ทุกตัวถูกกำหนดไว้ล่วงหน้าด้วย IDE เฉพาะและอิงตาม IDE นี้ ไมโครคอนโทรลเลอร์ถูกตั้งโปรแกรมด้วย C ในตัว หรือภาษาแอสเซมบลี การเขียนโปรแกรมไมโครคอนโทรลเลอร์ AVR ได้รับการพัฒนาโดยสตูดิโอ AVR นอกจากนี้หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ ขั้นตอนในการสร้างโครงการที่ใช้ไมโครคอนโทรลเลอร์ หรือข้อมูลโดยละเอียดเกี่ยวกับหัวข้อนี้คุณสามารถติดต่อเราได้โดยการแสดงความคิดเห็นด้านล่าง