การชุมนุมใน Arduino: IO ลงทะเบียน


13

คำถาม:ฉันใช้รีจิสเตอร์ชนิดใดในการเข้าถึง IO บน Arduino Uno เมื่อฉันใช้แอสเซมบลีสำหรับการเขียนโปรแกรม

แบ็คกราวน์: ฉันสนใจที่จะฝึกทักษะการใช้ภาษาแอสเซมบลีของฉันบน Arduino (ฉันคิดว่าการเปิด / ปิด LED จะง่ายกว่าการกังวลเกี่ยวกับคอนโซล IO) จากการค้นหาเบื้องต้นฉันพบว่า AVR toolchain สามารถใช้กับโปรแกรม Arduino ได้ ถึงกระนั้นฉันก็ไม่ค่อยทราบวิธีการค้นหาการลงทะเบียนที่สอดคล้องกันสำหรับหมุด IO

คำตอบ:


8

เอกสารข้อมูลทางเทคนิคสำหรับไมโครคอนโทรลเลอร์ AVR นั้นดีพอสมควรที่จะอ่าน เพียง Google สำหรับคอนโทรลเลอร์ที่แน่นอนใน Arduino ของคุณ (เช่น ATmege328) และค้นหาแผ่นข้อมูล "เสร็จสมบูรณ์" บนเว็บไซต์atmel.com อย่าดาวน์โหลด "บทสรุป" แต่ไม่มีข้อมูลจำนวนมาก ดาวน์โหลดแผ่นข้อมูลจาก atmel.com ซึ่งเป็นสถานที่เดียวที่มีเอกสารล่าสุด

มีสามรีจิสเตอร์ที่ใช้ใน IO พื้นฐาน (ตรวจสอบบทที่เรียกว่า "I / O-Ports"):

โดยที่nคือตัวระบุพอร์ตตัวอักษรมีตั้งแต่ A, B, C, ... ขึ้นอยู่กับจำนวนของหมุด IO ที่คอนโทรลเลอร์ของคุณมี แต่ละบิตในการลงทะเบียนแต่ละครั้งแสดงถึง GPIO พินเดียว (ใช่คุณต้องมีความรู้พื้นฐานเกี่ยวกับไบนารีเพื่อที่จะเข้าใจสิ่งนี้)

  • DDR n , Data Direction Register: โดยทั่วไปจะกำหนดพินสำหรับอินพุต (0) หรือเอาท์พุท (1)
  • PORT n , พอร์ต n Data Register: เมื่อพินถูกตั้งค่าเป็นเอาท์พุทบิตที่เกี่ยวข้องจะสลับขาเอาต์พุตสูง (1) หรือต่ำ (0) เมื่อกำหนดค่าเป็นอินพุตสิ่งนี้จะช่วยให้ตัวต้านทานแบบดึงขึ้นอ่อนบนขาเอาต์พุต
  • PIN n , พอร์ต n อินพุตอินพุต: ใช้รีจิสเตอร์นี้เพื่ออ่านระดับปัจจุบันของพินที่กำหนดค่าเป็นอินพุต

3
นี้. ขั้นตอนที่ 1: หยุดคิดว่ามันเป็นอาร์ดิโน มันไม่ใช่. มันเป็น ATmega MCU บน PCB 2. อ่านแผ่นข้อมูล 3. ไม่มีจริงๆอ่านแผ่นข้อมูล
Connor Wolf

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

1

ลองดูสิครับ: http://arduino.cc/en/Reference/PortManipulation

นอกจากนี้: http://arduino.cc/en/Hacking/PinMapping168

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


3
คำตอบสำหรับลิงก์เท่านั้นไม่มีประโยชน์สำหรับไซต์เนื่องจากเราไม่ได้พยายามสร้างที่เก็บลิงก์ ยิ่งกว่านั้นลิงก์คำตอบเดียวนั้นไร้ประโยชน์หากว่าลิงก์ในอนาคตลดลง มันจะเป็นการดีกว่าที่จะสรุปหรือแปลความเนื้อหาภายในคำตอบเองเพื่อให้ผู้ใช้สามารถค้นหาสิ่งที่พวกเขาต้องการที่นี่หรืออย่างน้อยก็ได้รับบริบทที่เพียงพอเพื่อหาวิธีแก้ปัญหาด้วยตนเอง
asheeshr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.