ลำดับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ avr. การเขียนโปรแกรมไมโครคอนโทรลเลอร์ AVR ด้วยตนเอง วิธีแฟลชคอนโทรลเลอร์ และวิธีเพิ่มอุปกรณ์เสริมและอุปกรณ์เสริมที่จำเป็นสำหรับการทำงานด้วยตนเอง

โกลอฟนา / ติดต่อ


โปรแกรมอะไรครับ
อัลกอริทึมคืออะไร

ฉันอาจจะรีบไปตั้งชื่อบทความ "การเขียนโปรแกรมไมโครคอนโทรลเลอร์ AVR - ขั้นตอนแรก". Shvidshe, tsia stattya เช่นเดียวกับการโจมตีทั้งหมดเป็นรอยแตกเล็ก ๆ ในโลกของไมโครคอนโทรลเลอร์ เราจะมี "โจร" จำนวนมากท่าเรือจะไม่ไปถึงจนกว่าจะถึงเวลาที่เราสามารถพูดได้ว่า: "ไมโครคอนโทรลเลอร์คือส่วนที่เหลือของหม้อ" Ale y tse, svidshe สำหรับทุกสิ่งในเสื้อคลุมแห่งจินตนาการ - คุณไม่สามารถสัมผัสได้โดยไม่แตะต้อง - โลกของไมโครคอนโทรลเลอร์กำลังพัฒนาและพัฒนาอย่างเต็มที่อย่างต่อเนื่อง เป้าหมายของเราคือการพัฒนาขั้นตอนแรก ผลลัพธ์เชิงตรรกะของขั้นตอนแรกดังกล่าว ซึ่งการออกแบบที่เลือกบนไมโครคอนโทรลเลอร์ได้รับการพัฒนาอย่างอิสระ และห่างไกลจากผิว popliv ระหว่างทางจากความรู้เต็มรูปแบบบนเว็บไซต์ บทความแรกและสุดท้ายสามารถเรียกได้ดังนี้: "การเขียนโปรแกรมไมโครคอนโทรลเลอร์ - ขั้นตอนสุดท้ายของขั้นตอนแรก"(จำเป็นราวกับว่าก้มลง!)
มาเริ่มกันเลยดีกว่า

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

1. Bazhannya และความเย่อหยิ่งเมื่อบรรลุเป้าหมาย
จุดนี้ในความคิดของฉันเป็นสิ่งสำคัญที่สุด หากไม่มี bazhannya และถ้ามีมากกว่า bazhannya จุกจิกก็จะไม่มีผลลัพธ์ อย่าอายหัวและไม่สั่นแสดงความน่ารังเกียจ - และทุกอย่างจะเสร็จสิ้น (และไม่เพียง แต่ในการควบคุมไมโครคอนโทรลเลอร์ที่ถูกต้องเท่านั้น)
2. ฉันจะสร้างไมโครคอนโทรลเลอร์
ข้าราชการคนสำคัญ. Aje รอสักครู่ไม่ทราบวิธีเพิ่มพลังให้กับไมโครคอนโทรลเลอร์ฉันสามารถมีข้อผิดพลาดอะไรได้บ้างทุกอย่างทำงานอย่างไรเราไม่สามารถเอาชนะความสามารถทั้งหมดของไมโครคอนโทรลเลอร์ได้เปลี่ยนแปลงทุกอย่างเกี่ยวกับสิ่งที่กำลังสร้างข้อบกพร่อง
เป็นไปได้และไม่ใช่ varto ที่จะขุดลึกลงไปที่ "การบรรจุ" ของไมโครคอนโทรลเลอร์ แต่สิ่งสำคัญคือการย้าย - asi รู้ถึงความผิด (sim mi และถูกครอบครองที่ด้านข้างของไซต์ - เพื่อเรียนรู้ asi ทำงานกับ ไมโครคอนโทรลเลอร์)
3. ความรู้เกี่ยวกับคำสั่งควบคุมสำหรับไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์เหมือนกับสุนัข (เช่นจักจั่น povnyannya) ประหลาดใจที่เราด้วยตาที่สมเหตุสมผลและกระดิกหางจนกว่าเราจะสั่ง vikonannya yakihos diy
มีคำสั่งมากกว่า 130 คำสั่งสำหรับจิตใจของสุนัขฉลาด ไมโครคอนโทรลเลอร์อัจฉริยะ
ดังนั้น เนื่องจากไมโครคอนโทรลเลอร์ไม่เพียงแต่กระดิกหางเท่านั้น แต่เมื่อตื่นขึ้น เราจำเป็นต้องมีหุ่นยนต์ จึงจำเป็นต้องรู้คำสั่งเพื่อควบคุมมัน
ฉันอยากจะบอกว่าสำหรับ cob คุณไม่จำเป็นต้องอัดคำสั่งทั้งหมด 130 คำสั่ง มีความรู้เพียงพอและครึ่งหนึ่ง (และเรียนรู้น้อยลง) ก่อนหน้านั้นมีหลายทีมซ้ำกัน ยิ่งเรารู้คำสั่งมากเท่าไร ไมโครคอนโทรลเลอร์ก็จะยิ่งจัดการเราได้อย่างมีประสิทธิภาพมากขึ้นเท่านั้น และยิ่งดูเหมือนปากกาโปรแกรมที่สวยงามและสง่างามมากขึ้นเท่านั้น

Otzhe หากคุณมีปัญหาในการควบคุมไมโครคอนโทรลเลอร์ให้ดำเนินการต่อ

โปรแกรมอะไรครับ

คุณใส่ไมโครคอนโทรลเลอร์มากแค่ไหน โปรแกรม- คุณสร้างโปรแกรมสำหรับไมโครคอนโทรลเลอร์ด้วยตัวเอง

โปรแกรม(ในการแปลคำว่าหมายถึง - "การแสดงที่มา") - คำอธิบายไปข้างหน้าของส่วนย่อยที่เป็นไปได้

ตัวอย่างเช่น เราต้องการให้ไมโครคอนโทรลเลอร์ส่องแสง ทำงานให้เสร็จได้ง่าย แต่เพื่อให้ไมโครคอนโทรลเลอร์ทำงานให้เสร็จ ก่อนอื่นเราอธิบายฟังก์ชันทั้งหมดของไมโครคอนโทรลเลอร์เป็นขั้นเป็นตอน เขียนโปรแกรม, Yaku vin มีความผิดใน vikonati ที่เอาผลลัพธ์ที่จำเป็นสำหรับเราออกไป - แสงที่กะพริบ
Shchos บน kshtalt เช่นนี้:
♦ เปิดไฟ:
- ปรับมุมมองของไมโครคอนโทรลเลอร์ก่อนเชื่อมต่อแสงเพื่อทำงานในมุมมองของข้อมูล
- ให้ visnovok เป็น rіvenตรรกะซึ่งช่วยให้คุณจุดไฟ
♦ ตรวจสอบชั่วโมงปัจจุบัน:
- ไปที่โปรแกรมย่อยในรูปแบบของการหยุดชั่วคราว (ตามความจำเป็นในการ "กำหนด")
- เมื่อสิ้นสุดโปรแกรมย่อย ให้หยุดชั่วคราว ให้หันไปที่โปรแกรมหลัก
♦ ปิดไฟ:
- ใช้เส้นตรรกะเพื่อปิดไฟสำหรับรูปลักษณ์ของไมโครคอนโทรลเลอร์
และจนถึงตอนนี้

ด้วยคำว่า โปรแกรมทับซ้อนคำอื่นไม่ชัด - อัลกอริทึม.

อัลกอริทึมคืออะไร

อัลกอริทึม- ชุดคำสั่งที่อธิบายลำดับของการกระทำเพื่อให้ได้ผลลัพธ์ที่ต้องการ

รายงานโปรแกรมว่าไง เขียนทุกอย่างไมโครคอนโทรลเลอร์ แล้ว อัลกอริทึม, - มิ เราสามารถเห็นคำสั่งไมโครคอนโทรลเลอร์บนพื้นฐานของการสร้างโปรแกรม โดยเปรียบเทียบกับการเล็งไปที่ก้น:
♦ จุดไฟ
♦ตรวจสอบชั่วโมงปัจจุบัน
♦ ปิดไฟ
และจนถึงตอนนี้
ในลักษณะดังกล่าว อัลกอริทึม - โปรแกรมเดียวกัน. ยิ่งสร้างอัลกอริทึมอย่างระมัดระวังและรอบคอบมากเท่าใด การสร้างโปรแกรมก็จะยิ่งง่ายขึ้นเท่านั้น

การเขียนโปรแกรม Mova

เป็นเรื่องน่าเสียดายที่เราสามารถออกคำสั่งให้กับสุนัขของสุนัขกับคนของฉันได้ จากนั้นการเชื่อมต่อกับไมโครคอนโทรลเลอร์ก็สามารถเป็นของฉันได้ ตามที่ฉันเข้าใจ คำสั่งไมโครคอนโทรลเลอร์ของฉัน

คำสั่งสำหรับไมโครคอนโทรลเลอร์อาจดูเหมือนชุดของหนึ่งและศูนย์ เช่น:
00110101 011000100
เรียกว่า- รหัสคำสั่งและรหัสของคำสั่งคือ ce mov ตามที่ไมโครคอนโทรลเลอร์เข้าใจ และเพื่อเปลี่ยนภาษาอ้างอิงของเราเป็นภาษาของไมโครคอนโทรลเลอร์ - ชุดศูนย์และชุด qi ให้ใช้โปรแกรมพิเศษ
โปรแกรมช่วยให้คุณสามารถอธิบายลำดับการทำงานของไมโครคอนโทรลเลอร์ในแบบที่เข้าใจได้ไม่มากก็น้อยสำหรับเราแล้วโอนลำดับไปยังไมโครคอนโทรลเลอร์ที่เข้าใจได้ซึ่งเป็นผลมาจากชื่อดังกล่าว รหัสเครื่อง- ลำดับของคำสั่งและคำสั่ง (เลขศูนย์และตัวของคุณเอง) รวมถึงการทำความเข้าใจไมโครคอนโทรลเลอร์ ข้อความของโปรแกรมที่เขียนโดยโปรแกรมเมอร์เรียกว่า รหัสออก. จำเป็นต้องมีการถ่ายโอนโปรแกรมจากโปรแกรม mov (รหัสเอาต์พุต) ไปยัง mov ของไมโครคอนโทรลเลอร์ (รหัสเครื่อง) นักแปล. นักแปลจะแปลข้อความของโปรแกรมเป็นรหัสเครื่อง เพื่อให้เราสามารถลงทะเบียนปริศนาเกี่ยวกับไมโครคอนโทรลเลอร์ได้
ในโปรแกรมดังกล่าว ลำดับการทำงานของไมโครคอนโทรลเลอร์อธิบายโดยเหมืองพิเศษ - โปรแกรมของฉัน

การเขียนโปรแกรม Mova– วิธีการถ่ายโอนคำสั่ง คำแนะนำ คำแนะนำที่ชัดเจนไปยังไมโครคอนโทรลเลอร์

จากการเขียนโปรแกรม bagatioh mov คุณสามารถดูได้สองประเภท:
การเขียนโปรแกรมภาพยนตร์ระดับต่ำ
โปรแกรมภาพยนตร์ระดับสูง
ทำไมพวกเขาถึงเหม็น และพวกเขามีกลิ่นเหม็นของความใกล้ชิดกับไมโครคอนโทรลเลอร์

ในช่วงเริ่มต้นของการเกิดเทคโนโลยีไมโครโปรเซสเซอร์ โปรแกรมต่างๆ ถูกเขียนด้วยรหัสเครื่อง ดังนั้นอัลกอริธึมของหุ่นยนต์ทั้งหมดจึงถูกเขียนตามลำดับเมื่อเห็นค่าศูนย์และตัวเลข ตัวอย่างเช่น แกนอาจดูเหมือนโปรแกรม:
01010010
01000110
10010011
สิ่งสำคัญคือต้องบอกผู้เชี่ยวชาญให้จัดเรียงตัวเลขสองตัวดังกล่าว เพื่อให้ชีวิตง่ายขึ้น โปรแกรมเมอร์จึงเริ่มสร้างคนแรก การเขียนโปรแกรมภาพยนตร์. ดังนั้นแกน ยิ่งการเขียนโปรแกรมภาษาอยู่ใกล้ชุดของศูนย์และหนึ่ง ยิ่งไวน์ของ "ค่าเท่ากันต่ำ" และยิ่งห่างจากพวกเขามาก - "สูงเท่ากับ" ยิ่งมากขึ้น

ซอฟต์แวร์ที่หลากหลายที่สุดสำหรับไมโครคอนโทรลเลอร์:
- mova ต่ำเท่ากับ - ผู้ประกอบ
- ภาษาที่มีความใจเย็นสูง - ซี (ซี)
มาประหลาดใจกับการใช้ їхної відмініnostі (ใช้นามธรรม)
อนุญาตให้เราบวกตัวเลขสองตัว: 25 และ 35
ในรหัสเครื่อง คำสั่งอาจมีลักษณะดังนี้:
00000101 1101001
ความหึงหวงต่ำของฉัน:
ADD Rd, Rr
ความหึงหวงสูงของฉัน:
25+35
ความแตกต่างระหว่างค่าเท่ากับต่ำและสูงสามารถเห็นได้ด้วยตาที่ไม่ย่อท้อ
เอล มาขุดก้นของพวกเรากันเถอะ ก้นของรหัสเครื่องจะไม่ถูกวิเคราะห์ ส่วนเศษของไวน์จะเหมือนกับก้นของ Assembler เพื่อประโยชน์ของมันเอง คำสั่งแอสเซมเบลอร์และรหัสเครื่อง (คำสั่ง) เพื่อไม่ให้หลงทางในศูนย์และตัวอื่น กำหนดตัวอักษรให้กับตัวย่อ ใช้คำสั่งแอสเซมเบลอร์ ADD Rd, Rr เราตั้งค่าไมโครคอนโทรลเลอร์ให้เพิ่มตัวเลขสองตัวซึ่งควรทราบ (และสำหรับใครที่เราควรเขียนไว้ข้างหน้า) - อันดับแรก Rd, Rr อีกตัวและวางผลลัพธ์ใน Rd ตามจริงแล้ว เรามาตั้งค่างานที่เฉพาะเจาะจงมากขึ้นสำหรับไมโครคอนโทรลเลอร์กันเถอะ: ทำสิ่งที่คุณต้องการทำและตำแหน่งที่จะวางผลลัพธ์ และที่นี่เราฝึกฝนโดยไม่มีตัวกลางกับไมโครคอนโทรลเลอร์
ทีมภาษาระดับสูง: 25 + 35 บันทึกทางคณิตศาสตร์หลักสำหรับเรา เพื่อปิดตาของเรา แต่ในกรณีนี้ เราไม่สามารถทำงานกับไมโครคอนโทรลเลอร์ได้โดยตรง เราแค่ตั้งค่างานให้คุณเพิ่มตัวเลขสองตัว ผลลัพธ์และลำดับในกรณีนี้จะเหมือนกับในกรณีของคำสั่งแอสเซมเบลอร์: ตัวเลขสองตัวจะถูกเขียนตามลำดับ จากนั้นพับ และผลลัพธ์ในช่องว่าง
แกนแรกนี่คือส่วนหัวของระดับสูงและต่ำ ใน Assembler เราควบคุมกระบวนการทั้งหมดได้ (ถ้าเราต้องการมากกว่านั้น): เรารู้วิธีเขียนตัวเลขสองตัว และเรารู้ว่าผลลัพธ์จะเป็นเช่นไร จากนั้นในระดับสูง เราจะไม่ควบคุมกระบวนการ โปรแกรมจะตรวจสอบเมื่อคุณต้องการจดตัวเลขและตำแหน่งที่คุณใส่ผลลัพธ์ เหนือสิ่งอื่นใด เราไม่จำเป็นต้องรู้ แม้ว่าสำหรับเราแล้วจะเป็นถุงขยะก็ตาม เลข 60 กำลังจะหมดไป ส่งผลให้โปรแกรมในภาษาระดับสูงมีการอ่านมากขึ้น (กำลังสูงกว่า) ตัวรับสำหรับดวงตา (กำลังสูงกว่า) และน้อยกว่าสำหรับโลก - แม้ว่าเราจะไม่ต้อง "คลานเลย" และทาสี สกินของไมโครคอนโทรลเลอร์ โปรแกรมจะทำงานให้เราในภายหลัง หากคุณคอมไพล์ її - แปลรหัสเครื่อง เอล นี่คือค่าลบ อัลกอริธึมเดียวกันสองอันเขียนใน Assembler และใน C หลังจากการแปลงในรหัสเครื่องจะแตกต่างกัน: โปรแกรมที่เขียนใน Assembler จะสั้นกว่าโปรแกรมที่เขียนด้วย C 20-40% - มารรู้เช่น ทางให้ C ไปถึงผลลัพธ์ที่เราต้องการ І traplyayutsya vpadki หากคุณไม่สามารถเข้าถึงภาพยนตร์ที่มีความใจเย็นสูงและในโปรแกรมใน C จะทำการแทรกโค้ดที่เขียนใน Assembler

ตามกฎแล้วโปรแกรมเมอร์รู้จักการเขียนโปรแกรมใหม่มากมายแบ่งปันความสามารถและความก้าวหน้าอย่างสร้างสรรค์ในโปรแกรมเดียว สำหรับเรามือสมัครเล่น เราจำเป็นต้องรู้ว่าเราต้องการ mov (สำหรับ cob) หรือไม่ และเราต้องเริ่ม (และฉันเชื่อมั่นอย่างแน่วแน่ในเรื่องนี้) จากการเคลื่อนไหวระดับต่ำ - Assembler

