ผลต่างระหว่างรุ่นของ "กลไกบูทโหลดเดอร์และการโปรแกรมไมโครคอนโทรลเลอร์ผ่าน UART"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
(หน้าที่ถูกสร้างด้วย 'ชิปไมโครคอนโทรลเลอร์ที่นำมาใช้นั้นต้องอาศัยกา...')
 
แถว 2: แถว 2:
  
 
=== บูทโหลดเดอร์สำหรับชิป AVR ===
 
=== บูทโหลดเดอร์สำหรับชิป AVR ===
 +
ศึกษาเอกสารเกี่ยวกับ Self-Programming บนชิป AVR และดาวน์โหลดโปรแกรมตัวอย่างจากลิ้งค์ต่อไปนี้
 
* [http://www.atmel.com/images/doc1644.pdf เอกสาร AVR109 Application Notes ของ Atmel]
 
* [http://www.atmel.com/images/doc1644.pdf เอกสาร AVR109 Application Notes ของ Atmel]
 
* [http://www.atmel.com/Images/AVR109.zip ซอร์สโค้ดตัวอย่างตามเอกสาร AVR109]
 
* [http://www.atmel.com/Images/AVR109.zip ซอร์สโค้ดตัวอย่างตามเอกสาร AVR109]
 +
 +
=== ปรับแก้ไขโปรแกรมตัวอย่าง ===
 +
โปรแกรมจาก Atmel ต้องถูกแก้ไขให้สอดรับกับวงจรที่ออกแบบขึ้น รวมถึงแก้ไขโค้ดบางอย่างที่ให้โปรแกรมคอมไพล์ได้อย่างถูกต้องสำหรับชิป ATMega168
 +
 +
ให้เปิดไฟล์ <tt>defines.h</tt> และแก้ไขบรรทัดที่นิยามมาโครเกี่ยวกับ UART ให้เป็นดังนี้
 +
 +
#define BAUD_RATE_LOW_REG UBRR0
 +
#define UART_CONTROL_REG UCSR0B
 +
#define ENABLE_TRANSMITTER_BIT TXEN0
 +
#define ENABLE_RECEIVER_BIT RXEN0
 +
#define UART_STATUS_REG UCSR0A
 +
#define TRANSMIT_COMPLETE_BIT TXC0
 +
#define RECEIVE_COMPLETE_BIT RXC0
 +
#define UART_DATA_REG UDR0
 +
 +
จากนั้นเพิ่มคำสั่งสองบรรทัดนี้เข้าไปที่ท้ายสุดของไฟล์ <tt>defines.h</tt> เนื่องจากชิป ATMega168 ใช้ชื่อบิตสำหรับควบคุมการเขียน EEPROM ที่แตกต่างไปจากชิปตระกูล AVR เบอร์อื่น ๆ
 +
 +
#define EEMWE EEMPE
 +
#define EEWE  EEPE

รุ่นแก้ไขเมื่อ 04:58, 20 กรกฎาคม 2559

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

บูทโหลดเดอร์สำหรับชิป AVR

ศึกษาเอกสารเกี่ยวกับ Self-Programming บนชิป AVR และดาวน์โหลดโปรแกรมตัวอย่างจากลิ้งค์ต่อไปนี้

ปรับแก้ไขโปรแกรมตัวอย่าง

โปรแกรมจาก Atmel ต้องถูกแก้ไขให้สอดรับกับวงจรที่ออกแบบขึ้น รวมถึงแก้ไขโค้ดบางอย่างที่ให้โปรแกรมคอมไพล์ได้อย่างถูกต้องสำหรับชิป ATMega168

ให้เปิดไฟล์ defines.h และแก้ไขบรรทัดที่นิยามมาโครเกี่ยวกับ UART ให้เป็นดังนี้

#define	BAUD_RATE_LOW_REG	UBRR0
#define	UART_CONTROL_REG	UCSR0B
#define	ENABLE_TRANSMITTER_BIT	TXEN0
#define	ENABLE_RECEIVER_BIT	RXEN0
#define	UART_STATUS_REG	UCSR0A
#define	TRANSMIT_COMPLETE_BIT	TXC0
#define	RECEIVE_COMPLETE_BIT	RXC0
#define	UART_DATA_REG	UDR0

จากนั้นเพิ่มคำสั่งสองบรรทัดนี้เข้าไปที่ท้ายสุดของไฟล์ defines.h เนื่องจากชิป ATMega168 ใช้ชื่อบิตสำหรับควบคุมการเขียน EEPROM ที่แตกต่างไปจากชิปตระกูล AVR เบอร์อื่น ๆ

#define EEMWE EEMPE
#define EEWE  EEPE