ฉันมีงานเต็มเวลาในฐานะวิศวกรเฟิร์มแวร์ ฉันเพิ่งได้รับมอบหมายให้ตรวจสอบการกำหนดค่า GPIO และเปลี่ยนการตั้งค่าตามต้องการ ฉันพบพินไม่กี่ตัวที่ได้รับการกำหนดค่าอย่างไม่ถูกต้องดังนั้นฉันจึงกำหนดค่าใหม่ตามธรรมชาติ แต่ฉันก็บอกว่าทำตามลำดับที่ผิด นี่คือสิ่งที่ฉันพูดถึง:
ก่อน:
GPIO1.direction = INPUT;หลัง:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
อย่างไรก็ตามในระหว่างการตรวจสอบรหัสฉันได้รับแจ้งว่าฉันต้องเปลี่ยนลำดับของการเริ่มต้นเป็นต่อไปนี้:
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
กล่าวอีกนัยหนึ่งตั้งค่าก่อนแล้วกำหนดทิศทางของหมุด ฉันได้รับแจ้งด้วยว่านี่เป็นวิธีที่ต้องใช้กับโปรเซสเซอร์ที่ทันสมัยเนื่องจากใช้สองรีจิสเตอร์สำหรับอินพุตและหนึ่งสำหรับเอาต์พุตอย่างไรก็ตามโปรเซสเซอร์เก่าใช้เพียงรีจิสเตอร์เดียวดังนั้นลำดับของการดำเนินการจึงไม่สำคัญ
(หมายเหตุ: ทันสมัย = ARM Cortex M3 ขึ้นไป, เก่า = Intel 8051)
ฉันขอคำอธิบายที่ดีกว่าในที่ทำงาน แต่ฉันไม่สามารถรับคำตอบที่ดีได้ นั่นเป็นเหตุผลที่ฉันตัดสินใจที่จะถามที่นี่
ดังนั้นนี่คือคำถามของฉัน:
- เหตุใดลำดับของการกำหนดค่าเริ่มต้นจึงสำคัญกับโปรเซสเซอร์ใหม่
- ทำไมลำดับของการเริ่มต้นไม่สำคัญกับโปรเซสเซอร์รุ่นเก่า?
- พวกเขากำลังพูดถึงสองสิ่งในโปรเซสเซอร์ที่ทันสมัย?
- พวกเขากำลังพูดถึงอะไรกันบ้างเกี่ยวกับโปรเซสเซอร์รุ่นเก่า?
หากใครบางคนสามารถจัดเรียงของไดอะแกรมมันจะดีกว่านี้