โปรแกรมและการกระจายข้อมูล (บนพื้นฐานของสถาปัตยกรรมคลาสสิก
von Neumann ที่คอมพิวเตอร์ที่ดีที่สุด de memory is hard) ยางที่แตกต่างกันสำหรับ
พื้นที่หน่วยความจำ tsikh เสียใจอย่างมากจากโปรแกรม: data และ
ทีมสามารถพลิกกลับได้ในเวลาเดียวกัน

32 การลงทะเบียนของการรับรู้ที่น่าอับอาย (RVN) Atmel เป็นบริษัทแรกไปแล้ว
ปรากฏในแบบจำลองคลาสสิกของนิวเคลียสการแจงนับ ในลักษณะคล้ายคลึงกัน
ไม่มีคำสั่งถ่ายโอนข้อมูลการแลกเปลี่ยนระหว่าง ALU และหน่วยความจำ
ตรงกลางที่หน่วยความจำการนอนหลับ การแนะนำของ RON ในปริมาณดังกล่าว (เดาว่าใน
สถาปัตยกรรม X 86 จำนวนการลงทะเบียนดังกล่าวและใน x 51 เข้าใจ RON อย่างนั้น
vіdsutnya) ในจำนวนvipadkіvอนุญาตให้vzagalіvіdmovityในvіd roztashuvannya glo-
ลูกและการเปลี่ยนแปลงในท้องถิ่นใน OZP และประเภทของสแต็กสแต็ก, การดำเนินการกับ
วิธีทำให้ง่ายต่อการรบกวนโปรแกรม เป็นผลให้โครงสร้างของ
โปรแกรมแซมเพลอร์กำลังเข้าใกล้โปรแกรมระดับสูง
ความจริงก็คือ มันทำให้ระบบคำสั่งง่ายขึ้น
มีมากกว่าสำหรับ AVR, อันที่ต่ำกว่าในบ้านเกิด RISC อื่น ๆ (ไม่ว่าจะสำคัญหรือไม่
ส่วนหนึ่งของคำแนะนำเป็นนามแฝง)

โปรแกรมหน่วยความจำแฟลช(10,000 รอบการลบ/เขียน) เป็นไปได้
การตั้งโปรแกรมระบบภายในใหม่และจับภาพผ่านล่าสุด
ช่องอยู่ตรงโครงร่างที่เสร็จแล้ว เกี่ยวกับความก้าวหน้าของการเดินทางเช่นนั้น เก้าเป็นเช่นไร
ได้รับการยอมรับ รายงานใน ที่เวดนิซ.

ภูมิภาค Okrema ของหน่วยความจำอิสระพลังงาน(EEPROM, 100,000 รอบ
ลบ / เขียน) เพื่อบันทึกข้อมูลโดยมีความเป็นไปได้ในการบันทึกที่ตั้งโปรแกรมได้
วิธีหรือ zvn_shny zavantazhennya ผ่านอินเทอร์เฟซ SPI

ส่วนขยายในตัวสำหรับการประมวลผลสัญญาณแอนะล็อก: อนาล็อก
ตัวเปรียบเทียบและ ADC 10 บิตแบบ Rich-channel

จับเวลาสุนัขเฝ้าบ้านซึ่งทำให้คุณสามารถเลื่อนไปข้างหน้าได้โดยอัตโนมัติ
ตัวควบคุมตามช่วงเวลาของชั่วโมง (เช่น สำหรับการออกจาก
โหมด "นอน")

อินเทอร์เฟซ SPI ล่าสุด, TWI (ฉัน

) นั่น UART (USART), อนุญาต-

ยู
สิ่งก่อสร้างอื่นๆ (รวมถึงเช่น คอมพิวเตอร์ส่วนบุคคล)
ปัญหาฮาร์ดแวร์

ตัวจับเวลาด้วยการติดตั้งใหม่และความเป็นไปได้ในการเลือก dzherel rahunok-
ของพวกเขาเป็นพัลส์: ตามกฎแล้วพัลส์ 8 บิตหนึ่งหรือสองอันและอย่างน้อยหนึ่งพัลส์
16 บิต รวมทั้งสามารถประมวลผลในโหมดหลายช่องสัญญาณ 8-, 9-,
การปรับความกว้างพัลส์ 10-, 16 บิต (PWM)

ความเป็นไปได้ของการทำงานที่ความถี่สัญญาณนาฬิกา 0 Hz ถึง 16-20 MHz

ช่วงแรงดันไฟฟ้าชีวิต 2.7 ถึง 5.5 V(ในบางกรณี 1.8 หรือ
มากถึง 6.0)

ตัวเลข โหมดประหยัดพลังงานซึ่งพิจารณาจากจำนวนนอต
scho zalishayutsya podklyuchenimi. ออกจากระบอบ "การนอน" โดยสุนัขเฝ้าบ้าน
ตั้งเวลาหรือรีเซ็ตการโทร

เวคอัพไลฟ์มอนิเตอร์- เครื่องตรวจจับแรงดันตก (Brown-out
การตรวจจับ)

ที่นี่ยังห่างไกลจากคุณลักษณะทั้งหมดที่เป็นแบบฉบับสำหรับรุ่นต่างๆ ที่ระบุไว้
เอวีอาร์ กับคนอื่น ๆ เรารู้ดีกว่าและในทางปฏิบัติด้วย
มาทบทวนรายงานกัน เบียร์กลับไปด้านหลัง damo zagalnu ลักษณะ
ตระกูลต่างๆ ของ AVR ได้อย่างรวดเร็วด้วยการจดจำที่สำคัญที่สุดของพวกเขา

ครอบครัว AVR

มี พ.ศ. 2545 Atmel ได้เปิดตัว MK pyrodyns 8 บิตใหม่โดยอิงจาก
แกน AVR จากชั่วโมงนั้น MK ทั้งหมดของครอบครัวนี้จะถูกแบ่งออกเป็นสามกลุ่ม (subsimeist-
va): คลาสสิค จิ๋ว และเมก้า MK ของตระกูล Classic (AT90S xxxx) จะไม่เผยแพร่อีกต่อไป
พบในvirobnitstvі "zatrimalas" ห่างไกล (เรียบง่ายกะทัดรัดที่
รุ่น swidcode) AT90S2313, ale และได้รับรางวัล bula ในปี 2548 แทนที่ด้วย
ATtiny2313. Usі "คลาสสิค" AVR พร้อมตัวเลขหลัก 2 และ 8 ในชื่อ
รุ่น (ซึ่งหมายถึงหน่วยความจำทั้งหมดของโปรแกรมเป็นกิโลไบต์)
จิ๋วและเมก้า สำหรับโปรแกรม Mega pіd hour สามารถติดตั้งแบบพิเศษได้
ของบิตทางสังคมของฆราวาส ซึ่งช่วยให้ไม่มีการเปลี่ยนแปลงใด ๆ
ใช้โปรแกรมที่สร้างขึ้นสำหรับตระกูล Classic จึงมีแอพพลิเคชั่นมากมาย
tsіyknіzі z โดยวิธีการทำให้เข้าใจง่ายของชุดหุ้มควรมุ่งไปที่รุ่นสำหรับครอบครัว
คลาสสิก
ใช้เคสประเภทต่างๆ ซึ่งมีไมโครวงจร AVR
ชี้ไปที่รูป 1.1. ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับหัวข้อนี้สามารถพบได้ที่
ภาคผนวก 1(ตารางที่ก1.2) รวมทั้งเอกสารทางเทคนิคสำหรับภาคผนวก
เป็นสิ่งสำคัญสำหรับความต้องการวิทยุสมัครเล่น รูปแบบของไมโคร-
วงจรในกรณี PDIP แต่ไม่ใช่ทุกรุ่นของ MK สั่นในกรณีดังกล่าว
ทุกครอบครัวสามารถปรับเปลี่ยนได้สองแบบ: ตัวอักษร "L" ที่ป้ายพูด
เกี่ยวกับส่วนขยายช่วงชีวิตคือ 2.7-5.5 V การมีตัวอักษรดังกล่าวหมายถึง dia-
อายุการใช้งาน 4.5-5.5 V. เมื่อเลือก microcircuit เฉพาะที่คุณต้องการ
ขอแสดงความนับถือ t. ถึง. L-versions ในเวลาเดียวกันและน้อยกว่า swidcode, at
มากกว่า їх ความถี่สัญญาณนาฬิกาสูงสุดถูกตั้งไว้ที่ 8 MHz
สำหรับเวอร์ชันที่ "มากกว่า" ความถี่สูงสุดจะตั้งไว้ที่ 16 หรือ 20 MHz โฮชายัก
ตามกฎแล้วเมื่อเริ่มต้น L-microcircuits ด้วยแรงดันไฟฟ้า 5 ที่ความถี่สูงถึง 10-
12 MHz
ทำงานด้วยแรงกดดันในการกินใกล้ 3V อย่างมีเหตุผล ไม่สุดโต่ง
ค่าความถี่) ป้องกันเมื่อออกแบบลำโพงแรงดันสูง
riy เลื่อน vrakhovuvat tsyu vimogu.
Chips Tiny สามารถ flash-ROM โปรแกรมที่มีความจุ 1-8 kb และมีจำหน่ายใน
ดีที่สุดในอาคารที่มี 8-20 visnovki (ครีม ATtiny28) ดังนั้นกลิ่นเหม็นจึงเป็นที่ยอมรับโดยทั่วไป
ออกแบบมาสำหรับสิ่งปลูกสร้างที่เรียบง่ายและราคาถูก Tse ไม่ได้หมายความว่ามันเป็นไปได้
ทุกประเภทถูกครอบครองมากกว่า ต่ำกว่าในตระกูลเมกะ ตัวอย่างเช่น
ATtiny26 ในราคาน้อยกว่า 2 ดอลลาร์เพื่อแทนที่ตัวจับเวลาด้วย PWM . ความเร็วสูง
โหมด (ในรุ่นอื่นไม่สามารถทำได้) เช่นเดียวกับ ADC . 11 ช่อง
ฉันไม่ได้ทำงานในโหมดดิฟเฟอเรนเชียลด้วยการควบคุมอินพุตย่อย

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

และแรงดันอ้างอิง vbudovanim dzherel ซึ่งเป็นเรื่องปกติสำหรับ mo-
ดิล Chip ATtiny2313 ดังที่ได้กล่าวไปแล้วเป็นโซลูชั่นที่สมบูรณ์
ดีรุ่นหนึ่งของ AVR . "คลาสสิก" ที่เป็นสากลและสะดวกที่สุด
AT90S2313.

ข้าว. 1.1.ใช้เคสประเภทต่างๆ สำหรับ AVR

Pіrodina Mega มาพร้อมกับโปรแกรม Flash-ROM ที่มีปริมาตร 8–256 kB และตัวเครื่อง
ตัวเองจาก 28–100 visnovkas Zagalom MK tsієїจัดกลุ่ม "ลูกเล่น" เพิ่มเติม, ต่ำกว่า
ขนาดเล็ก
ฟังก์ชั่น
ตารางที่มีคุณสมบัติหลักของรุ่น Tiny และ Mega ในปัจจุบัน
เกียร์วิ่งส่วนใหญ่จะเหนี่ยวนำใน ภาคผนวก 1. นอกจากนี้ยังมีdeakі zagalni tehnі-
ต่อไปนี้คือคุณลักษณะบางประการของตระกูล AVR สามารถรับข้อมูลรายละเอียดเพิ่มเติมได้
จากเอกสารทางเทคนิคของบริษัทซึ่งมีอยู่ในเว็บไซต์
Atmel สำหรับรุ่นผิว
Okrim tsikh สามตระกูลบนพื้นฐานของ AVR-core ความเชี่ยวชาญพิเศษถูกสร้างขึ้น
ชิปสำหรับหุ่นยนต์ที่มีอินเทอร์เฟซ USB (AT90USB xxxx) สมมติว่าใน-
อินเทอร์เฟซ CAN (AT90CAN xxx) สำหรับการดูด้วยจอแสดงผล RK (ATmega329 ขึ้นไป)
ด้วยอินเทอร์เฟซไร้สาย IEEE 802.15.4 (ZigBee) สำหรับองค์กรการค้า
deakііnshі เวลาทำงานที่เหลืออยู่ของไมโครคอนโทรลเลอร์ซีรีส์ Tiny
Mega เริ่มวางจำหน่ายในเวอร์ชันจากรัฐเล็กๆ ด้านบน (เทคโนโลยี
picoPower ที่มีแรงดันไฟฟ้า 1.8 V เช่นชื่อ MK series
เพิ่มตัวอักษร "P")
อุตสาหกรรม (รุ่นยานยนต์) ครอบครัว XMega ปรากฏตัวพร้อมกับความเครียด
สด 1.8-3.6 V ขับเคลื่อนโดย swidcode (ความถี่สัญญาณนาฬิกาสูงสุด 32 MHz)

ส่วนที่ 1 ภาพรวมของไมโครคอนโทรลเลอร์ Atmel AVR

ADC 16 ช่องสัญญาณ 12 บิตและช่อง DAC 2–4 ช่อง
AVR เหม็นทุกวัน) พร้อมช่อง UART และช่องสุดท้ายอื่น ๆ
portіv (นอกจากนี้ยังสามารถทำงานแบบออฟไลน์ด้วย
คอร์) แนะนำโดยการสนับสนุนการเข้ารหัส, โหมดที่ปรับปรุงแล้ว
picoPower และ "ระฆังและนกหวีด" อื่น ๆ Іsnuєครอบครัว okreme 32 ครั้ง-
MK AVR32 แบบอินไลน์ ซึ่งเป็นที่รู้จักสำหรับแอดออนความเร็วสูง เช่น
วิธีการประมวลผลสตรีมวิดีโอและจดจำภาพในแต่ละชั่วโมง

คุณสมบัติ
vikoristannya เชิงปฏิบัติ MK AVR

เมื่อ vikoristanny AVR ตำหนิโภชนาการต่ำซึ่งมีลักษณะที่ใช้งานได้จริง ให้เพิกเฉย-
ruvanya ซึ่งบางครั้งอาจนำไปปฏิบัติไม่ได้หรือโดยความล้มเหลวของ
roystva (และ deyakyh vipadkah - เพื่อให้ไม่สามารถเขียนโปรแกรมโยคะได้)
ตัวอย่างเช่น หนึ่งในปัญหาเหล่านี้คือความสามารถในการใช้ EEPROM
ที่วิมิแกนแห่งชีวิต Qiu และปัญหาที่คล้ายกันได้รับการตรวจสอบโดย
แผนกวิดโพวิดนิห์ เราร้องเพลงในมื้ออาหารที่ง่วงนอนทันที
รวม MK AVR

เกี่ยวกับสันติภาพ

MK AVR ช้าลงโดยเฉลี่ย 5-15 mA
riy ผ่าน MK visnovki) ความสำเร็จของการดีดไม่ได้อยู่แค่ในขั้น "navo-
ความน่าเชื่อถือ "รุ่นอัลและประเภทของความถี่สัญญาณนาฬิกาและแรงดันไฟฟ้าของชีวิต ในรูปที่ 1.2
ไดอะแกรมทั่วไปของ fallow strum นั้นเกิดจากแรงดันไฟฟ้าของแหล่งจ่าย
ว่าความถี่สัญญาณนาฬิกาสำหรับรุ่นน้องของตระกูลเมกะ
3 มะเดื่อ 1.2, zokrema หลังจากที่คุณสามารถเปลี่ยนท่าทางของคุณได้อย่างมาก
ลดความถี่สัญญาณนาฬิกาสำหรับการสั่นสะเทือนอย่างเงียบ ๆ หากโปรแกรมไม่ทำงานเป็นเวลาหนึ่งชั่วโมง
วิกฤต. Tse อนุญาตให้คุณถามโปรแกรมโดยได้รับคำแนะนำจากระบอบพลังงาน
การป้องกัน: ตัวอย่างเช่นด้วยการติดตั้งควอทซ์ "ดี" 32 768 Hz ดังนั้น
ความล่าช้าที่ปรับได้ของ MK สามารถเข้าใกล้ 200-300 uA

Z

Amitki ในระยะขอบ

ค่าของ stuma คือ 1-2 mA และน้อยกว่าคุณสามารถคิดว่ามันเป็นที่น่าพอใจสำหรับ
สิ่งที่แนบมากับแบตเตอรี่หากได้รับการคุ้มครองเพื่อการทำงานอย่างต่อเนื่อง
หุ่นยนต์ องค์ประกอบของประเภท AA (ประเภท alcaline, tobto puddles) อาจมีความจุสำหรับ
แถว 2000 mA ต่อปี
pratsyuєไม่น้อยกว่า 1,000 ปี (อันที่จริง navit deshcho มากกว่า) หรือ ponad 40 deb เวลา
แบตเตอรี่หุ่นยนต์ชนิด D ที่มีความจุพลังงานใกล้เคียงกับ 15–18,000 mA ปี
เข้าใกล้ชะตากรรมซึ่งเป็นประโยชน์มากเกินพอ
เลือกอาศัยสิ่งปลูกสร้างดังกล่าว (โดยเฉพาะเปิดไฟเป็นระยะ
ชั่วขณะหนึ่ง) ข้างแอ่งธาตุเดียวกันจะได้กลิ่นแรง
ємністю, อย่าไหลเมื่อโหลด i, smut, อาจเป็นคำที่ใหญ่กว่ามาก
ประหยัด (ประมาณ 7 ปี) เทียบกับองค์ประกอบประเภทอื่น

แต่การดูอาหารด้วยความเคารพแสดงให้เห็นว่าสิ่งเดียวกันนั้นเรียบง่าย
โปรแกรมยำ - โปรแกรมที่สำคัญที่สุดมี vipadkivs มากที่สุด สิ่งที่สำคัญที่สุด

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

