เพิ่งทราบว่าข้อมูลและสายสัญญาณI 2 C (SDA และ SCL) ต้องมีตัวต้านทานแบบดึงขึ้น
ฉันได้สร้างนาฬิกาสองสามดวงโดยใช้ DS1307 RTC (ดูแผ่นข้อมูล ) ตามแผนผังด้านล่าง สังเกตว่าฉันได้ตัดตัวต้านทานแบบดึงขึ้นมาทั้งสองตัวแล้ว
นาฬิกาทั้งสองทำงานได้ดีหนึ่งในนั้นทำงานมานานกว่า 3 เดือนแล้ว เป็นไปได้อย่างไร? ไม่ว่าในกรณีใดฉันอยากรู้ว่า:
จะเกิดอะไรขึ้นเมื่อละเว้นการดึงข้อมูลI 2 C
การขาด pullups มีแนวโน้มที่จะสร้างความเสียหายให้กับไอซีทั้งสองในบอร์ดของฉันหรือไม่?
ฉันตอบหลังจากที่ระบุกรณีเฉพาะของฉันในการเชื่อมต่อ ATmega328P กับ DS1307 RTC เหมือนในแผนงานที่ฉันให้ แต่ถ้าคำถามไม่กว้างเกินไปมันจะมีประโยชน์ถ้ารู้ว่าจะเกิดอะไรขึ้นเมื่อดึงพูลทั่วไป เช่นในสถานการณ์อื่นของการดำเนินการI 2 C
PS ฉันค้นหาเครือข่ายอินเทอร์เน็ตเพื่อค้นหาคำตอบ แต่สามารถหาบทความเกี่ยวกับการวัดขนาดการดึง
อัปเดต:ฉันใช้ Arduino IDE 1.03 และเฟิร์มแวร์ของฉันจัดการ RTC โดยใช้DS1307RTC Arduino lib (ผ่านฟังก์ชั่นRTC.read()
และRTC.write()
) lib นั้นจะใช้Wire.h
เพื่อพูดคุยกับ RTC
อัปเดต 2:ด้านล่างเป็นชุดภาพขอบเขตที่ฉันถ่ายเพื่อช่วยอธิบายว่า I 2 C ทำงานอย่างไรโดยไม่มีการดึงจากภายนอก
อัปเดต 3 (หลังจากเพิ่ม I 2 C pullups):ด้านล่างเป็นชุดภาพช็อตขอบเขตอีกชุดที่ฉันถ่ายหลังจากเพิ่มตัวต้านทาน pullup (4K7) ที่เหมาะสมลงในบรรทัดI 2 C (บนบอร์ดเดียวกัน) เวลาที่เพิ่มขึ้นลดลงจากประมาณ 5 tos เป็น 290 ns ฉัน2 C มีความสุขมากตอนนี้