สารบัญ:
- ขั้นตอนที่ 1: ออกแบบแผนผังการเดินสาย
- ขั้นตอนที่ 2: ตัดวงจรบนกระดานออก
- ขั้นตอนที่ 3: ประสานส่วนประกอบและทดสอบ
- ขั้นตอนที่ 4: รหัสแอสเซมบลีและวิดีโอ
วีดีโอ: AVR Assembler บทช่วยสอน 8: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ยินดีต้อนรับสู่บทช่วยสอน 8!
ในบทช่วยสอนสั้น ๆ นี้ เราจะเปลี่ยนจากการแนะนำแง่มุมใหม่ๆ ของการเขียนโปรแกรมภาษาแอสเซมบลีเพื่อแสดงวิธีการย้ายส่วนประกอบการสร้างต้นแบบของเราไปยังแผงวงจร "แบบพิมพ์" ที่แยกจากกัน เหตุผลก็คือ ณ จุดนี้ เขียงหั่นขนมการสร้างต้นแบบหลักของเรากำลังอัดแน่นไปด้วยชิป สายไฟ ปุ่ม และไฟ LED จำนวนมากจนยากต่อการทดสอบสิ่งใหม่ๆ และเนื่องจากในที่สุดแล้ว เราก็ต้องย้ายส่วนประกอบไปยังบอร์ดของตัวเองอยู่ดี, เราอาจจะเริ่มต้นตอนนี้เช่นกัน พวกคุณหลายคนอาจเชี่ยวชาญในสิ่งที่เราจะกล่าวถึงในบทช่วยสอนนี้แล้ว ดังนั้นคุณจึงสามารถดูบทช่วยสอนนี้ว่าเป็นเพียงแค่การพักผ่อนจากการเขียนโค้ด
ดังนั้นวันนี้เราจะย้ายลูกเต๋าของเรา ATmega328P และคู่ของลูกเต๋าที่ต่อไปยังบอร์ดภายนอกที่มีการเชื่อมต่อกับกระดานหลักของเราสำหรับการสื่อสารและสำหรับการเปิดเครื่อง นอกเหนือจากนั้น การเดินสายและการทำงานของลูกเต๋าจะอยู่ภายในส่วนประกอบนั้น
คุณอาจจะคาดเดาได้จากสิ่งนี้ว่าเป้าหมายสุดท้ายของเราคือการทำเช่นนี้กับแต่ละองค์ประกอบที่เราสร้างไปพร้อมกัน เพื่อที่เมื่อเราทำเสร็จแล้ว เราสามารถซ่อนพวกมันทั้งหมดไว้ในแพ็คเกจที่ดูดีซึ่งจะทำงานผ่านการกดปุ่มโดยไม่ต้องดูทั้งหมด ของสายไฟและงานภายใน
เราจะใช้เวลาส่วนใหญ่ในบทช่วยสอนนี้ในการทำงานทางกายภาพ เช่น การออกแบบวงจร การทำแผนที่บอร์ดต้นแบบ และการบัดกรีสิ่งต่างๆ เข้าด้วยกัน แต่มีการเขียนโปรแกรมเล็กน้อยที่เราต้องทำในตอนท้ายหลังจากที่เราย้ายสิ่งต่างๆ เหตุผลก็คือในที่สุดเราจะใช้อินเทอร์เฟซแบบอนุกรม 2 สายเพื่อสื่อสารระหว่างตัวควบคุม "หลัก" หลักของเรากับตัวควบคุม "ทาส" ทั้งหมดที่ประกอบขึ้นเป็นส่วนประกอบของโครงการโดยรวมของเราในชุดบทช่วยสอนนี้และ ตามที่คุณจำได้ในบทช่วยสอนที่ 6 เราได้คิดค้นวิธีการประเภทรหัสมอร์สเพื่อสื่อสารการทอยลูกเต๋าของเราจากลูกกลิ้งลูกเต๋า (บทช่วยสอน 4) ไปยังเครื่องวิเคราะห์การลงทะเบียน (บทช่วยสอนที่ 5) ซึ่งแสดงผลการทอยลูกเต๋าในรูปแบบไบนารีบนไฟ LED 8 ดวง. นั่นเป็นเพียงวิธีการสื่อสารแบบ "ม้วนของคุณเอง" ที่ฉันตัดสินใจใช้ เพราะในขณะนั้น ยังเร็วเกินไปที่จะเข้าสู่การสื่อสารแบบอนุกรมแบบ 2 สาย ตอนนี้เราเกือบจะพร้อมแล้วที่จะดำดิ่งสู่ส่วนลึกของการสื่อสารแบบอนุกรม และเราจะทำอย่างนั้นในบทช่วยสอน 10 แต่สำหรับตอนนี้ เราต้องคาดการณ์การพัฒนาในอนาคตและต่อสาย LED ของลูกกลิ้งลูกเต๋าของเราใหม่เพื่อเพิ่มพื้นที่ทั้งสอง หมุดที่เราต้องการสำหรับการสื่อสารแบบอนุกรม
นี่คือพิน SCL และ SDA บน ATmega328P คุณสามารถดูได้จากแผนภาพพินเอาต์ที่เรียกอีกอย่างว่า ADC5 และ ADC4 เมื่อใช้ในการแปลงแอนะล็อกเป็นดิจิทัล จะเรียกว่า PCINT13 และ PCINT12 เมื่อใช้เป็นหมุด "เปลี่ยนพิน" และสุดท้ายเรามักเรียกพวกมันว่า PC5 และ PC4 เมื่อพิจารณาว่าเป็นพินบน PortC เนื่องจากเราใช้หมุดสองตัวนี้เป็นส่วนหนึ่งของลูกกลิ้งลูกเต๋าของเราด้วยเหตุผลหลายประการ (หลัก ๆ คือทำให้การเข้ารหัสง่ายขึ้นและเดินสายไปยัง LED บนกระดานได้ง่ายขึ้น) ตอนนี้เราจึงต้องแก้ไขรหัสของเราและต่อสายใหม่เล็กน้อย เพิ่มหมุดเหล่านี้สำหรับการสื่อสารในอนาคต
ดังนั้นเราจะเริ่มต้นด้วยการออกแบบ การตัด การเดินสาย และการบัดกรี จากนั้นเราจะเขียนลูกกลิ้งลูกเต๋าใหม่เพื่อใช้งานกับการตั้งค่าใหม่ของเรา และสุดท้ายก็ทดสอบเพื่อให้แน่ใจว่ายังคงใช้งานได้
เพื่อให้บทช่วยสอนนี้สมบูรณ์ คุณจะต้องมีสิ่งต่อไปนี้:
- สิ่งมาตรฐานที่คุณต้องการเสมอซึ่งฉันจะหยุดทำซ้ำตลอดเวลา: กระดานสร้างต้นแบบของคุณ สำเนาของแผ่นข้อมูลและชุดคำสั่ง และสมองของคุณ
- บอร์ด PCB ต้นแบบวงจรไร้สายแบบนี้: https://www.ebay.com/itm/191416297627 ฉันจะใช้เวอร์ชัน Measure Explorer 103RAWD ของบอร์ดนี้: https://www.ebay.com/itm/103RAT -circuit-proto-proto… เนื่องจากฉันมีพวกมันอยู่ในมือ แต่เวอร์ชัน 103RAW-0 ที่ฉันลิงก์ไปด้านบนก็ใช้ได้ดีเช่นกัน
- ปัตตาเลี่ยน, สายไฟ, บัดกรี, หัวแร้ง, "มือช่วย" หรืออะไรก็ตามที่จะถือสิ่งของ ฯลฯ ฯลฯ อีกครั้งจากนี้ไปฉันจะหยุดแสดงรายการสิ่งนี้เช่นกัน หากคุณมาไกลถึงขั้นนี้แล้วในบทช่วยสอนเหล่านี้ แสดงว่าคุณมีข้อมูลทั้งหมดนี้อยู่แล้ว
นี่คือลิงค์ไปยังคอลเลกชันที่สมบูรณ์ของบทช่วยสอน AVR assembler ของฉัน:
ขั้นตอนที่ 1: ออกแบบแผนผังการเดินสาย
สิ่งที่ยอดเยี่ยมเกี่ยวกับบอร์ด Measure Explorer ก็คือ ถ้าคุณใช้เวลาและวางแผนสิ่งต่าง ๆ ในตอนเริ่มต้น คุณสามารถประหยัดการเดินสายจำนวนมากในตอนท้ายได้ ดังนั้นเราจะเริ่มต้นด้วยการออกแบบเลย์เอาต์ของเราก่อนที่จะเริ่มบัดกรี ด้วยบอร์ดประเภทนี้ คุณต้องตัดสายไฟที่ต่อกันเป็นพวง ซึ่งไม่ใช่เรื่องง่ายเลย แต่ผลลัพธ์ที่ได้คือบอร์ดขนาดกะทัดรัดที่ดีมากและมีสายไฟพันกันยุ่งเหยิงน้อยที่สุด สิ่งแรกที่เราต้องทำคือออกแบบบอร์ดของเรา วงจรเพื่อให้พอดีกับบอร์ด วิธีที่ดีในการทำเช่นนี้คือดาวน์โหลดแผนที่ของกระดานแล้วใช้มันเพื่อเล่นกับการออกแบบต่างๆ จนกว่าคุณจะพบแผนที่ที่ใช้งานได้ นี่คือเลย์เอาต์สำหรับ ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp
ขั้นตอนที่ 2: ตัดวงจรบนกระดานออก
ขั้นแรก ใช้แบบแผนของคุณที่คุณวาดไว้ในขั้นตอนก่อนหน้า วาดวงจรของคุณบนกระดาน เช่น. วาดเส้นเพื่อแสดงสายไฟ อย่าวาดอะไรในแง่ของส่วนประกอบเพียงแค่ต่อสายตามที่แสดงในภาพแรก สังเกตว่าเมื่อคุณทำพัง (และถ้าคุณเป็นเหมือนฉัน คุณจะทำผิดพลาดหลายครั้งในขั้นตอนเหล่านี้) คุณสามารถใช้ยางลบและลบบรรทัดได้ ทำเช่นนี้สำหรับทั้งสองด้านของกระดาน
ถัดไปคุณต้องตัดการเชื่อมต่อรอบ ๆ เส้น หากคุณดูบอร์ดอย่างใกล้ชิด คุณจะเห็นว่ารูพินทุกรูเชื่อมต่อกับ 4 รูที่อยู่ติดกันทั้งสองด้านของบอร์ด เพื่อให้รูทั้งหมดบนกระดานเชื่อมต่อกันเมื่อคุณเริ่ม ดังนั้นคุณต้องตัดสายไฟทั้งสองข้างเพื่อแยกสายไฟออกจากกัน วิธีที่ใช้กันทั่วไปในการตัดนี้คือการใช้มีด Exacto แต่ฉันดูดมีด Exacto และอาจจะตัดตัวเอง ดังนั้นฉันจึงใช้ Dremel กับชุดเครื่องมือตัดแบบบาง ฉันหวังว่าฉันจะมีสิ่งที่แนบมาในการเจียรบางอย่างที่มาถึงจุดที่แหลมคมเพราะมันจะทำงานได้ดีที่สุด แต่ฉันไม่มีแบบนั้นฉันจึงใช้สิ่งที่แนบมากับเลื่อยตัด (หมายเหตุเพิ่มเติม: หลังจากเสร็จสิ้นโครงการนี้ ฉันพบว่าหัว "ล้อตัดสำหรับงานหนัก" ที่เล็กกว่าสำหรับ Dremels ทำงานได้ดีที่สุด พวกมันดูเหมือนกระดาษทรายวงกลมเล็กๆ และทำงานเหมือนเครื่องมือตัดที่แสดงไว้ที่นี่ ยกเว้นเส้นผ่านศูนย์กลางเล็กกว่า เป็นต้น มองเห็นและควบคุมตำแหน่งที่คุณกำลังตัดได้ง่ายกว่ามาก)
ระหว่างทาง ถือบอร์ดไว้กับแสงและตรวจสอบให้แน่ใจว่าได้ตัดสายไฟแล้วจริงๆ คุณอาจรำคาญตรงที่มีรอยเชื่อมทั้งสองด้านของกระดาน ดังนั้นคุณต้องทำกระบวนการตัดใหม่อีกครั้งกับอีกด้านหนึ่ง แต่ฉันคิดว่าคุณจะเห็นประเด็นนี้เมื่อทำเสร็จแล้ว ฉันทำผิดพลาดมากมายในการตัดสายไฟที่ไม่ควรถูกตัดและให้อีกด้านหนึ่งยังคงเชื่อมต่ออยู่กลับกลายเป็นว่าดี
จะใช้เวลาและความอดทนค่อนข้างนานในการตัดวงจรเข้ากับบอร์ด แต่เมื่อคุณทำได้ดีแล้ว มันก็สนุกดี
ขั้นตอนที่ 3: ประสานส่วนประกอบและทดสอบ
ตอนนี้คุณได้แยกสายไฟทั้งหมดในแผงวงจรแล้ว คุณสามารถเริ่มบัดกรีบนส่วนประกอบแต่ละส่วนได้
ฉันบัดกรีไฟ LED สำหรับลูกเต๋าตัวใดตัวหนึ่งก่อนจากนั้นฉันก็นำขั้วบวกและลบออกจากเขียงหั่นขนมของฉันและทดสอบการเชื่อมต่อสำหรับ LED แต่ละอันเพื่อให้แน่ใจว่าแยกจากกันและใช้งานได้
เช่นเดียวกับความตายอื่น ๆ
จากนั้นต่อตัวต้านทานเข้ากับดายแต่ละตัว และตัวต้านทาน 10K ที่ด้านหลังของบอร์ด
จากนั้นติดคริสตัลออสซิลเลเตอร์ แคป 22pf ปุ่มกด และ ATmega328P คุณอาจต้องการบัดกรีซ็อกเก็ตชิปแล้วใส่ ATmega328P ของคุณเข้าไปเพื่อให้คุณสามารถถอดออกได้หากต้องการและนำกลับมาใช้ใหม่ในอย่างอื่น ฉันเพิ่งบัดกรีชิปของฉันเข้ากับบอร์ดเพราะฉันรู้ว่าเรากำลังสร้างอะไรด้วยบทช่วยสอนเหล่านี้ และฉันรู้ว่าฉันจะชอบมันมากจนไม่อยากถอดชิปออก
สังเกตจากด้านหลังกระดานว่าเราติดส่วนหัวอย่างไร ฉันใช้ส่วนหัวของหมุดแบบยาวแล้วงอตามแนวนอนเพื่อไม่ให้โผล่ออกมาจากกระดาน เพื่อให้ฉันสามารถปิดกระดานจนถึงระดับของปุ่มกดและไฟ LED ด้วยคอนเทนเนอร์ได้ในที่สุด และไม่มีส่วนหัวขวางทาง เรามีส่วนหัวสำหรับ Tx, Rx เพื่อให้เราสามารถตั้งโปรแกรมชิปได้ เรามีส่วนหัวสำหรับ SDA, SCL เพื่อให้เราสามารถใช้การสื่อสารแบบ 2 สายได้ในภายหลัง และเรามีส่วนหัว 3 พินสำหรับ AVCC, AREF, GND ที่อีกด้านหนึ่งของบอร์ด ฉันมีพินกราวด์และพิน VCC ทั้งหมดต่อสายเข้าด้วยกันบนชิป เราจึงต้องการอินพุตพลังงานเพียงอันเดียว
ในที่สุดเมื่อทุกอย่างถูกต่อสายแล้ว เราก็ต่อสาย die 1 to die2 แบบที่เราทำบนเขียงหั่นขนมเพื่อให้เราสามารถควบคุมลูกเต๋าทั้งสองได้ด้วย 9 พินเท่านั้น
ตอนนี้เราจำเป็นต้องแก้ไขโค้ดของเราเพื่อที่จะควบคุมการตั้งค่าใหม่นี้
ขั้นตอนที่ 4: รหัสแอสเซมบลีและวิดีโอ
ฉันได้แนบรหัสการประกอบและวิดีโอของลูกกลิ้งลูกเต๋าที่กำลังดำเนินการอยู่ ทั้งหมดที่ฉันทำคือนำรหัสสำหรับลูกกลิ้งลูกเต๋าของเราจากบทช่วยสอนที่ 6 ปรับเปลี่ยนหมุดให้ตรงกับเลย์เอาต์ใหม่ และลบรูทีนย่อยการสื่อสารเนื่องจากเราจะเขียน อันใหม่ในบทช่วยสอน 10 ครั้งต่อไปเราจะเปิดแผงปุ่มกดอีกครั้งและเรียนรู้วิธีควบคุมจอแสดงผล 7 ส่วน แล้วเจอกัน!
แนะนำ:
AVR Assembler บทช่วยสอน 2: 4 ขั้นตอน
AVR Assembler Tutorial 2: บทช่วยสอนนี้เป็นความต่อเนื่องของ "AVR Assembler Tutorial 1" หากคุณยังไม่ผ่านบทช่วยสอน 1 คุณควรหยุดตอนนี้และทำอย่างนั้นก่อน ในบทช่วยสอนนี้ เราจะทำการศึกษาการเขียนโปรแกรมภาษาแอสเซมบลีของ atmega328p u
บทช่วยสอน AVR Assembler 1: 5 ขั้นตอน
AVR Assembler Tutorial 1: ฉันได้ตัดสินใจที่จะเขียนชุดของบทช่วยสอนเกี่ยวกับวิธีการเขียนโปรแกรมภาษาแอสเซมบลีสำหรับ Atmega328p ซึ่งเป็นไมโครคอนโทรลเลอร์ที่ใช้ใน Arduino หากยังมีคนสนใจอยู่ ฉันจะออกสัปดาห์ละครั้งหรือประมาณนั้นจนกว่าของจะหมด
บทช่วยสอน AVR Assembler 6: 3 ขั้นตอน
บทช่วยสอน AVR Assembler 6: ยินดีต้อนรับสู่บทช่วยสอน 6! บทช่วยสอนวันนี้จะสั้นซึ่งเราจะพัฒนาวิธีง่ายๆ ในการสื่อสารข้อมูลระหว่าง atmega328p หนึ่งกับอีกพอร์ตหนึ่งโดยใช้สองพอร์ตเชื่อมต่อกัน จากนั้นเราจะนำลูกกลิ้งลูกเต๋าจากบทช่วยสอนที่ 4 และการลงทะเบียน
บทช่วยสอน AVR Assembler 7: 12 ขั้นตอน
บทช่วยสอน AVR Assembler 7: ยินดีต้อนรับสู่บทช่วยสอน 7! วันนี้เราจะแสดงวิธีการไล่คีย์แพดก่อน แล้วจึงแสดงวิธีใช้พอร์ตอินพุตแบบอะนาล็อกเพื่อสื่อสารกับปุ่มกด เราจะดำเนินการโดยใช้อินเตอร์รัปต์และสายเดี่ยวเป็น ป้อนข้อมูล. เราจะต่อสายปุ่มกดเพื่อเ
บทช่วยสอน AVR Assembler 9: 7 ขั้นตอน
บทช่วยสอน AVR Assembler 9: ยินดีต้อนรับสู่บทช่วยสอน 9. วันนี้เราจะแสดงวิธีควบคุมทั้งการแสดงผล 7 ส่วนและการแสดงผล 4 หลักโดยใช้รหัสภาษาแอสเซมบลี ATmega328P และ AVR ในการดำเนินการนี้ เราจะต้องใช้ความหลากหลายในการใช้ stack