ความถี่สัญญาณนาฬิกาต่ำและอินเตอร์ลีฟ กราฟในรูป 1.2 เส้นตรง, ดาว
ถัดไป ตามสัดส่วนของความถี่สัญญาณนาฬิกาที่ลดลง ความถี่สัญญาณนาฬิกาที่เพิ่มขึ้น
ไม่มีคำสั่ง ในอันดับนี้ขั้นตอน vikonannya ชอบที่ความถี่สัญญาณนาฬิกา
4 MHz ใช้เวลา 100 µs ที่ความถี่สัญญาณนาฬิกา 32768 Hz เวลาเดินทางมากกว่า 12 ms
ง่ายที่จะเชียร์ว่าในช่วงเวลาอื่นนั้นประหยัดพลังงานได้มาก
ขั้นตอน vikonannya tsієїจะเหมือนกัน

ข้าว. 1.2.แผนภาพของรกร้าง

ความถี่สัญญาณนาฬิกานั้นสำหรับรุ่นน้องของตระกูลเมก้า

เพื่อที่มันเป็นไปได้ที่จะปล้นสะเก็ดที่ไหม้เกรียมที่น่ารังเกียจ: ดังนั้นคุณจึงไม่ต้องการเจาะลึก
โหมดประหยัดพลังงานแบบบางและไม่ได้นำไปใช้ในโปรแกรม จากนั้นสำหรับ
จำเป็นต้องเลือกความถี่สัญญาณนาฬิกาของ yakomoga ที่ต่ำกว่า (by
ในทางปฏิบัติเสียงเพื่อให้ได้ค่าประมาณ 1 MHz เช่น สูงสุด
ลดดีกว่าสำหรับทุกอย่างไม่ให้ผลผ่านการปรับปรุงภายนอกเพิ่มเติม
พวกเขากับแลนเซอร์ซึ่งมีอยู่ในแผนการทั้งหมดอย่างหลีกเลี่ยงไม่ได้) ก้าวไปข้างหน้าอย่างไร
ตื่นตาตื่นใจกับโหมดประหยัดพลังงานแบบ "ลึก" (div. แยก 4) จากนั้นนาฬิกา
ความถี่ในการฟื้นตัวโดยรวมมีความสำคัญเพียงเล็กน้อย
Insha ทางด้านขวา - vibir naprugi กำลังรับประทาน yak bazhano zrobiti yakomog
น้อยกว่าแม้ว่าพวกเขาจะอนุญาตให้ภายนอกอาคาร ดินแดนรกร้างแห่งสายน้ำ
แรงดันไฟฟ้าของชีวิต ดังที่เห็นได้ง่ายจากกราฟในรูป 1.2 ไม่ใช่เชิงเส้น: เพิ่มขึ้น
แรงดันไฟฟ้าส่วนบุคคล strum spozhivannya เพิ่มขึ้นอย่างรวดเร็ว ดังนั้นให้ลดเป็น
แรงดันชีวิต
รุ่น AVR (ไม่เกิน 8 MHz ที่ 2.7 V ขณะมีชีวิตอยู่) เหมือนกันหมด ตัวอย่างเช่น,
สิ่งที่แนบมากับชีวิต 3 ที่ความถี่สัญญาณนาฬิกา 8 MHz ดูรูปที่ 1.2 จะ
นอนใกล้ 3 mA หรือใน pererahunka บนสายพันธุ์เดียว 9 mW; สำหรับขั้นตอน

ส่วนที่ 1 ภาพรวมของไมโครคอนโทรลเลอร์ Atmel AVR

ru trivality 100 μs พลังงาน pide 0.9 μJ ที่ความถี่ 16 MHz โปรเดียวกัน
ขั้นตอน 50 µs แต่ช้าลงเมื่อสิ้นเปลืองพลังงาน 5 V
สต็อกใกล้กับ 14 mA, tobto 70 mW; ทั้งหมดในครั้งเดียวสำหรับขั้นตอน vikonannya สำหรับพลังงาน pіde
3.5 μJ อาจมากกว่านั้นสี่เท่า
สำหรับอุปกรณ์ดิจิทัลที่รู้จักทั้งหมด สำหรับ vinnyatka ที่หายาก คุณสามารถ
รับอะนาล็อกที่ทันสมัยสำหรับหุ่นยนต์ที่แรงดันไฟฟ้า 2.7–
3.0 (เลื่อนลงด้านล่างเนื่องจากรุ่นคอนโทรลเลอร์ไม่อนุญาต) ดังนั้นในอีกด้านหนึ่ง
ไม่มีน้ำค้างแข็ง ผู้ที่มีการใช้งานมากที่สุดในหนังสือเล่มนี้จะเน้นไปที่
แรงดันไฟฟ้าของชีวิตคือ 5 єน้อยกว่าประเพณีของ Danina จนกว่าจะถึงตอนนั้น จงใช้ ฉี จามรี
ตามกฎแล้วให้กินuvazі kharchuvannya กับmerezі, de spozhivannya ไม่ใช่สัญญาณที่ดี
เชนนี่ ไฟแสดงสถานะสามารถจำกัดการลดลงของแรงดันไฟฟ้าของชีวิต
tory (ผ่านตัวที่ลดแรงดันไฟบนไดโอดแสงด้วยตัวเองโดยตรง
ตั้งค่าเป็น 2 V และสำหรับตัวบ่งชี้ที่ยอดเยี่ยมให้เปิด 5 V เพื่อควบคุมการขาด
tatochno) แต่ในสิ่งก่อสร้างดังกล่าว ความสบายของผู้ควบคุมไม่ได้ยอดเยี่ยมอีกต่อไป
บทบาท: โชติรีเลขเจ็ดส่วนเองตามลำดับกระแส spozhivatimut ของตัวเอง
100 mA หรือมากกว่า วิธีที่สองคือการแทนวงจรแอนะล็อก deduction
แรงดันไฟฟ้าของอาหารสามารถมองเห็นได้อย่างรวดเร็วzbіlshennyavіdnosinya "สัญญาณต่อเสียงรบกวน"
ด้วยความเคารพ AVR visnovki สามารถมีค่าระยะยาวได้
ดีด (สูงถึง 20-40 mA)
สำหรับการพักผ่อนจากการรับประทานอาหาร vivedennya (div. . แท็บ P1.3) สไลด์ยังระบุด้วยว่า
เมื่อใช้แรงดันอนาล็อกกับอินพุตของ ADC อินพุตดิจิตอล CMOS-
ไม่รวมองค์ประกอบ (อินพุตไปยังพอร์ต) และสำหรับมูลค่าของสิ่งนี้
แรงดันไฟฟ้าใกล้กับธรณีประตูของ spration ขององค์ประกอบสามารถเพิ่มขึ้นได้
ขอแสดงความเสียใจแก่พระราหุนกที่ล่วงไปในห้วงน้ำตกชั้นนอก
CMOS (เหนือสิ่งอื่นใด หากไมโครเซอร์กิตอยู่ในโหมด "สลีป"
ดิวิชั่น แยก14). เศษเล็กเศษน้อยของไมโครเซอร์กิตได้รับการยกเว้นจากเทคโนโลยี picoPower

คุณสมบัติที่แท้จริงของการบล็อก AVR ในวงจร

กังหันลม MK ส่วนใหญ่มีจุดเชื่อมต่อที่ "ยั่งยืน" ที่เชื่อมต่อกัน
(มาที่บัสชีวิต) ตัวต้านทาน
ปัญหาวงจรที่ชัดเจนหากจำเป็นต้องมีตัวต้านทานดังกล่าว
สำหรับเชื่อมต่อปุ่ม double-view หรือออกจาก "switched collector"
อย่างไรก็ตาม การสั่นสะเทือนที่สำคัญจำเป็นต้องมีตัวต้านทานภายนอกที่รองรับ 2-
5 kOhm (สำหรับการสั่นสะเทือนที่สำคัญสูงสุด 10–30 kOhm)
ไม่ควรติดตั้งตัวต้านทาน "Podtyagyuchiy" บนเอาต์พุตเท่านั้น / RESET
(เกี่ยวกับสิ่งที่มองหาใน บทที่ 2) และถ้าเป็นหนวดเคราคือ SCK, MOSI และ MISO
พอร์ตที่มีอยู่จะถูกเลือกสำหรับการเขียนโปรแกรมและเชื่อมต่อกับ
ซ็อกเก็ตซอฟต์แวร์ ISP (div. แยก 5) เช่นเดียวกับด้านหลัง visnovkas ของ ovnis
รถตู้เหมือนกลิ่นเหม็นของตูด Yakshcho tsі vysnovki ไม่ใช่ "pіdtyaguvat" ถึงความเครียด
กินด้วยตัวต้านทานเพิ่มเติม (ถ้าไม่ได้ระบุไว้ในทางเทคนิค
เอกสารประกอบ) ไม่รวมการอภัยโทษ
รีสตาร์ทระบบ และในกรณีที่ฮาร์ดรีเซ็ต ให้ใส่โปรแกรมลงในหน่วยความจำ
คุณโปรแกรม จากอีกด้านหนึ่งหากการเขียนโปรแกรม visnovki ให้บริการและแยก-

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

stі svychaynyh พอร์ต nalashtovanih ในวันหยุดและที่เรือนเพื่อหยุด
โหมดประหยัดพลังงานการมีตัวต้านทานซึ่ง "ดึงขึ้น" สามารถนำไปสู่
จนกระทั่งดีดปิดลง (เมื่อตั้งค่าการแสดงผลเป็นศูนย์ตรรกะผ่านตัวต้านทาน
สตอร์รั่ว ดีดจาก zherel zhivlennya ที่ทางเข้า MK) Yakshcho ตระหนักถึงหนึ่งใน
เครื่องอัดประหยัดพลังงานจึงจำเป็นต้องวิเคราะห์รูปแบบอย่างรอบคอบเพื่อให้
เปิดสถานการณ์ในบางกรณีผ่านตัวต้านทาน q ที่ไหลผ่านดีด
นอกจากนี้ ตรวจสอบให้แน่ใจว่าได้ติดตั้งตัวต้านทานที่เหมาะสมกับขดลวดหุ่นยนต์ของ MK on
รถบัสร้อนเหมือนในอินเทอร์เฟซ I

C (หรือเมื่อเชื่อมต่อกับอินพุต MK ไปยัง

ผลลัพธ์ของอาคารอื่นที่มีตัวสะสมขนาดใหญ่ เช่น จอภาพของชีวิต
น๊ะ คำอธิบาย บทที่ 3) เมื่อเชื่อมต่อกับปุ่มคู่ (โดยเฉพาะ
เพื่อความชัดเจนของovnіshny perevannya, div บทที่ 4і 5 ). Opir vbudovanogo
ตัวต้านทาน
การสั่นสะเทือนดังกล่าวมีขนาดใหญ่เกินไปสำหรับการเปลี่ยนแปลงทางแม่เหล็กไฟฟ้า ("บน-
หัวเผา") "นั่ง" อย่างมีประสิทธิภาพบนอันใหม่
ไมโครเซอร์กิต AVR เช่นตรรกะ CMOS หรือไม่ก็ตาม zavdyaki ถึงเกณฑ์สูง
อ่างอาบน้ำได้รับการปกป้องอย่างมีประสิทธิภาพจากสะพานลอยบนรถบัส "โลก" อย่างไรก็ตามกลิ่นเหม็น
ร่ำรวยยิ่งขึ้นในกรณีที่เป็นกะบนรถบัสแห่งชีวิต ดังนั้นอย่าลืมเกี่ยวกับ rozvyazuvannya
ตัวเก็บประจุของเราเนื่องจากจำเป็นต้องติดตั้งโดยไม่ต้องใช้ตัวกลาง
taniya (เซรามิก 0.1–0.5 μF) เช่นเดียวกับคุณภาพของเครื่องหนีบผมและ
ความคงตัว

ROZDIL

ภาคผนวกซากัลนี
องค์กรของหน่วยความจำ
ตั๊กตุวันยา สกิดนยา

โครงสร้างค่าโสหุ้ยของอาคารภายในของ MK AVR แสดงในรูปที่ 2.1. เกี่ยวกับ tsіy
แผนภาพแสดงส่วนประกอบหลักทั้งหมดของ AVR (crim ของโมดูล JTAG)
ในรุ่นอื่นๆ สิ่งอำนวยความสะดวกในการจัดเก็บสามารถแบ่งออกเป็น
สำหรับคุณสมบัติที่ถูกครอบงำโดยโปรเซสเซอร์ 8 บิตอย่างหลีกเลี่ยงไม่ได้
เคอร์เนล (GPU, หน่วยประมวลผลทั่วไป) ให้เราอธิบายสั้น ๆ ส่วนประกอบที่สำคัญที่สุด
enti มีรายงานว่าพวกเขาดูห่างไกลออกไปมากขึ้น
มาจำกัน โครงสร้าง AVR มีหน่วยความจำสามประเภท: flash-
หน่วยความจำโปรแกรม, RAM (SRAM) สำหรับข้อมูลเวลาที่ไม่ขึ้นกับพลังงาน
m'yat (EEPROM) สำหรับการบันทึกค่าคงที่และข้อมูลเล็กน้อย ไปดูกันเลยย
โอเครโม

หน่วยความจำโปรแกรม

เปิดใช้งานหน่วยความจำแฟลชของโปรแกรมในตัวควบคุม AVR เพื่อให้กลายเป็น
1 KB สำหรับ ATtiny11 ถึง 256 KB สำหรับ ATmega2560 ตัวเลขตัวแรกในชื่อ mo-
ส่วนแบ่งค่าหน่วยความจำในแถว: 1, 2, 4, 8, 16, 32, 64, 128
256 kb. หน่วยความจำโปรแกรม ราวกับว่าเป็นหน่วยความจำแฟลชอื่น อาจ
องค์กร (ขนาดด้านข้าง, รกร้างในโมเดล, ตั้งค่าใน 64 ถึง
256 ไบต์) หน้าสามารถตั้งโปรแกรมได้มากกว่าหนึ่งครั้ง จำนวนรอบ ne-
reprogramming syagaє 10,000
เมื่อเห็นโปรแกรมเมอร์ หน่วยความจำของโปรแกรมสามารถ
seredkіvธุรกิจ - slіvสกินสองไบต์ สิ่งที่แนบมากับหน่วยความจำของโปรแกรม (และเท่านั้น
หน่วยความจำtієї) สำหรับคำสองไบต์ - แม้แต่ช่วงเวลาสำคัญซึ่งจำเป็น
เอามันให้แน่น องค์กรดังกล่าวฉลาดขึ้นด้วยความจริงที่ว่ามีทีมในAVR
อาจเท่ากับสองไบต์ วินัยทอก สู่ทีม

ฉันอ่อนแอ-

інші (เช่น

) yakіทำงานกับ 16 บิตและขยาย-

ที่อยู่ mi, dozhina tsikh สั่งไบต์ที่แพงกว่าและกลิ่นเหม็น zastosovuyutsya น้อยลง
สำหรับรุ่นที่มีหน่วยความจำโปรแกรมมากกว่า 8 kb (รายงาน div. แยก 5). ที่
ในกรณีอื่นทั้งหมด lichnik ของทีมจะถูกเรียกที่vikonnnі chergovoi

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

คำสั่งสองไบต์ (หนึ่งคำ) ที่ต้องการความจุหน่วยความจำได้อย่างง่ายดาย
เชียร์ขึ้นรู้จำนวนทีมที่ชนะ ที่อยู่ในหน่วยความจำแบบสัมบูรณ์
กรัม
opis MK) เป็นที่เคารพในคำพูดเช่นกัน

ข้าว. 2.1.บล็อกไดอะแกรมทั่วไปของไมโครคอนโทรลเลอร์ AVR

Z

Amitki ในระยะขอบ

มาขยับก้นของที่อยู่ cіkavogo vpadku ซึ่งก็คือ
คำสั่งสำหรับอ่านค่าคงที่จากหน่วยความจำ LPM (เช่นเดียวกับ ELPM สำหรับ MK จากหน่วยความจำโปรแกรม
128

กิโลไบต์และอื่น ๆ ) ทีม Tsya ใกล้จะอ่านหนังสือแล้ว ไบต์ที่อยู่ที่ระบุ

ถึงจำนวน RON อาวุโสสองคน (อนุญาตสิ่งที่เรียกว่า Z register Z, div. Dalі) อย่างไรก็ตาม ไม่ใช่เพื่อ
ทำลาย "ความบริสุทธิ์" ของแนวคิดการจัดระเบียบหน่วยความจำของโปรแกรมสำหรับคำผู้ค้าปลีก
พวกเขาเพียงแค่สับสนโดยระบุในคำอธิบายว่าเมื่อมีการเรียกคำสั่ง LPM คำสั่ง old
มี 15 อันดับในการลงทะเบียนที่อยู่ Z คำในความทรงจำและเลือกอันดับที่อายุน้อยที่สุด
จูเนียร์หรืออาวุโส byte

คำ. อย่างไรก็ตาม มันง่ายที่จะจำไว้ว่าลำดับไบต์ของหน่วยความจำคือ
ซึ่งเหมาะสมเทียบเท่า

ที่อยู่ที่เหลืออยู่ของหน่วยความจำที่ชัดเจนของโปรแกรมสำหรับรุ่นเฉพาะ
แสดงโดยค่าคงที่

สำหรับการล็อคตัวควบคุมของ AVR จะต้อง

แก้ไขปัญหาโปรแกรมด้วยที่อยู่ $0000 ไม่มีการหยุดชะงักในโปรแกรม
ถ้าอย่างนั้นจากที่อยู่tsієїคุณสามารถเริ่มแอปพลิเคชันได้ ที่บริการฝั่งตรงข้าม

ชาสำหรับqієyuที่อยู่roztashovuєtsya t.z โต๊ะ การซ่อมแซม vector_v, รายละเอียด-
їїเกี่ยวกับ yaku mi saymemo ใน แยก 4і 5 . ที่นี่มีความสำคัญน้อยกว่าครั้งแรก
ตารางนี้ (สำหรับที่อยู่เดียวกัน $0000) ต้องวาง vector . ส่วนลดเสมอ

ซึ่งแนะนำขั้นตอนที่เสร็จสมบูรณ์เมื่อ MK ลดราคา (รวมถึง
เมื่อชีวิตมี)

พี

ริมิทกะ

ในแอสเซมเบลอร์ AVR คุณสามารถกำหนดตัวเลขสิบหกใน "ปาสกาล"
รูปแบบที่นำหน้าด้วยเครื่องหมาย $ ซึ่งรูปแบบการย้าย C (0x00) ถูกต้อง และแกน
วิธี "อัจฉริยะ" (00h) ไม่ทำงาน รายละเอียดความหมายของตัวเลข
ระบบการคำนวณใน AVR-assembler div แยก 5.

ในส่วนที่เหลือของที่อยู่หน่วยความจำของตัวควบคุมโปรแกรมของตระกูล Mega
ล้าหลัง zavantazhuvach- โปรแกรมพิเศษตามความสนใจ
ความมีชีวิตชีวาของโปรแกรมประยุกต์จากภาระหน้าที่หลักของหน่วยความจำ จิตใจใครดีกว่ากัน
ของเวกเตอร์ดร็อปและตารางทั้งหมดของเวกเตอร์ของการรีเซ็ต (นั่นคือ อันที่จริง on
ที่อยู่เริ่มต้นซึ่งโปรแกรมเริ่มต้น) คุณสามารถเปลี่ยนได้
neno โดยการติดตั้งศูนย์การกำหนดค่าพิเศษ (div. แยก 5).

หน่วยความจำข้อมูล (RAM, SRAM)

ในมุมมองของหน่วยความจำของพื้นที่ที่อยู่โปรแกรมของหน่วยความจำของข้อมูลจะถูกระบุ
ไบต์ต่อไบต์ (และชี่ไม่ใช่คำต่อคำ) การกำหนดที่อยู่เป็นแบบเส้นตรง ไม่มีส่วนย่อยใดๆ
ด้านข้าง เซ็กเมนต์ หรือธนาคาร ตามปกติในระบบอื่น
ครอบครัว MK จิ๋วจิ๋ว (รวมถึง Tiny1 X i Tiny28) ในหน่วยความจำของข้อมูล เช่น tacos
vittya, อย่ายุ่ง, ผสมผสานกับ register file (RON) และ input registers เท่านั้น
โซ-วิสนอฟกา (RVV) ในรุ่นอื่น ปริมาณของ SRAM ในตัวจะผันผวนใน
128 ไบต์สำหรับตัวแทนของตระกูล Tiny (เช่น สำหรับ ATtiny2313) สูงสุด 4–8 kb
สำหรับรุ่นเมก้ารุ่นเก่า
พื้นที่แอดเดรสของหน่วยความจำข้อมูลสแตติก (SRAM) แบ่งออกเป็น
บางพื้นที่แสดงในรูป 2.2. มองเห็นได้บางส่วนด้วยการเติมสีเข้ม vid-
sho รีบไปที่ vbudovanoy SRAM เพื่อไปยังที่อยู่ของ roztashovu -
ale address รีจิสเตอร์พื้นที่ (32 ไบต์แรกยืม RON อีก 64 -
RVV). สำหรับรุ่น Mega รุ่นเก่าที่มีโครงสร้างพับ (เช่น ATmega128)
64 การลงทะเบียนของการแนะนำและการแนะนำอาจไม่เพียงพอดังนั้นในพวกเขาสำหรับเพิ่มเติม
RVV เพิ่มเติมสามารถเห็นได้ว่าเป็นพื้นที่ที่อยู่ขนาดใหญ่ (สำหรับ $60 สูงสุด
เป็นไปได้น้อยในไบต์ที่กล่าวถึงค่าของ $FF ทันทีที่การลงทะเบียนดังกล่าวสามารถ
อยากบู๊ทั้ง 160)

Z

Amitki ในระยะขอบ

ในสถาปัตยกรรมของ MK AVR แนวคิดของ "การแนะนำ - การเยี่ยมชม" ถูกใช้โดยประสาทสัมผัสสองแบบ:

ก่อนอื่น є "เสียพอร์ต I / O" อย่างที่เราเห็นใน บทที่ 3.
ในอีกทางหนึ่ง "การลงทะเบียนการเข้าและออก" (RVV) ในโครงสร้าง AVR เรียกว่าการลงทะเบียน
yakіเข้าถึงส่วนประกอบเสริมได้อย่างปลอดภัยzvnіshnіkh

nіyuไปยัง GPU สำหรับ RAM จำนวนเล็กน้อย (รวมถึงพอร์ตการแนะนำการเยี่ยมชม) เอา pid-
ขยายโครงสร้างของ MC AVR ไปยังการกำหนดค่าเสียงของส่วนบุคคล
คอมพิวเตอร์, ยกเลิกการเข้าถึงการโทรใด ๆ ตามวันที่ไปยังโปรเซสเซอร์กลาง
ส่วนประกอบ, ครีมหน่วยความจำ, zdijsnyuєtsyaผ่านพอร์ต I/O

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

สำหรับรุ่นเมกะบางรุ่น (ATmega8515, ATmega162, ATmega128, ATmega2560
นั้นใน) ความเป็นไปได้ของการเชื่อมต่อหน่วยความจำภายนอกได้ถึง
64 KByte
วาไรตี้ (SRAM, Flash หรือ EEPROM) พร้อม pa-
อินเทอร์เฟซแบบขนาน
เป็นสิ่งสำคัญที่จะไม่นำที่อยู่ของ RON และ RVV ออกไป
mandrivka ที่ OZP danikh
หน่วยความจำเก่าของรุ่นเก่าเมก้า
ที่อยู่สูงสุดซึ่งล้อมรอบด้วยค่า
$FFFF): ดังเช่นในรุ่น MK ที่เฉพาะเจาะจง
SRAM 512 ไบต์ และพื้นที่รีจิสเตอร์ถูกยืม
96 ไบต์แรก (สูงถึง $60) จากนั้นที่อยู่ SRAM
ยืมพื้นที่ที่อยู่จาก $0060 ถึง $ 025F
(tobto จาก 96 ถึง 607 รวม) Kinets
vbudovana หน่วยความจำของข้อมูลมีความหมายโดยคงที่

ข้าว. 2.2.พื้นที่ที่อยู่

หน่วยความจำข้อมูลคงที่ (SRAM)

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

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

ที่ลงทะเบียน

) แข็งแรงพอๆ กัน

รายการใน SRAM ที่ศูนย์ที่อยู่ (

). ที่อยู่ในหน่วยความจำสำหรับ RON sov-

ตกด้วยเลขเดียวกัน ในเวลาเดียวกันสำหรับรายการที่ไม่ใช่ระดับกลางใน RVV ข้างหลังเขา
ที่อยู่ในหน่วยความจำไปยังหมายเลขของการลงทะเบียนถัดไปเพิ่ม $ 20: ดังนั้นการลงทะเบียนของสิทธิ์

ซึ่งสำหรับรุ่นเพิ่มเติมคือ roztashovuetsya บนพื้นฐานของตาราง RVV สำหรับที่อยู่
$3F ที่อยู่หน่วยความจำ $5F ติดตั้ง RON และ RVV ระบุที่อยู่โดยตรง pa-
m'yati ไม่สามารถจัดการได้: บันทึกดังกล่าวมักใช้สองมาตรการเพื่อแทนที่อย่างใดอย่างหนึ่งโดยเฉพาะ
ไปหาทีมอื่นเพิ่มแม้ว่าคนอื่นจะอนุญาตให้คุณข้ามการแลกเปลี่ยนได้
เกี่ยวกับการจัดการ deakim RVV Ale yakscho єโปรแกรมพร้อม pratsyuyu-
s SRAM จากนั้นเมื่อแทนที่โปรเซสเซอร์รุ่นเก่าคุณจะต้อง
เคารพผู้ที่พวกเขามีที่อยู่ SRAM รุ่นเยาว์สามารถบิดได้
RVV เสริม

บทที่ 2

หน่วยความจำข้อมูลแบบไม่ลบเลือน (EEPROM)

MK AVR ทุกรุ่น (Crimson นำมาจาก ATtiny11) สามารถสร้างได้
EEPROM สำหรับเก็บค่าคงที่และข้อมูลเมื่อเปิดเครื่อง
สำหรับรุ่นอื่นๆ ระดับเสียงจะแตกต่างกันไปตั้งแต่ 64 ไบต์ (ATtiny1x) ถึง 4 kb (เก่ากว่า
รุ่นเมกะ) จุดสิ้นสุดของ EEPROM ถูกระบุด้วยค่าคงที่

(มูลค่า

ได้รับการแนะนำสำหรับ AVR รุ่นล่าสุดเท่านั้น
tsієїค่าคงที่іnоdіїїเกิดขึ้นได้รับการแต่งตั้งด้วยตัวเอง) จำนวนรอบการส่งสัญญาณซ้ำ
การเข้ารหัส EEPROM สามารถเข้าถึง 100,000
เดาว่า EEPROM ถือว่าเป็น Flash ที่สั่นได้
gramuvanya ไบต์ต่อไบต์ (โดยหลักการแล้ว navit ไบต์ต่อไบต์ แต่วิธีนี้ไม่สามารถใช้ได้
โคริสตุวัช) อย่างไรก็ตาม สำหรับตระกูล EEPROM รุ่นเก่า เช่น flash-memory
โปรแกรม, maєstorіnkovuorganіzatsіyu, schopravda, storіnkiqіเล็ก - มากถึง
สกิน 4 ไบต์ ในทางปฏิบัติ เช่น การเขียนโปรแกรม EEPROM ตามลำดับ
ช่อง (tobto ผ่านอินเทอร์เฟซการเขียนโปรแกรม SPI) іเมื่อบันทึกі
อ่าน EEPROM จากโปรแกรม ฟีเจอร์นี้ไม่สำคัญ และการเข้าถึงคือ
іsnuєไบต์ต่อไบต์
การอ่านจาก EEPROM ทำได้โดยการยืดรอบเครื่องหนึ่งรอบ (จริง on
ในทางปฏิบัติจะดำเนินการในวงจรโชติริ แต่โปรแกรมเมอร์จะต้องปฏิบัติตาม cym พิเศษ
ไม่จำเป็นต่อสังคม) และแกนของการบันทึกใน EEPROM นั้นดีกว่าอย่างมาก
และก่อนหน้านั้นไม่ใช่รหัสที่กำหนดไว้อย่างแน่นอน: วงจรสำหรับการเขียนหนึ่งไบต์สามารถ
ใช้เวลาตั้งแต่ 2 ถึง ~ 4 ms หรือมากกว่า กระบวนการบันทึกถูกควบคุมโดย RC-
เครื่องกำเนิดความถี่ที่ไม่เสถียร (ที่แรงดันไฟฟ้าต่ำ
ochіkuєtsyaการบันทึก scho จะยิ่งใหญ่กว่า) สำหรับชั่วโมงดังกล่าวด้วยความพิเศษดังกล่าว
ที่ความถี่เดียวกันของ MK vstigaє vikonati kіlkaพันคำสั่งไปยังโปรแกรม
ขั้นตอนการบันทึกเพื่อความถูกต้อง เช่น จำเป็นต้องเย็บ
เพื่อให้ในขณะนี้การบันทึกไม่ได้ "ตัด" การเขียนใหม่ (รายงานเกี่ยวกับ div. หัวหน้า
วี 4
і 9 ).
ความสามารถในการพับหัวด้วย EEPROM ของหุ่นยนต์ - ความเป็นไปได้ของความยืดหยุ่น
ถือครองด้วยแรงดันไฟต่ำไม่เพียงพอของชีวิตในขณะนี้
วิมิคานี่ พึงระลึกไว้เสมอว่าเมื่อแรงดันไฟเปลี่ยน ชีวิตก็ขึ้นอยู่กับ
เกณฑ์ที่มีประสิทธิภาพ (ต่ำกว่าเกณฑ์ของงานที่มั่นคง แต่ไม่เพียงพอสำหรับการทำใหม่
ปิด) ผ่าน colivannya ของแรงดันไฟฟ้าของ MK มันเริ่มปิด
ไม่มีคำสั่งใด นอกจากนี้ คุณสามารถตั้งค่าขั้นตอนสำหรับการเขียนไปยัง EEPROM ยักโช
โกหกว่าคำสั่ง MK AVR ทั่วไปนั้นนับเป็นสิบส่วนไมโครวินาที
มันเป็นที่ชัดเจน
แรงดันไฟฟ้าเป็นศูนย์สำหรับชั่วโมงที่ต้องการ
สารกันบูดชนิด LM7805 พร้อมค่าความจุคอนเดนเสทที่แนะนำ
rіvที่ทางเข้าและทางออกใน EEPROM จะถูกซิปอย่างหลีกเลี่ยงไม่ได้
อย่างสงบในหุบเขาครึ่งหนึ่ง
ปัญหานี้ไม่ผิดเพราะค่าคงที่ถูกเขียนไปยัง EEPROM
เมื่อตั้งโปรแกรม MK และขั้นตอนการบันทึกที่รายการทุกวัน (ประมาณนั้น
วิธีสร้างไฟล์ที่มีข้อมูลสำหรับ EEPROM, div. แจกจ่าย "คำสั่งและหน้าที่
tsії" บทที่ 5
). ที่ดีคือการบันทึกข้อมูลในสถานการณ์ดังกล่าว ได้รับการยืนยันและกิน-

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

ด้วยข้อควรระวังเบื้องต้นและ tim scho อนุญาตให้เขียน EEPROM - ขั้นตอน -
รา dvuhstupіnchasta (div. แยก 9). ด้วยวิธีอื่นทั้งหมด (และเห็นได้ชัดว่า
ความยิ่งใหญ่อย่างแท้จริง - ใน EEPROM ส่วนใหญ่พวกเขาช่วยปากของคอริสตูวา-
novki และการกำหนดค่าปัจจุบันเมื่อviknennі zhivlennya) ได้รับการยอมรับ
เยี่ยมชมพิเศษ พระคาร์ดินัลและเป็นสากลมากที่สุดคือ
ความแปลกใหม่ของจอภาพปัจจุบันของชีวิตซึ่งจะลด MC ที่สถานี
แรงดันชีวิตที่เปลี่ยนแปลงต่ำกว่าค่าขีดจำกัด Tієї ดี mesti เสิร์ฟ
vbudovaniya เครื่องตรวจจับแรงดันตก (Brown-out Detection, BOD) ใหม่
ใช้งานได้จริงสำหรับรุ่น Tiny และ Mega ทั้งหมด แต่ไม่รวมเอกสารทางเทคนิค
ในเวลาเดียวกัน เพื่อประโยชน์สูงสุดของการทำซ้ำของโยคะและการตรวจสอบเสียงของชีวิต
รายงานเกี่ยวกับแผน BOD และแผนก MK ต้าหลี่ซึ่งดิวิชั่นแต่เกี่ยวกับซอฟต์แวร์
mu EEPROM และต่อมามาพร้อมกับ її vikoristanny divs แยก 9.

วิธีการตอกบัตร

วิธีการตามรูปแบบบัญญัติของการตอกบัตร MC คือการเชื่อมต่อของตัวสะท้อนควอทซ์กับ
เหมาะสำหรับ visnovkas (รูปที่ 2.3, เอ). ความจุของตัวเก็บประจุ C1 และ C2 สำหรับค่าทั่วไป
ในบางครั้งมีความผิดในการเป็น 15–22 pF (สามารถลดเหลือ 33–47 pF ด้วยหนึ่ง
โปรโมชั่น timchasovym) โมเดล Tiny และ Mega ส่วนใหญ่มี
มีบิตการกำหนดค่าพิเศษ

ซึ่งช่วยให้คุณควบคุม

สันติภาพ. เมื่อใส่บิตที่สองเข้าไปใน 1 (ค่ายที่ไม่ใช่โปรแกรมมิ่ง)
ช่วงของการเปลี่ยนแปลงของโคลิแวนของเครื่องกำเนิดไฟฟ้าซึ่งฟังดูเป็นไปได้
ช่วงความถี่และpereskodostіykіstที่สำคัญนั่นคือสาเหตุที่โหมด
ไม่แนะนำ. คุณยังสามารถใช้เครื่องสะท้อนเสียงควอทซ์ความถี่ต่ำได้อีกด้วย
(ตัวอย่างเช่น "รายปี" 32 768 Hz) ซึ่งสามารถใช้ตัวเก็บประจุ C1 และ C2 ได้
wati เมื่อติดตั้งแล้ว

มูลค่า 0 ถูกเพิ่มเข้าในคลังสินค้า

ตัวเก็บประจุภายใน MK ที่มีความจุ 36 pF
ตัวสะท้อนควอทซ์สามารถถูกแทนที่ด้วยเซรามิก ผู้เขียนแถวเหล่านี้เข้าไปใน
เรียกใช้ MK ที่ความถี่ที่ไม่ได้มาตรฐาน ผู้ชนะแทนที่ควอตซ์ในลักษณะเดียวกัน
การสลับตัวเหนี่ยวนำขนาดเล็ก
densators 91 pF ความถี่ใกล้ 10 MHz) ซึ่งช่วยให้ trochs ปนเปื้อน
เปลี่ยนขนาดของไดอะแกรม
เห็นได้ชัดว่าการตอกบัตร MK สามารถทำได้จากเครื่องกำเนิดภายนอก (รูปที่ 2.3 ). โอโซ-
มันสะดวกถ้าจำเป็นต้องซิงโครไนซ์ MC กับคอมโพเนนท์ที่ล้าสมัย
nents หรืออย่างอื่นใช้ความถี่ที่แน่นอนของการตอกบัตรโดยเลือกความถี่
เครื่องกำเนิดไฟฟ้า (เช่น ซีรีส์ SG-8002 ของ Epson)
Navpaki หากไม่ต้องการความแม่นยำคุณสามารถเชื่อมต่อการโทร RC-แลนซ์
(รูปที่ 2.3, ใน). ในวงจรนี้ ความจุ C1 สามารถมีค่าอย่างน้อย 22 pF และตัวต้านทาน R1
เลือกจากช่วง 3.3-100 kOhm ความถี่ที่กำหนดให้กับสูตร
F= 2/3 RC. ไม่สามารถติดตั้ง C1 พร้อมกันเพื่อเขียนลำแสงได้ 0 สำหรับการกำหนดค่า-
ตรงกลาง

ตัวเก็บประจุภายใน cim ที่เชื่อมต่อ 36 pF

Nareshti คุณสามารถดูส่วนประกอบที่เกี่ยวข้องและเข้ากันได้
เขา RC-เครื่องกำเนิดไฟฟ้า

บทที่ 2

ค่าความถี่ (1, 2, 4 และ 8 MHz) ความสามารถได้รับการถ่ายทอดมาหลายรุ่นแล้ว
การสร้างความถี่ของเครื่องกำเนิดไฟฟ้าขึ้นใหม่ (รายงาน div. หรือคำอธิบายทางเทคนิค
เฉพาะรุ่น) Qiu mozhlivist dotsilno vikoristovuvat ใน
รุ่นจิ๋วที่มีจำหน่ายในเคสแบบ 8 พิน - นี่คือ visnovki
ใช้สำหรับเชื่อมต่อ resonator หรือเครื่องกำเนิดไฟฟ้าภายนอก
zadiyati іnshih tsіleyเป็น zvichayn porti input-output

ข้าว. 2.3.วิธีการตอกบัตร MK AVR ด้วยชัยชนะ: เอ- เรโซเนเตอร์ควอตซ์

- เครื่องกำเนิดเสียง; ใน - RC-แลนเซอร์

ครอบครัวคลาสสิก RC- ไม่มีเครื่องกำเนิดไฟฟ้าและการกำหนดค่าพิเศษ

tsynykh seredkіvใน tsikh MK นั้นน้อยกว่าอย่างเห็นได้ชัดและในอารมณ์ที่บ้าคลั่งคุณไม่สามารถ

ให้ความเคารพ ไม่เช่นนั้นสำหรับมาตุภูมิอื่น Zamovchuvannyam ตระกูล MK

Tiny และ Mega ได้รับการติดตั้งในค่ายหุ่นยนต์ที่มีเครื่องกำเนิดไฟฟ้าในตัว
ความถี่ 1 MHz (

0001) ดังนั้นสำหรับโหมดอื่นๆ จำเป็นต้อง

ใส่การกำหนดค่าตรงกลางตามลำดับ

(Div. ตาราง 2.1). กับใคร

เลื่อน vrakhovuvati

0000

ค่าที่ฝังบ่อยที่สุดสำหรับแร่ควอทซ์เรโซเนเตอร์ 1111) คือ

มันเป็นไปไม่ได้ที่จะขับโหมดการตอกบัตร MK จากเครื่องกำเนิดเสียงและด้วยเหตุนี้จึงเป็นไปไม่ได้

เริ่มเขียนโปรแกรมโดยไม่ให้ความถี่ในการโทร เกี่ยวกับการติดตั้งที่แนะนำ

ศูนย์การกำหนดค่า kah และเกี่ยวกับคุณสมบัติของ div การเขียนโปรแกรม

แยก 5.

ตาราง 2.1.การติดตั้งศูนย์กำหนดค่าซีเคเซล

โหมดการตอกบัตรแบบเสีย

CKSEL3...0

Dzherelo ตอกบัตร

ความถี่

ความถี่เสียง

ตื่นขึ้น RC-เครื่องกำเนิดไฟฟ้า

ตื่นขึ้น RC-เครื่องกำเนิดไฟฟ้า

ตื่นขึ้น RC-เครื่องกำเนิดไฟฟ้า

ตื่นขึ้น RC-เครื่องกำเนิดไฟฟ้า

Zovnishnya RC-แลนซ์

ส่วนที่ 1 หลักการและหน้าที่ทั่วไปของ Atmel AVR

ตาราง 2.1(เสร็จสิ้น)

CKSEL3...0

Dzherelo ตอกบัตร

ความถี่

Zovnishnya RC-แลนซ์

0.9...3.0 MHz

Zovnishnya RC-แลนซ์

3.0...8.0 MHz

Zovnishnya RC-แลนซ์

8.0...12 MHz

เรโซเนเตอร์ความถี่ต่ำ

แร่ควอทซ์

0.4...0.9 MHz

แร่ควอทซ์

0.9...3.0 MHz

แร่ควอทซ์

3.0...8.0 MHz

1xxx (CKPOT=0)

แร่ควอทซ์

Skidannya

ข้อมูลลื่นไถล (RESET) เรียกว่าการแนะนำโหมด cob ของหุ่นยนต์ MK กับใคร
RVV ทั้งหมดได้รับการติดตั้งในค่ายเพื่อล็อค - ตามกฎแล้วราคาจะเป็นศูนย์ใน
ทุกตำแหน่งสำหรับการตำหนิเล็กน้อย (และแกน RON สามารถรับแรงสั่นสะเทือนได้
ความหมายใดๆ ก็ตาม ถ้าจำเป็น ให้เริ่มต้นด้วยเพลง
ควรติดตั้งค่าของการเปลี่ยนแปลงบน cob ของโปรแกรม (primus)
โปรแกรมหลังจาก Drop-off เริ่มต้นด้วยที่อยู่ไปรษณีย์ (สำหรับล็อค
ที่อยู่ $0000)
ส่วนลดจะถูกเรียกเก็บเสมอเมื่อมีการเปิดใช้งานการดำรงชีวิต Krim tsgogo, dzherelami ถูกทิ้ง
คุณสามารถใช้สิ่งต่อไปนี้: ส่วนลดฮาร์ดแวร์ เพื่อให้อุปทานในระดับต่ำ
แรงดันไฟฟ้าที่อินพุต RESET
rіvenที่ใช้งานอยู่ที่นี่ต่ำและกฎ mi dotrimuvatimemosya); เสร็จ-
nya ไปยังช่วงเวลาตัวจับเวลาจ้องจับผิดที่ติดตั้งไว้ การอ้างอิงโครงการ
บีโอดี. ความหมายของการต่อสู้หนุ่มโชติริโอ

maєสัญญาณ-

lizuvat เกี่ยวกับสิ่งเหล่านั้นต่อหน้า dzherel การขว้างต่อหน้าก็สั่นสะเทือน (fati-
ใหม่ใน 1 บิต 0 - ส่วนลดเมื่อเปิดใช้งาน บิต 1 - ส่วนลดฮาร์ดแวร์ บิต 2 - ปิด
แผนภาพ BOD บิต 3 - ประเภทตัวจับเวลาสงคราม) ในทางปฏิบัติได้รับอนุญาตจากผู้เขียน
stanam tsgogo ลงทะเบียนnadіynovіdіznyayutsya vіdіnshihฟุ่มเฟือย
ตัวจับเวลาลื่นไถล
ทิมชาโซโว) Prote tsya іnformatsіyaสามารถซ้ำซากเช่นในการวิเคราะห์
lyzіทำให้เกิดการหยุดชะงักในเรือนเพาะชำการทำงานของหุ่นยนต์และอุตสาหกรรม (div. แยก 12).
MK รุ่นน้องของตระกูล Tiny (crim ATtiny28) ไม่มี
th "ตัวต้านทานบนเอาต์พุต / RESET สำหรับงานที่จำเป็นคำเตือน
การเชื่อมต่อที่ยอดเยี่ยมของตัวต้านทานภายนอกขนาด 2–5 kOhm ถึง
ความตึงเครียดของอาหาร ผู้เขียนขอแนะนำอย่างยิ่งให้ติดตั้ง
ตัวต้านทานที่ดีสำหรับ AVR รุ่นใดๆ เพื่อให้สามารถใช้ตัวต้านทานได้
คะแนนที่สูงขึ้น (100–500 kOhm)
กับ skidannya ที่ไม่มีประสิทธิภาพ ดังนั้น (หากในคำอธิบายทางเทคนิคแนะนำ

บทที่ 2

(แก้ไขและไม่หลีกเลี่ยง) ไม่เริ่มการติดตั้งตัวเก็บประจุ 0.1-0.5 uF in
เอาต์พุต / รีเซ็ตเป็น "กราวด์" - tse zglazhuє bryazkit naprugi i หลีกเลี่ยงไม่ได้
trohi กระชับด้านหน้าของแรงดันไฟฟ้าที่เพิ่มขึ้นบนเอาต์พุต / RESET por_vnyano
zіzbіlshennyam zhivlennya: ถ้าธรณีประตูมาถึงวงจร spratsovuvannya
skidannya แรงดันไฟฟ้าของอายุการใช้งานของ MK ทั้งหมดได้รับการตั้งค่าแล้ว
สำหรับรุ่น Tiny ที่มีในแพ็คเกจ 8 พิน (ATtiny11–ATtiny15), є-
จิไม่ต้องการ zovn_shnє skidannya, vysnovok /RESET
พอร์ตอินพุต th ด้วยความแตกต่างเพียงเล็กน้อย: เมื่อกำหนดค่า
ติดต่อกับ vyhіd vіn pratsyuєเช่น vysnovok z vіdkritim collector และไม่ใช่เสียงจามรี-
องค์ประกอบตรรกะ (เกี่ยวกับการกำหนดค่าพอร์ต div. แยก 3).
วิธีที่ดีที่สุดในการจัดระเบียบส่วนลดเมื่ออยู่อาศัยเช่น
ได้มีการกล่าวไว้ก่อนหน้านี้แล้ว - การติดตั้งจอภาพเสียงแห่งชีวิต ตัวอย่างเช่น เมื่อ
ไมโครเซอร์กิต MC34064 เป็นที่นิยมสำหรับเครื่องเตรียมอาหาร 5 โวลต์ที่มีเกณฑ์อ้างอิง
4.6 V และค่าทั่วไปใกล้เคียงกับ 300 µA หรือมากกว่ากระแส
อะนาล็อก (เช่น MAX803L พร้อมการหน่วงเวลา 12 μA) เพื่อการอยู่อาศัยของไทรโวลต้า
ต่อวงจร MAX803R (2.6 V) หรือรุ่นที่เหมาะสม DS1816
ด้วยกระแสไฟฟ้าแรงสูง microcircuits ที่ระบุไว้ทั้งหมดเป็น trivivid (มีชีวิตอยู่ "โลก-
la" ดูแลโดยฝ่ายจัดการส่วนลด) และอาจฝากไว้กับผู้เปิดบัญชีถึง
ลองนึกถึงการติดตั้งตัวต้านทานแบบ "ดึงขึ้น" ชั่วโมงปกติ spratsovuє-
สำหรับไมโครเซอร์กิตที่มีแรงดันไฟลดลง - ไมโครวินาที ซึ่งปลอดภัย
บันทึกข้อมูลจาก EEPROM ในเวลาที่แรงดันไฟฟ้าเพิ่มขึ้น กลิ่นเหม็นจะปลอดภัย
timchasov zatrimka ที่ยอดเยี่ยม (ประมาณหนึ่งในสี่ของวินาที) ซึ่งช่วยให้คุณ
zdіysnyuvati skidannya MK ปราศจากสิ่งสกปรก
มีการแนะนำรูปแบบ BOD เพื่อให้แน่ใจว่าชั่วโมงการทำงานในลำดับของไมโครวินาที
zatrimkoy เพื่อเปลี่ยนเป็นค่ายทำงานหลังจากการต่ออายุแรงดันไฟฟ้า, op-
แบ่งตามสิ่งปลูกสร้างเหล่านี้ เหมือนกับดักของการลื่นไถล (komіrki

ความถี่สัญญาณนาฬิกา 4 MHz) และป้อนค่าที่เป็นไปได้สูงสุดที่เป็นไปได้ ~ 68 ms can
ปรากฏว่าไม่เพียงพอต่อการขจัดความสกปรก ซึ่งเป็นโทษสำหรับการลดลงของ
แรงดันไฟสดของ dzherel อิสระ ในการเลือกโหมดหุ่นยนต์ BOD
เก็บเกี่ยวสามศูนย์การกำหนดค่า

ดังนั้นกลายเป็น:

111 (การตั้งค่ามาตรฐาน) - วงจร BOD ถูกปิดใช้งาน

101 - รวม BOD ที่มีความพรุนของ spratsovvannya 2.7;

100 - ตรงตามเกณฑ์ของ 4.0 Art

เป็นสิ่งสำคัญที่จากมุมมองของความน่าเชื่อถือของงาน ความแตกต่างระหว่าง .จะน้อยลง
ความกดดันของชีวิตและธรณีประตูของ spratsovuvannya ของจอภาพชีวิต
vbudovanoїโครงการ BOD ไม่ว่า) จะดีกว่า - ด้วยการตัดผมขนาดเล็ก
ไม่ไวต่อจอภาพ ทุกคนสามารถรับรู้ถึงการป้องกันได้
เข้าสู่ kshtalt ของการแก้ต่างของ mimotile ของการเกิดใหม่ที่ยอดเยี่ยม หนึ่ง-
ก่อนราคาขายปลีก ต่อไปนี้ ประกันระหว่างทำมาหากิน จะเพิ่ม ประเภทของแบตเตอรี่ เช่น
สำหรับแบตเตอรี่แอ่งน้ำแบบ "นิ้ว" และจอภาพชีวิต rozrahun-
tann ที่ 4.7 V แรงดันไฟส่วนเกินบนองค์ประกอบหลัง

ฉันได้พูดมากกว่าหนึ่งครั้งหรือสองครั้งว่าต้องเริ่มการพัฒนา MK ด้วยแอสเซมเบลอร์ ผู้ที่ได้รับมอบหมายหลักสูตรทั้งหมดบนเว็บไซต์ (แม้ว่าจะไม่ใช่หลักสูตรสุดท้าย แต่ฉันจะจัดอันดับให้ดูดีเป็นขั้นเป็นตอน) ไม่เป็นไร ผลลัพธ์จะไม่เกิดขึ้นในวันแรก จากนั้นคุณจะได้เรียนรู้ที่จะเข้าใจสิ่งที่คุณเห็นในคอนโทรลเลอร์ของคุณ คุณรู้วิธีฝึกฝนไม่ใช่โดยการลอกเลียนแบบชีวิตของคนอื่นและพยายามเข้าใจว่าทำไมมันถึงหยุดฝึกฝน นอกจากนี้ C ยังสร้าง beadcode ได้ง่ายกว่ามาก ซึ่งคุณสามารถใช้กับ pitchfork ในช่วงเวลาที่ไม่เหมาะสมที่สุด

น่าเสียดายที่ทุกคนต้องการผลลัพธ์ที่ไม่ถูกต้อง เพื่อที่ฉันจะได้ vyrishiv pіtiจากอีกด้านหนึ่ง - zrobiti สินบนCі แต่ด้วยการสาธิตของโยคีของbіzniที่ต่ำกว่า โปรแกรมเมอร์ที่ฝังตัวที่ดีมักจะรักษาจมูกของเขาไว้ให้ดี ไม่ยอมให้เขาเหยียบเท้าโดยไม่ได้รับอนุญาต เรามาเริ่มกันที่รหัส C กันก่อน มาดูกันว่าใครที่สร้างคอมไพเลอร์และทุกอย่างถูกต้องทำงานอย่างไร :)

ในทางกลับกัน จุดแข็งของ C คือการพกพาโค้ด Yakshcho, zvіsno, เขียนทุกอย่างถูกต้อง อัลกอริทึมของการทำงาน Podіlyayuchi และ їх їх іхніรับรู้ที่ส่วนต่างของโครงการ ในการถ่ายโอนอัลกอริธึมไปยัง MK อื่นก็เพียงพอที่จะเขียนเฉพาะลูกบอลอินเทอร์เฟซใหม่ทั้งหมดก่อนการเปิดตัวและควรลบรหัสการทำงานทั้งหมด เห็นได้ชัดว่าฉันอ่าน วันนี้เข้าใจง่ายขึ้นตั้งแต่แรกเห็น (ต้องการ ... ฉันเช่นฉันไม่สนใจว่าเกิดอะไรขึ้น - ฉันต้องการฉันต้องการ asm :)) แต่ฉันรู้ ฉันจะเขียนทุกอย่างถูกต้อง ฉันจะให้ความเคารพต่อช่วงเวลาเหล่านี้ด้วย

ในฐานะที่เป็นpіddoslіdna zalozka บนyakіyจะถูกวางส่วนซ้ายของแอปพลิเคชันทั้งหมดในอนาคตการชำระภาษีของฉัน

โปรแกรม C แรกสำหรับ AVR

เลือกคอมไพเลอร์และสภาพแวดล้อมที่ติดตั้ง
สำหรับ AVR ไม่มีคอมไพเลอร์ที่แตกต่างกัน:
Nasampered tse IAR AVR C- อาจได้รับการยอมรับอย่างแจ่มแจ้งว่าเป็นคอมไพเลอร์ที่ดีที่สุดสำหรับ AVR เพราะ ตัวควบคุมทำงานอย่างใกล้ชิดกับ Atmel และโทรสารด้วย IAR เอลต้องจ่ายทุกอย่าง และคอมไพเลอร์นี้ไม่ได้เป็นเพียงซอฟต์แวร์เชิงพาณิชย์ที่มีราคาแพงเท่านั้น แต่ยังเป็นการพัฒนาที่ล้ำสมัยในการสร้าง ซึ่งคุณเพียงแค่ต้องคอมไพล์ในรูปแบบใหม่ ฉันไม่ได้สร้างมิตรภาพกับเขาจริงๆ โครงการเน่าเปื่อยด้วยการให้อภัยที่ยิ่งใหญ่ในขั้นตอนการเชื่อมโยง (pіznіshe z'yasuvav, sho buv crooked crack)

ไอเดียอื่นๆ WinAVR GCC- ฮาร์ดคอมไพเลอร์ที่ปรับให้เหมาะสม โอเพ่นซอร์สใหม่ ข้ามแพลตฟอร์ม zagalom หนวดแห่งความสุขในชีวิต สามารถรวมไวน์จำนวนมากขึ้นใน AVR Studio ได้ ช่วยให้คุณปรับแต่งได้ที่นั่น ซึ่งสะดวกกว่า Zagalom ฉันเลือกโยคะ

เช่นกัน є CodeVision AVR C- คอมไพเลอร์ยอดนิยม กลายเป็นที่นิยมด้วยการเชื่อมโยงเพื่อความเรียบง่าย คุณสามารถทำงานกับโปรแกรมในรูปแบบใหม่สำหรับปลาทะเลชนิดหนึ่งของ hvilin - ต้นแบบของรหัสเริ่มต้นที่คุณต้องการ spry ประทับการเริ่มต้นมาตรฐานไม่ว่าจะเป็นหูดชนิดใดก็ได้ พูดตามตรง ดูเหมือนว่าฉันจะสงสัยในสิ่งใหม่ ราวกับว่าฉันมีโอกาสแยกส่วนโปรแกรมที่เขียนโดยคอมไพเลอร์ โจ๊กดูเหมือนจะออกมาไม่ใช่รหัส Zhakhliva มีความเสียหายต่อร่างกายและการดำเนินการที่ไม่จำเป็นจำนวนมาก ซึ่งทำให้เกิดรหัสที่ไม่อ่อนแอและรหัส Swidcode จำนวนมาก อืม บางที DNA ก็ได้รับการอภัยโทษ ที่เขียนเฟิร์มแวร์ฟรี บวกไวน์ถ้าคุณต้องการเพนนี ไม่รวยเหมือน IAR แต่มีเหตุผล และในโหมดสาธิต คุณสามารถเขียนโค้ดได้ไม่เกิน 2kb
รอยร้าวนั้นใหญ่มาก แต่ถ้าคุณขโมยก็นับล้านในแง่ของ IAR :)

เพิ่มเติม є Image Craft AVR Cі MicroCในไมโครอิเล็กทรอนิคส์ ไม่มีเลย ไม่มีเลย มีโอกาสที่จะดิ้นได้ แต่แกน SWGสรรเสริญแล้ว ไมโครปาสกาล, movlyav, มิดเดิลแวร์ zruchne zruchne ของการเขียนโปรแกรมไลบรารีนั้น ฉันคิดว่า MicroC จะไม่ดัง แต่จะจ่าย

อย่างที่บอกไปฉันเลือก WinAVRด้วยเหตุผลสามประการ: ฟรี ผสานรวมเข้ากับ AVR Studio ได้ และส่วนใหญ่เขียนเพียงรูเล็กๆ ในโค้ดสำเร็จรูปสำหรับชีวิตทุกประเภท

ดังนั้นดาวน์โหลดการติดตั้ง WinAVR และ AVR Studio ของคุณเอง เริ่มต้นสตูดิโอกัน จากนั้นสัตว์ร้ายจะได้รับ WinAVR และไปที่สตูดิโอเมื่อเห็นปลั๊กอิน ฉันแนะนำให้ติดตั้ง WinAVR ด้วยเส้นทางสั้น ๆ โดยไม่ตั้งใจ ไปที่ C:WinAVR และตัวคุณเองจะไม่สามารถซื้อปัญหากับเส้นทางได้

การสร้างโครงการ
อ๊อตเช่ ตั้งสตูดิโอแล้ว กรี๊ดดดด ได้เวลาลองตั้งโปรแกรมแล้ว เริ่มจากง่ายที่สุดง่ายที่สุด เรียกใช้สตูดิโอ เลือกโปรเจ็กต์ใหม่ที่นั่นในฐานะคอมไพเลอร์ AVR GCC และป้อนชื่อโปรเจ็กต์

ฟิลด์การทำงานที่มีไฟล์ *.c ว่างเปล่าจะปรากฏขึ้น

ตอนนี้คุณไม่สามารถตั้งค่าสำหรับแสดงเส้นทางที่บุ๊กมาร์กของสตูดิโอได้ สำหรับผู้ที่เป็นความชั่วร้ายที่อยู่:
เครื่องมือเมนู - ตัวเลือก - ทั่วไป - FileTabs และเลือกจากรายการแบบเลื่อนลง "ชื่อไฟล์เท่านั้น" มิฉะนั้นจะเป็นไปไม่ได้ที่จะฝึกฝน - จะมีแท็บไม่เกินสองแท็บบนหน้าจอ

เสร็จสิ้นโครงการ
สำหรับผู้เริ่มต้น วิธีคลาสสิกในการสร้างไฟล์ make คือการอธิบายความผิดพลาดทั้งหมด ฉันอาจจะใช่ สวัสดีสิ่งที่เป็นไวรัสใน povnistyu іntegrovanih IDE nachebto uVisionหรือ AVR Studio tsey pіdhіdєมนุษย์ต่างดาวอย่างลึกซึ้ง สำหรับ robitimu นั้นสำหรับเขาเอง หนวดด้วยความช่วยเหลือของสตูดิโอ

ติ๊กที่ปุ่มเกียร์


จุดประสงค์ในการปรับแต่งโปรเจ็กต์ของคุณ หรือมากกว่า ปรับแต่งการสร้างไฟล์ make โดยอัตโนมัติ ในด้านแรก คุณจะต้องป้อนความถี่ในการฝึกซ้อมครั้งต่อไปของ MC ของคุณเท่านั้น มันคุ้มค่าที่จะนอนในรูปแบบของการต่อสู้ f'yuz ดังนั้นจึงเป็นสิ่งสำคัญที่เรามีความถี่ 8000000 Hz
เป็นวิธีเดียวกันกับลำดับของการเพิ่มประสิทธิภาพ ในขณะเดียวกันก็มีค่าใช้จ่าย -Os tse การปรับให้เหมาะสมสำหรับการขยาย ตราบใดที่ยังเพียงพอ คุณสามารถลองเล่นกับพารามิเตอร์นี้ -O0 ค่าใช้จ่ายในการเพิ่มประสิทธิภาพใน zagali

ขั้นตอนต่อไปคือการเฆี่ยนเส้นทาง ก่อนที่คุณจะเพิ่มไดเร็กทอรีของโครงการของคุณที่นั่น - คุณต้องเพิ่มไลบรารีของบุคคลที่สามที่นั่น รายการจะมีเส้นทาง ".\"

สร้างไฟล์ของรุ่น คุณสามารถดูในโฟลเดอร์เริ่มต้นของโครงการของคุณ เพียงแค่ไปดูว่ามีอะไรบ้าง


สำหรับตอนนี้ทุกอย่างสำหรับตอนนี้ นูนตัวอักษรตกลงและไปที่ทางออก

คำชี้แจงปัญหา
กระดานชนวนที่สะอาดเป็นจินตนาการที่ดูเหมือนเป็นความคิดที่ฉลาด ดังนั้นคุณจึงไม่ต้องใส่ไดโอดซ้ำซากจำเจ เอาเลย เอาจงอยปากข้างเขาแล้วเชื่อมต่อกับคอมพิวเตอร์ - ฉันไม่รู้ว่าฉันกลัวอะไร

ฝึกแบบนี้:
เมื่อมาถึงพอร์ต COM (รหัส 0x31) ไดโอดจะถูกยิง และเมื่อศูนย์มาถึง (รหัส 0x30) ไดโอดจะดับ ยิ่งกว่านั้น ทุกสิ่งทุกอย่างถูกทำลายลงจากการจัดเรียงใหม่ และพื้นหลังจะเป็นเพียงชั่วพริบตา เพียงแค่มีความรู้สึก

การเลือกโครงการ
เราจำเป็นต้องเชื่อมต่อโมดูลตัวแปลง USB-USART กับปลั๊กไมโครคอนโทรลเลอร์ USART สำหรับสิ่งนี้เราใช้จัมเปอร์ที่มีสายสองเส้นแล้วโยนมันลงบนหมุด ดังนั้นคอนโทรลเลอร์ Rx จึงเชื่อมต่อกับตัวแปลง Tx และตัวแปลง Tx กับคอนโทรลเลอร์ Rx

Weide แกนผลลัพธ์จะเป็นดังนี้:


ไม่เห็นจะเกี่ยวกันเลยว่าจะตัดสินใจ visnovkiv กิน ลื่น เป็นมาตรฐาน

เราเขียนรหัส

ฉันจะทำให้แน่ใจว่าจะไม่ติดอยู่กับคำอธิบายของหนัง Sі โดยเฉพาะ สำหรับแหล่งนี้ ปริมาณของวัสดุนั้นมหาศาล เริ่มจากคลาสสิก "Mova Programming C" ในรูปแบบของ K & R และลงท้ายด้วยคู่มือต่างๆ

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

อย่างไรก็ตามที่นั่นยังไม่ได้โอนบททั้งหมด แต่ฉันคิดว่าราคาไม่นาน

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

เราเพิ่มห้องสมุด
ก่อนที่เราจะเพิ่มความต้องการห้องสมุดและหัวเรื่องที่มีชื่อ Adzhe Sі tse เป็นภาษาสากล และคุณต้องอธิบายว่าเราสามารถทำอะไรกับ AVR ได้บ้าง ดังนั้นให้เขียนในแถวผลลัพธ์:

1 #รวม

#รวม

ไฟล์นี้อยู่ในโฟลเดอร์ WinAVRและในที่ใหม่มีคำอธิบายของรีจิสเตอร์และพอร์ตที่ใช้แล้วของคอนโทรลเลอร์ ยิ่งกว่านั้นทุกอย่างมีไหวพริบที่นั่นโดยผูกมัดกับคอนโทรลเลอร์เฉพาะซึ่งส่งโดยคอมไพเลอร์ผ่าน ทำไฟล์พารามิเตอร์ MCUและในการส่งการเปลี่ยนแปลงไปยังโปรเจ็กต์ของคุณ ให้รวมไฟล์ส่วนหัวพร้อมคำอธิบายที่อยู่ของพอร์ตทั้งหมดและลงทะเบียนตัวเองบนคอนโทรลเลอร์ อักษะจามรี! หากไม่มี คุณก็ทำได้ แต่สะกดชื่อทะเบียนสัญลักษณ์ในช่องกาเครื่องหมาย SREG หรือ UDR ไม่ได้ และจำที่อยู่สกินในช่องกาเครื่องหมาย "0xC1" ไม่ได้ แต่อย่าทำให้ปวดหัว

ทีมงานเอง #รวม<имя файла> ให้คุณเพิ่มลงในโปรเจ็กต์ของคุณในไฟล์ข้อความใดก็ได้ เช่น ไฟล์ที่มีคำอธิบายฟังก์ชันหรือโค้ดอื่นๆ ดังนั้นคำสั่งจึงสามารถทราบไฟล์และระบุเส้นทางไปยังโครงการของเรา (ไดเร็กทอรี WinAVR ได้รับการลงทะเบียนไว้แล้วโดยค่าเริ่มต้น)

ฟังก์ชั่นหลัก.
โปรแกรม My C ประกอบด้วยฟังก์ชันทั้งหมด กลิ่นเหม็นสามารถซ้อนกันและเรียกว่าทีละตัวในลำดับใดก็ได้และในรูปแบบต่างๆ ฟังก์ชั่นผิวหนังอาจมีพารามิเตอร์obov'yaskovіสามตัว:

  • ความหมายที่เปลี่ยนไป เช่น บาป(x)เปลี่ยนค่าเป็นไซน์ของ x เช่นเดียวกับคณิตศาสตร์ที่สั้นกว่า
  • พารามิเตอร์ที่ส่ง tsey x
  • ร่างกายของการทำงาน

ค่าทั้งหมดที่โอนและหมุนเวียนอาจเป็นประเภทเดียวกัน เหลืออยู่ในข้อมูล

โปรแกรม C มีความผิดในฟังก์ชั่นการแก้แค้นหรือไม่ หลักเป็นจุดเริ่มต้นไปยังโปรแกรมหลัก มิฉะนั้น จะไม่ใช่ C :) สำหรับการมีอยู่ของ main ในใจของคนอื่นจากไฟล์นับล้าน คุณสามารถเข้าใจว่าส่วนหลักของโปรแกรมคืออะไร ดวงดาวเริ่มต้นใหม่ทั้งหมด แกนฉันตั้ง:

1 2 3 4 5 int main (เป็นโมฆะ) (ส่งคืน 0;)

int main(เป็นโมฆะ) ( return 0; )

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

มาดูกันว่าเราถูกปล้นอะไร
intชนิดข้อมูลเดียวกับที่ฟังก์ชันหลักเปลี่ยน

เห็นได้ชัดว่าไมโครคอนโทรลเลอร์ หลักโดยหลักการแล้วคุณไม่สามารถเปลี่ยนอะไรได้และสำหรับความคิดคุณสามารถ buti โมฆะหลัก(โมฆะ)แม้ว่าจะเป็นไฟล์ GCC บนพีซีและโปรแกรมสามารถหมุนค่าระบบปฏิบัติการได้หลังจากเสร็จสิ้น Tom GCC on โมฆะหลัก(โมฆะ)เห่า Warning'om.

ไม่ได้ให้อภัย pratsyvatime แต่ฉันไม่ชอบคำเตือน

โมฆะประเภทของข้อมูลที่เราส่งผ่านไปยังฟังก์ชันในลักษณะนี้ หลักจึงไม่สามารถรับอะไรได้เลย โมฆะ- ว่างเปล่า. Stub, zastosovuєtsyaแล้วถ้าคุณไม่ต้องการอะไรในการถ่ายโอนหรือเปลี่ยน

Axis so { } แขนที่คิดคือบล็อกของโปรแกรม ในกรณีนี้คือเนื้อหาของฟังก์ชัน หลัก, จะมีรหัส.

กลับ- ค่าที่หมุนเหมือนฟังก์ชันหลักจะแสดงเมื่อเสร็จแล้ว เรามี int ดังนั้นตัวเลขจึงหมุนตามตัวเลขหลัก อย่างไรก็ตาม มันไม่มีเหตุผลเพราะ บนไมโครคอนโทรลเลอร์จาก main เราไปได้ทุกที่ ฉันเปลี่ยนเป็นศูนย์ โบเนฟิก. และคอมไพเลอร์ก็ฟังดูฉลาดและไม่สร้างโค้ดใดๆ
หากคุณต้องการบิดแล้ว หลักคุณสามารถไปที่ MK - ตัวอย่างเช่น คุณสามารถไปที่ส่วน bootloader และ vikonati її แต่ที่นี่คุณจะต้องมีเฟิร์มแวร์กะพริบระดับต่ำเพื่อแก้ไขที่อยู่ของการเปลี่ยนแปลง ด้านล่างคุณเองจะคลำหาและเข้าใจราวกับว่าคุณกำลังเติบโต ใหม่? แกนมีกำลังมากกว่าอยู่แล้ว 99.999% ของเคสไม่ต้องการ :)

พวกเขาฟาดฟันออกไป การเปลี่ยนแปลง Dodamo ไม่จำเป็นสำหรับเราโดยเฉพาะและไม่จำเป็นต้องแนะนำการเปลี่ยนแปลงไม่ใช่ varto แต่มาดูแลมันกันเถอะ หากมีการเปลี่ยนแปลงในส่วนตรงกลางของฟังก์ชัน กลิ่นเหม็นจะอยู่เฉพาะที่และพบได้ในฟังก์ชันนี้เท่านั้น หากฟังก์ชั่นออกมาและการเปลี่ยนแปลงจะถูกลบออกและหน่วยความจำ RAM จะพร้อมใช้งานสำหรับความต้องการที่สำคัญที่สุด .

1 2 3 4 5 6 int main(void ) ( unsigned char i; return 0 ; )

int main(เป็นโมฆะ) ( unsigned char i; return 0; )

ไม่ได้ลงนามหมายถึงไม่ได้ลงนาม ทางด้านขวาในไฟล์คู่เรามีบิตสูงสุดป้อนเครื่องหมายซึ่งหมายความว่าหมายเลข +127/-128 รวมอยู่ในหนึ่งไบต์ (ถ่าน) แต่เป็นเครื่องหมายให้ใส่เข้าไป ที่เดียวกับ 0 ถึง 255 ไม่จำเป็นต้องส่งเสียงสัญญาณ แล้วไง ไม่ได้ลงนาม.
ผม- ยิ่ง im'ya zminnoy. ไม่มากไปกว่านั้น

ตอนนี้คุณต้องpro_nіtsіalіzuvatเสียสิ่งนั้น UART. แน่นอน คุณสามารถใช้และเชื่อมต่อห้องสมุดและโทร UartInit (9600); แต่คุณก็ยังไม่รู้ว่าเกิดอะไรขึ้นกับความจริง

Robimo เช่นนี้:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 int main (เป็นโมฆะ) ( unsigned char i; #define XTAL 8000000L #define baudrate 9600L #define bauddivider (XTAL/(16*baudrate)-1)#define HI(x) ((x)>>8) #define LO(x) ((x)& 0xFF) UBRRL = LO(บอดดิวิเดอร์) ; UBRRH = HI (ตัวแบ่งข้อมูล); UCSRA=0; UCSRB=1<< RXEN| 1 << TXEN| 1 << RXCIE| 0 << TXCIE; UCSRC = 1 << URSEL| 1 << UCSZ0| 1 << UCSZ1; }

int main(เป็นโมฆะ) ( unsigned char i; #define XTAL 8000000L #define baudrate 9600L #define bauddivider (XTAL/(16*baudrate)-1) #define HI(x) ((x)>>8) #define LO( x) ((x)& 0xFF) UBRRL = LO (bauddivider); UBRRH = HI (bauddivider); UCSRA = 0; UCSRB = 1<

น่ากลัว? ตามความเป็นจริง มีโค้ดจริงเหลือน้อยกว่าห้าแถว ทุกอย่างที่ #กำหนด ce Macromov พรีโปรเซสเซอร์ Mayzhe พวกนั้นคือ badilla ซึ่งอยู่ใน Assembler แต่ไวยากรณ์คือ deshcho іnshiy

เหม็นเพื่อทำให้การทำงานประจำของคุณง่ายขึ้นโดยการคำนวณค่าสัมประสิทธิ์ที่จำเป็น ในแถวแรกเราพูดว่าzamіst XTALคุณสามารถเป็นตัวแทน 8000000 อย่างกล้าหาญและ หลี่- ระบุประเภทโดยเลื่อนแบบยาว - ความถี่สัญญาณนาฬิกาของโปรเซสเซอร์ เหมือนกัน baudrate- ความถี่ในการส่งข้อมูลผ่าน UART

bauddividerที่ซับซ้อนยิ่งขึ้น รองผู้อำนวยการคนใหม่จะนำเสนอการคำนวณสูตรสำหรับทั้งสองข้างหน้า
ดีและ LOі สวัสดีซึ่งผลลัพธ์คือไบต์ที่อายุน้อยที่สุดและเก่าที่สุดเพราะ อาจไม่พอดีกับหนึ่งไบต์ ที่ สวัสดีลอง zsuv iksa (ป้อนพารามิเตอร์ให้กับมาโคร) ไปทางขวาจนสุด ไบต์สูงจะถูกละทิ้งไป และใน LOเราต้องทีละเล็กทีละน้อยด้วยหมายเลข 00FF ดังนั้นไบต์ที่อายุน้อยที่สุดจะถูกทิ้งไว้ข้างหลัง

ดังนั้นทุกสิ่งที่บดขยี้เหมือน #กำหนดคุณสามารถอ้างอย่างกล้าหาญและคุณสามารถใช้ตัวเลขเพื่อหยิบเครื่องคิดเลขแล้วป้อนลงในแถว UBBRL = .... และ UBBRH = …..

เป็นไปได้ เป็นไปได้ เบียร์! Robiti tsyogo เป็นไปไม่ได้อย่างแน่นอน!

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

ทุกอย่างเรียบง่าย:
ทั้งหมด "UBRRL і C" tse ตั้งค่ารีจิสทรีกำหนดค่าการถ่ายโอน UART เพื่อขอความช่วยเหลือซึ่งเราจะใช้กับแสง และทันทีที่เราให้ค่าที่จำเป็นแก่พวกเขาโดยปรับการรักษาความปลอดภัยที่จำเป็นและระบอบการปกครองที่จำเป็น

บันทึกความคิด 1< Tse หมายถึง: หยิบ 1 และวาง її ตรงจุด RXENไบต์ RXEN ce รีจิสเตอร์บิตที่ 4 UCSRBแล้วไง 1<ตั้งสองจำนวน 000010000 TXEN- บิตที่สามทั้งหมดและ 1<จะให้ 00001000 คนเดียว "|" ทีละนิด ABO, เก่า 00010000 | 00001000 \u003d 00011000 ในลำดับเดียวกัน การกำหนดค่าที่จำเป็นอื่น ๆ จะถูกวางและเพิ่มลงในช่องหลัก ผลลัพธ์ของหมายเลขที่เลือกจะถูกบันทึกไว้ใน UCSRB รายงานถูกเขียนในแผ่นข้อมูลบน MK ในการแจกจ่าย USART ฉันไม่เห็นรายละเอียดทางเทคนิคเช่นกัน

ถึงเวลาแล้วที่จะประหลาดใจกับสิ่งที่เกิดขึ้น กดเพื่อคอมไพล์และรันโปรแกรมจำลอง (Ctrl+F7)

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

ทางด้านขวาของด้านหลังขวามีแถว UBRRL = LO (bauddivider); และแม้กระทั่งสิ่งที่เรากำหนดไว้ก็ไม่ใช่โค้ด แต่เพียงแค่ส่งต่อการคำนวณ แกนเป็นตัวจำลองสามส่วนและทื่อ และตอนนี้ฉันได้เห็นเหล้าองุ่นแล้ว อ่านคำแนะนำและเห็นเธออยู่ใกล้ต้นไม้ มุมมอง I/Oในส่วน USART และดูไบต์ UBBRL ที่นั่น คุณจะเห็นว่าค่าที่มีอยู่แล้วเป็นอย่างไร! 0x33.

ถักโครเชต์อีกหนึ่งอัน ดูว่าคุณสามารถเปลี่ยนเป็นการลงทะเบียนอื่นได้อย่างไร ดังนั้นให้ผ่านїхуіการเคารพสัตว์ร้ายสำหรับผู้ที่เต้นที่ได้รับการแต่งตั้งทั้งหมดนั้นจะปรากฏขึ้นตามที่ฉันพูดกับคุณนอกจากนี้พวกเขายังแสดงในเวลาเดียวกันสำหรับทั้งไบต์ Dali Return ทางด้านขวาไม่ถูกต้อง - โปรแกรมสิ้นสุดแล้ว

รอซติน
ตอนนี้รีเซ็ตการจำลองเป็นศูนย์ กดตรงนั้น รีเซ็ต (Shift+F5). ตรวจสอบรายชื่อการถอดประกอบ คุณจะฉลาดเกี่ยวกับสิ่งที่อยู่ในตัวควบคุม ดู -> ตัวถอดประกอบ. І ไม่ใช่ YYAAAA! ผู้ประกอบ! จ๊า!!! จำเป็น เราจะเหงื่อออก ถ้ามันผิด ไม่ทำให้โค้ดเป็นใบ้และไม่ใส่ฟีดของ lamer ในฟอรัม แต่ดูร่างกายและประหลาดใจที่คุณ zatik ที่นั่นไม่มีอะไรน่ากลัว

ด้านหลังจะเป็น Badilla จากซีรีส์:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 +00000000: 940C002A JMP 0x0000002A กระโดด +00000002: 940C0034 JMP 0x00000034 กระโดด +00000004: 940C0034 JMP 0x00000034 กระโดด +00000006: 940C0034 JMP 0x00000034 กระโดด +00000008: 940C0034 JMP 0x00000034 กระโดด +0000000A: 940C0034 JMP 0x00000034 Jump 0000000E: 940C0034 JMP 0x00000034 กระโดด +00000010: 940C0034 JMP 0x00000034 กระโดด +00000012: 940C0034 JMP 0x00000034 กระโดด +00000014: 940C0034 JMP 0x00000034 กระโดด +00000016: 940C0034 JMP 0x00000034 กระโดด +00000018: 940C0034 JMP 0x0000004: 0000000 กระโดด 0000000 : 940C0034 JMP 0x00000034 กระโดด +0000001E: 940C0034 JMP 0x00000034 กระโดด +00000020: 940C0034 JMP 0x00000034 กระโดด +00000022: 940C0034 JMP 0x00000034 กระโดด +00000024: 940C0034 JMP 0x00000034 กระโดด +00000026: 940C0034 JMP 0x0000003440 C +00000028 กระโดด

00000000: 940C002A JMP 0x0000002A กระโดด +00000002: 940C0034 JMP 0x00000034 กระโดด +00000004: 940C0034 JMP 0x00000034 กระโดด +00000006: 940C0034 JMP 0x00000034 กระโดด +00000008: 940C0034 JMP 0x00000034 กระโดด +0000000A: 940C0034 JMP 0x00000034 กระโดด : 940C0034 JMP 0x00000034 กระโดด +00000010: 940C0034 JMP 0x00000034 กระโดด +00000012: 940C0034 JMP 0x00000034 กระโดด +00000014: 940C0034 JMP 0x00000034 กระโดด +00000016: 940C0034 JMP 0x00000034 กระโดด +00000018: 940C0034 JMP 0x0000003440 กระโดด +C0000001 940C0034 JMP 0x00000034 กระโดด +0000001E: 940C0034 JMP 0x00000034 กระโดด +00000020: 940C0034 JMP 0x00000034 กระโดด +00000022: 940C0034 JMP 0x00000034 กระโดด +00000024: 940C0034 JMP 0x00000034 กระโดด +00000026: 940C0034 JMP 0x00000040003 กระโดด +00000028:

Tse ตาราง vector_v pereprivan. ลองเปิดดู แค่ประหลาดใจและจำไว้ว่ามันอยู่ที่นั่น คอลัมน์แรกคือที่อยู่ตรงกลางของฟลัชที่จะวางคำสั่ง, โค้ดคำสั่งอื่น, คำสั่งที่สามช่วยในการจำ, คำสั่งแอสเซมเบลอร์เดียวกัน, ตัวถูกดำเนินการที่สามของคำสั่ง ความคิดเห็นอัตโนมัตินั้น
จากนี้ไป ถ้าคุณประหลาดใจ คุณต้องข้ามที่นี่ และรหัสคำสั่ง JMP นั้นมีขนาดไม่กี่ไบต์ที่ที่อยู่ใหม่การกระโดดจะถูกเขียนย้อนกลับ - ไบต์ที่อายุน้อยที่สุดที่อยู่หลังที่อยู่ที่อายุน้อยที่สุดคือรหัสคำสั่งสำหรับการเปลี่ยนแปลง 940C

0000002B: BE1F OUT 0x3F,R1 ไปที่ตำแหน่ง I/O

การเขียนศูนย์ไปยังที่อยู่ 0x3F หากคุณดูในคอลัมน์มุมมอง I / O แทนที่จะเป็นที่อยู่ 0x3F เป็นที่อยู่ของการลงทะเบียน SREG - การลงทะเบียนด้านขวาของตัวควบคุม ทูบโต เรารีเซ็ต SREG เพื่อเรียกใช้โปรแกรมโดยไม่ต้องกังวล

1 2 3 4 +0000002C: E5CF LDI R28,0x5F โหลดทันที +0000002D: E0D4 LDI R29,0x04 โหลดทันที +0000002E: BFDE OUT 0x3E,R29 ที่ตำแหน่ง I/O +00000002

0000002C: E5CF LDI R28,0x5F โหลดทันที +0000002D: E0D4 LDI R29,0x04 โหลดทันที +0000002E: BFDE OUT 0x3E,R29 ที่ตำแหน่ง I/O +00000002

Tse zavantazhennya pokazhchika กอง ไม่สามารถใช้ประโยชน์จากการลงทะเบียน I / O ผ่านการลงทะเบียนระดับกลางเท่านั้น ด้วยเหตุผลนี้ LDI จึงอยู่ในระดับกลาง จากนั้นจึงเรียก OUT ใน I / O เกี่ยวกับสแต็กฉันจะอธิบายรายละเอียดเพิ่มเติมด้วย สำหรับตอนนี้ ให้รู้ว่านี่เป็นพื้นที่หน่วยความจำแบบไดนามิก แขวนไว้ที่ส่วนท้ายของ RAM และบันทึกที่อยู่และการเปลี่ยนแปลงอื่นๆ ด้วยตัวคุณเอง แกนในเวลาเดียวกันชี้ไปที่ดาวเหล่านั้น เราสามารถเริ่มกอง

00000032: 940C0041 JMP 0x00000041 กระโดด

สตรีคที่ saaaaamy มีโปรแกรมและที่นั่นเรามีรั้วกั้นเพื่อขัดขวางการวนซ้ำนั้นอย่างแน่นหนา:

1 2 +00000041: 94F8 CLI Global Interrupt ปิดการใช้งาน +00000042: CFFF RJMP PC-0x0000 Relative jump

00000041: 94F8 CLI Global Interrupt ปิดการใช้งาน +00000042: CFFF RJMP PC-0x0000 Relative jump

เฟอร์นิเจอร์ Tse inadok neperedbachenih เช่น ออกจากฟังก์ชันหลัก จากวงจรดังกล่าว ตัวควบคุมสามารถนำไปใช้กับส่วนลดฮาร์ดแวร์ หรือแม้แต่ส่วนลดของประเภทสุนัขเฝ้าบ้าน - สุนัขเฝ้าบ้าน มิฉะนั้น อย่างที่ฉันได้กล่าวไว้ข้างต้น ให้แก้ไขห้องบรรณาธิการฐานสิบหกและไปที่จิตวิญญาณของเราตลอดไป ดังนั้นให้ความเคารพต่อผู้ที่ใช้การเปลี่ยนแปลงสองประเภท JMP และ RJMP ก่อนการเปลี่ยนแปลงโดยตรงสำหรับที่อยู่ ในการยืม chotiri bayti และคุณสามารถ robite การเปลี่ยนแปลงโดยตรงไปยังทุกพื้นที่ของหน่วยความจำ การเปลี่ยนแปลงอีกประเภทหนึ่งคือ RJMP - มองเห็นได้ คำสั่งนี้ยืมสองไบต์ จากนั้นย้ายไปยังตำแหน่งปัจจุบัน (ที่อยู่) 1024 kroki ไปข้างหน้าหรือข้างหลัง ในพารามิเตอร์ที่ І จะระบุการกระจัดของจุดไหล Vikoristovuetsya บ่อยที่สุด tk ยืมเงินน้อยกว่าสองหรือสามเดือนจากฟลัชและคุณแทบไม่ต้องการเงินเพิ่ม

1 +00000034: 940C0000 JMP 0x00000000 กระโดด

00000034: 940C0000 JMP 0x00000000 กระโดด

และ tse stribok บนรหัส cob Rezavantazhennya ในแบบของเขา คุณสามารถแก้ไขสิ่งที่เวกเตอร์ทั้งหมดนำมาที่นี่ จาก vysnovok นี้ - หากคุณอนุญาตให้สร้างใหม่ในทันที (กลิ่นเหม็นของรั้วโดยค่าเริ่มต้น) และคุณจะผ่านการแทนที่ แต่ไม่มีทางที่จะได้รับมัน ถ้าโปรแกรมถูกทิ้ง - โปรแกรมจะ ถูกโยนลงบนซัง

ฟังก์ชั่นหลัก. ทุกอย่างสามารถเป็น navit ในทำนองเดียวกันและไม่ได้อธิบายไว้ ดูการลงทะเบียนเพื่อป้อนตัวเลขที่คำนวณได้เหมือนกัน คอมไพเลอร์พรีโปรเซสเซอร์เพื่อคัดท้าย! ตัวเลข "มายากล" ที่เหมือนกัน!

1 2 3 4 5 6 7 8 9 10 11 12 <

00000036: E383 LDI R24,0x33 โหลดทันที +00000037: B989 OUT 0x09,R24 ข้ามไปยังตำแหน่ง I/O 15: UBRRH = HI (bauddivider); +00000038: BC10 OUT 0x20,R1 ไปที่ตำแหน่ง I/O 16: UCSRA = 0; +00000039: B81B OUT 0x0B,R1 ข้ามไปยังตำแหน่ง I/O 17: UCSRB = 1<

และแกนที่นี่ลาดเท:

1 2 3 +0000003E: E080 LDI R24,0x00 โหลดทันที +0000003F: E090 LDI R25,0x00 โหลดทันที +00000040: 9508 RET Subroutine return

0000003E: E080 LDI R24,0x00 โหลดทันที +0000003F: E090 LDI R25,0x00 โหลดทันที +00000040: 9508 RET Subroutine return

เดี๋ยวก่อนทำไมคอมไพเลอร์ถึงเพิ่ม badilla เช่นนี้? แต่ถ้าไม่มีอะไรอย่างอื่น เช่น Return 0 เรากำหนดให้ฟังก์ชันเป็น int main (เป็นโมฆะ) axis i พวกเขาโกรธมากกว่าไบต์ทั้งหมด ฉันไม่ฉลาดเกี่ยวกับอะไร :) ไม่ว่าอะไร ฟังก์ชันหลักของเราจะไม่หมุน อะไรก็ตาม. ซากาลอม, โรบี จาค โฮช :)

สำคัญ? ก่อนอื่นไม่มี คลิกที่โค้ดสำหรับโค้ดในโหมด disassembler และจัดตำแหน่งเป็นโค้ดโปรเซสเซอร์ โค้ดสำหรับคำแนะนำ ซึ่งเมื่อใช้กับรีจิสเตอร์ วิธีการย้ายตามคำสั่งที่ pidbag วนรอบ

ติดตามในอีกสองสามวัน

ออฟท็อป:
อเล็กซี่78ปลั๊กอิน zvarganiv สำหรับ firefox การนำทางที่ง่ายขึ้นบนเว็บไซต์และฟอรัมของฉัน
พูดถึงการดาวน์โหลด

แผนผังของโปรแกรมเมอร์สำหรับพอร์ต LPT แสดงในภาพขนาดเล็ก เช่นเดียวกับเครื่องขึ้นรูปยาง ให้ใช้ไมโครเซอร์กิต 74AC 244 หรือ 74HC244 (K1564AP5), 74LS244 (K555AP5) หรือ 74ALS244 (K1533AP5)

Svitlodiod VD1 ระบุโหมดการบันทึกของไมโครคอนโทรลเลอร์

ไดโอดแสง VD2 - การอ่าน

svitlodiod VD3 - การปรากฏตัวของโครงการสด

แรงดันไฟฟ้าแผนอาหารที่จำเป็นฉันใช้ ISP เพิ่มขึ้น tobto ประเภทของโปรแกรมภายนอกอาคาร วงจรนี้เป็นวงจรที่นำกลับมาทำใหม่ของโปรแกรมเมอร์ STK200/300 (เพิ่มแสงสว่างเพื่อประสิทธิภาพในการทำงาน) สรุปโดยโปรแกรมของโปรแกรมเมอร์บนพีซีซึ่งใช้กับวงจร STK200/300 ในการทำงานกับโปรแกรมเมอร์ cim ให้แฮ็คโปรแกรม CVAVR

โปรแกรมเมอร์สามารถติดตั้งบนบอร์ดอื่นและวางไว้ในกรณีของซ็อกเก็ต LPT ดังแสดงในรูป:




สำหรับหุ่นยนต์ที่มีโปรแกรมเมอร์ จำเป็นต้องติดตั้งพอร์ต LPT ด้วยตนเอง ซึ่งไม่ใช่เรื่องง่ายที่จะเตรียมตัว (เช่น ด้วยสายเคเบิล Centronix สำหรับเครื่องพิมพ์) อย่ายุ่งกับตัวนำสำหรับพื้นโลก (สูง 18-25 ฟุต) ) หรือซื้อ สายเคเบิลระหว่างโปรแกรมเมอร์และไมโครเซอร์กิตที่ตั้งโปรแกรมไว้ไม่มีความผิดในการเกิน 20-30 ซม.


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

หากคุณกำลังอ่านบทความนี้ เป็นไปได้สำหรับคุณที่จะเข้าใจว่าไมโครคอนโทรลเลอร์ทำงานอย่างไร และดีกว่าสำหรับอาหารทั้งหมด:

4. อ่านวรรณกรรมอย่างไร?

ลองใช้กับอุปทานฉี

1. ไมโครคอนโทรลเลอร์ตัวไหนให้เลือกสำหรับหุ่นยนต์?

ไมโครคอนโทรลเลอร์ 8 บิตเป็นที่นิยมอย่างมากกับ radioamators PICโดย Microchip Technology และ AVRโดย Atmel 16 บิต MSP430บริษัท TI เช่นเดียวกับไมโครคอนโทรลเลอร์ 32 บิต สถาปัตยกรรม แขน.

ที่วงการยังไงก็นั่งรับลมแรงๆ Renesas Electronicsที่อื่น ฟรีสเกล, ในวันที่สาม ซัมซุงงั้นก็ไปกัน ไมโครชิปі Ti,ต้าหลี่ทุกอย่าง.
ความนิยมนั้นพิจารณาจากราคาและความพร้อมจำหน่ายสินค้า และบทบาทของการมีข้อมูลทางเทคนิคและความแปรปรวนของการสนับสนุนซอฟต์แวร์

Mi vimemo 8-bit AVR ไมโครคอนโทรลเลอร์ ครอบครัว ATMEGA 8 และ 16 ซีรีส์. เมื่อเลือกแล้ว ตอนนี้ฉันสามารถเข้าถึงได้มากขึ้น โดยเผยให้เห็นถึงความไม่มีตัวตนของการวิจัยมือสมัครเล่น ซึ่งเป็นเนื้อหาหลักจำนวนมาก การปรากฏตัวขององค์ประกอบที่ซับซ้อนต่าง ๆ และการทำงานของตระกูลนี้

2. อะไรคือสื่อสำหรับการพัฒนาผู้ชนะในการเขียนโปรแกรมไมโครคอนโทรลเลอร์แบบย้อนกลับ?

สำหรับ AVR มีการสร้างการผสานรวมต่างๆ ของสภาพแวดล้อมการพัฒนา (IDE, สภาพแวดล้อมการพัฒนาแบบบูรณาการ)
IDE- เครื่องมือซอฟต์แวร์ทั้งระบบซึ่งถูกแฮ็กโดยโปรแกรมเมอร์เพื่อพัฒนาความปลอดภัยซอฟต์แวร์ (PP) ไปยังคลังข้อมูล ซึ่งรวมถึง:
โปรแกรมแก้ไขข้อความ,
คอมไพเลอร์และ/หรือล่าม
รับระบบอัตโนมัติของการจัดเก็บ
เจ้าของ.

ที่ใหญ่ที่สุดของพวกเขา AVRStudio, ATmelStudio, WINAVR, CodeVision, IAR Embedded Workbench.
ในการเขียนโปรแกรม เราเร่งความเร็วโดยไม่คิดค่าใช้จ่าย IDE ATmelStudio เวอร์ชัน 6และอื่น ๆ.
คุณสามารถรับ Atmel Studio ได้จากเว็บไซต์อย่างเป็นทางการหลังจากลงทะเบียน (การลงทะเบียนไม่มีค่าใช้จ่ายใด ๆ และไม่มีโรคคอพอก!)

ATmelStudio ช่วยให้คุณสร้างโครงการและเขียนโปรแกรมทั้งในแอสเซมเบลอร์และใน CI

อย่าลืมขอความช่วยเหลือ: ฉันจะเลือกการเขียนโปรแกรมเพื่อเขียนโปรแกรมที่มีประสิทธิภาพได้อย่างไร

สมมติว่า: จำเป็นต้องเขียนแอสเซมเบลอร์ภาษาอย่างน้อยสองภาษาและ CІ Assembler จำเป็นอย่างยิ่ง หากคุณต้องการเขียนเฟิร์มแวร์ โปรแกรมย่อยขนาดกะทัดรัด และมาโคร และไดรเวอร์เสริมต่างๆ แต่ถ้าคุณต้องการสร้างโปรเจ็กต์ขนาดใหญ่พร้อมท์ให้อัลกอริธึมพับโดยไม่ต้องรู้ CІ คุณสามารถใช้เวลาได้มากโดยเฉพาะในกระบวนการพัฒนาให้ดีขึ้น และหากคุณต้องการโอนไปยังแพลตฟอร์มอื่น เช่น PIC18 หรือ STM อาจกลายเป็นปัญหาที่แยกออกไม่ได้
มาดูกันว่าตอนนี้แพลตฟอร์มฮาร์ดแวร์ได้ปรากฏตัวขึ้นแล้ว Arduino, ร่วมงานกับ yakimi learning movi CІ++
ด้วยเหตุนี้ โปรแกรมจึงสามารถเขียนได้ทั้งในภาษาแอสเซมบลีและ CI

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

3. จะแฟลชคอนโทรลเลอร์ได้อย่างไรและจะเพิ่มอุปกรณ์เสริมและอุปกรณ์เสริมที่จำเป็นสำหรับการทำงานด้วยตนเองได้อย่างไร?

Vikoristovuemo ดาต้ากอร์สค์ แหลมไครเมียจะต้องนำเขียงหั่นขนมมาซึ่งเป็นบล็อกแห่งชีวิตจากแรงดันไฟขาออก 5 โวลต์ คุณสามารถเช่นหน่วยจ่ายไฟที่มีระลอกคลื่นเล็ก ๆ vikoristovuvat, zastosuvshi zener diode ที่ 5 โวลต์
อาจเป็นไปได้ว่าในระหว่างปี Igor zaproponuєmoโครงการสำหรับการชำระภาษี

4. อ่านวรรณกรรมอย่างไร?

และแกนเช่น:
การเขียนโปรแกรม AVR ที่ใช้งานได้จริงในแอสเซมเบลอร์ Reevich, 2011
1,000 วงจรไมโครคอนโทรลเลอร์หนึ่งตัว วีไอพี 1-2. ริวมิก 2010-2011
10 ส่วนเพิ่มเติมที่ใช้งานได้จริงใน MK AVR Book 1-2 Kravchenko, 2008-2009
Self-reader สำหรับร้านค้าปลีกสิ่งที่แนบมาสำหรับ MK AVR Belov, 2008
ตระกูล MK AVR Tiny และ Atmega Єfstіfєєv, 2008
โค้ดวิชั่นเอวีอาร์ Posіbnikสำหรับpochatkіvtsіv Lebedev, 2008
การควบคุมไมโครโปรเซสเซอร์พร้อมสิ่งที่แนบมา ไทริสเตอร์ รีเลย์ Belov, 2008
อินเทอร์เฟซแบบอะนาล็อก MK สจ๊วต, บอล, 2550
เราสร้างส่วนขยายสำหรับ MK AVR Belov, 2007
MK AVR ในการฝึกวิทยุสมัครเล่น การวิเคราะห์ใหม่ของ ATTINY2313 Belov, 2007
Merezhevy และ intermerezhevy แลกเปลี่ยน danimi จาก MK Go, 2007
เอ็มเค เอวีอาร์ การประชุมเชิงปฏิบัติการสำหรับ pochatkivtsiv คาร์ทิฟ 2007
แบบแผน อัลกอริทึม โปรแกรม Baraniv, 2006
ไมโครคอนโทรลเลอร์ AVR หลักสูตรการเข้า. มอร์ตัน 2549
Vimiryuvannya, cheruvannya ที่ควบคุมความช่วยเหลือของ AVR Trumpert, 2006
การเขียนโปรแกรมด้วย C ของฉันสำหรับ AVR และ PIC MK Shpak, 2006
การก่อสร้างอาคารนอกบน MK Belov, 2005
MK - ง่ายๆ เล่ม 1-3 Frunze, 2545-2546
การเขียนโปรแกรม Mova Cі รุ่นที่ 2 Kernigan, Ritchie, 2552
การเขียนโปรแกรมไมโครคอนโทรลเลอร์ ATMEL โดย S. Prokopenko ของฉัน, 2012

5. คุณสามารถถามคำถามบนอินเทอร์เน็ตและเลือกคำแนะนำเฉพาะได้ที่ไหน?

คุณสามารถสอบถามในฟอรัมของเราหรืออื่น ๆ de so chi іnaksheได้ชนไมโครคอนโทรลเลอร์ z เหล่านั้น Golovne ในฟอรัมกำหนดโภชนาการอย่างถูกต้องเพื่อให้คุณสามารถ otrimuvat vіdpovіdіได้อย่างชัดเจน โภชนาการที่เป็นนามธรรมไม่ได้อ้อยอิ่งอยู่และมากกว่าทุกสิ่งทุกอย่างคุณจะถูกวิพากษ์วิจารณ์เป็นจำนวนมากไม่เช่นนั้นโภชนาการของคุณจะถูกกีดกันจากความเคารพ!

มาดูผู้นำของเรากันดีกว่า ไมโครคอนโทรลเลอร์ ATMEGA 8

ไมโครคอนโทรลเลอร์ AVR ประสิทธิภาพสูง 8 บิตพร้อมประสิทธิภาพต่ำ
สถาปัตยกรรม RISC แบบก้าวหน้า
คำสั่งที่ให้ประสิทธิผลสูง 130 คำสั่ง นับคำสั่งได้มากขึ้นในรอบนาฬิกาเดียว
32 พนักงาน 8 บิตในทะเบียนการรับรู้ต่างประเทศ
หุ่นยนต์แบบคงที่อย่างสมบูรณ์
ประสิทธิภาพใกล้ถึง 16 MIPS (ที่อัตรานาฬิกา 16 MHz)
Vbudovaniya ตัวคูณ 2 รอบ

หน่วยความจำโปรแกรมอิสระ
8 KB In-System Self-Programmable Flash
ปลอดภัยสำหรับรอบการลบ/เขียน 1,000 รอบ
ส่วนเสริมของรหัสที่หายไปจากบิตบล็อกอิสระ
โหมดอ่าน/เขียนหนึ่งชั่วโมง (อ่าน-ขณะเขียน) ปลอดภัย
512 ไบต์ EEPROM
ปลอดภัยสำหรับรอบการลบ/เขียน 100,000 รอบ
SRAM . ในตัว 1 KB
การบล็อกที่ตั้งโปรแกรมไว้ซึ่งปกป้องการปกป้องคุณสมบัติความปลอดภัยของซอฟต์แวร์

รอบนอกบูโดวาน่า
ตัวจับเวลา/ไฟแช็ค 8 บิตสองตัวพร้อมตัวจับเวลาด้านหน้าคงที่ ตัวหนึ่งมีโหมดหดตัว
ตัวจับเวลา/ตัวจับเวลา 16 บิตหนึ่งตัวพร้อมตัวจับเวลาด้านหน้าและโหมดล็อคเอาต์
Lіchilnikเรียลไทม์พร้อมตัวสร้าง okremi
สามช่องสัญญาณ PWM
ตัวแปลงอนาล็อกเป็นดิจิตอล 8 ช่องสัญญาณ (สำหรับเคส TQFP และ MLF)
6 ช่องสัญญาณที่มีความแม่นยำ 10 บิต
ตัวแปลงอนาล็อกเป็นดิจิตอล 6 ช่อง (สำหรับเคส PDIP)
4 ช่องสัญญาณที่มีความแม่นยำ 10 บิต
2 ช่องสัญญาณที่มีความแม่นยำ 8 บิต
การวางแนวไบต์อินเทอร์เฟซแบบอนุกรม 2 สาย
การเขียนโปรแกรม USART . ล่าสุด
อินเทอร์เฟซ SPI ล่าสุด (มีสาย/มีสาย)
ตัวจับเวลาเฝ้าบ้านที่ตั้งโปรแกรมได้พร้อมเครื่องกำเนิดสัญญาณปลุก
ปลุกเครื่องเปรียบเทียบอนาล็อก

ฟังก์ชันไมโครคอนโทรลเลอร์พิเศษ
ตัวตัดการจ่ายไฟและตั้งโปรแกรมเครื่องตรวจจับแรงดันตกคร่อมชั่วโมงสั้น
เครื่องกำเนิดไฟฟ้า RC สอบเทียบ
ภายในและภายนอก dzherela pererivani
ห้าโหมดของสัญญาณรบกวนต่ำ: ว่าง, ประหยัดพลังงาน, ปิดเครื่อง, สแตนด์บาย และการลดสัญญาณรบกวน ADC

Visnovki I / O และร่างกาย
23 เส้นเข้า/ออกที่ตั้งโปรแกรมไว้ล่วงหน้า
แพ็คเกจ PDIP 28 ทาง แพ็คเกจ TQFP 32 ทาง และแพ็คเกจ MLF 32 ทาง

แรงดันใช้งาน
2.7 - 5.5V (ATmega8L)
4.5 - 5.5 (ATmega8)

ความถี่ในการทำงาน
0 - 8 MHz (ATmega8L)
0 - 16 MHz (ATmega8)

vіdminnostі ATMEGA16 กับ 8
16 KB In-System Self-Programmable Flash

อินเทอร์เฟซ JTAG (สรุปจาก IEEE 1149.1)
ความสามารถในการสแกนอุปกรณ์ต่อพ่วงซึ่งเป็นไปตามมาตรฐาน JTAG
ขยายการสนับสนุนสำหรับภาษีรุ่น
การเขียนโปรแกรมผ่านอินเทอร์เฟซ JTAG: Flash, หน่วยความจำ EEPROM, จัมเปอร์และการบล็อกบิต

Chotiri ช่อง PWM / PWM

ตัวแปลง A/D 10 บิต 8 ช่องสัญญาณ
8 ช่องไม่สมดุล
7 ช่องสัญญาณดิฟเฟอเรนเชียล (เฉพาะเคส TQFP)
2 ช่องสัญญาณดิฟเฟอเรนเชียลพร้อมกำลังโปรแกรม 1, 10 หรือ 200 ครั้ง (เฉพาะในแพ็คเกจ TQFP)

โหมดสลีปต่ำหกโหมด: ไม่ทำงาน, ประหยัดพลังงาน, ปิดเครื่อง, สแตนด์บาย, สแตนด์บายแบบขยาย และการลดสัญญาณรบกวน ADC

การเขียนโปรแกรม 32 บรรทัด เข้า / ออก

แพ็คเกจ PDIP 40 ความกว้างและแพ็คเกจ TQFP 44 ความกว้าง

AtmelStudio

ทันทีที่คุณเริ่มต้น คุณต้องรับมันและติดตั้งโปรแกรม AtmelStudio จากฝั่งทางการของ atmel.com
เมื่อติดตั้งซอฟต์แวร์ AtmelStudio แล้ว จะสามารถเปิดโครงการได้
โครงการ- ทดสอบโปรแกรมของคุณว่าคุณจะเขียน ปรับแต่ง และแฟลชอย่างไรหลังจากคอมไพล์แล้ว ไขปริศนาเกี่ยวกับไมโครคอนโทรลเลอร์

ในการสร้างโครงการคุณต้องเปิดโปรแกรมเช่นหน้าจอสแปลชจะปรากฏขึ้น

ด้านนั้นของการสร้างโครงการ

ในการสร้างโครงการใหม่ คุณต้องคลิกที่ "โครงการใหม่..."
ในกรณีนี้ สามารถเลือกโปรแกรมใหม่ได้ ฉันจะตั้งชื่อโครงการ ฉันจะตั้งชื่อโครงการ ฉันจะตั้งชื่อแพ็คเกจด้วยไฟล์ของโครงการ และฉันจะสามารถสร้างไดเร็กทอรีเพื่อทดแทนเพิ่มเติมได้ ในโครงการข้ามชาติอื่นๆ ในการสร้างโปรเจ็กต์ demi แบบตั้งโปรแกรมได้ในแอสเซมเบลอร์ คุณต้องเลือก - ผู้ประกอบหลังจากนั้นฉันจะเปลี่ยนชื่อของโครงการ yogo roztashuvannya และเลือก ตกลง.

ให้ปรากฏบนvіkno

เลือกได้ "megaAVR 8 บิต"และเรารู้ว่าเราต้องการไมโครคอนโทรลเลอร์ เราเลือก ATmega8.ที่ด้านขวาของหน้าจอเริ่มต้นจะมีรายการสิ่งที่แนบมา ซึ่งสามารถใช้กับไมโครคอนโทรลเลอร์ได้ ซึ่งหนึ่งในนั้นเราสามารถเชื่อมต่อได้ เลือกได้ ตกลง.

ด้านเอดิเตอร์ของข้อความปรากฏขึ้น เนื่องจากอนุญาตให้แก้ไขและปรับโปรแกรมได้ ตราบใดที่หน้ายังสะอาด ชั่วโมงและวันที่สร้างจะถูกระบุ และฉันจะตั้งชื่อไฟล์โครงการว่า im'ya koristuvach Іsnuyut dodatkovі vіkna vіkna pristroїv vvodnya-vivodu, vіkno zvіtіvcompilatsіїโปรแกรม ตอนนี้ mi


เราสามารถตั้งโปรแกรมในแอสเซมเบลอร์
ในทำนองเดียวกัน กำลังสร้างโปรเจ็กต์สำหรับการเขียนโปรแกรม CІ ของฉัน