ฉันกำลังทำงานในโครงการ V-USB ที่แสดงเป็นแป้นพิมพ์โดยใช้ ATmega328p ส่วน USB ใช้งานได้ดี (ไม่ใช่โครงการ V-USB ครั้งแรกของฉัน) แต่หลังจากที่ฉันเริ่มต้น V-USB สแต็กด้วยการusbInit()
โทรไปยังไลบรารีการ์ด SD ทั้งหมดล้มเหลว ถ้าฉันเรียกฟังก์ชั่นเดิมมาก่อนusbInit()
ทุกอย่างจะทำงานได้อย่างสมบูรณ์
ฉันใช้ Arduino โคลนที่เรียกว่า Diavolino แต่ไม่มีโครงร่าง Arduino / เดินสาย ฉันมี USB ที่เชื่อมต่อกับ I / O ดิจิตอล 2 และ 3 และการ์ด SD ถึง 10-13 (สาย SPI ในตัว)
ฉันดูในห้องสมุดการ์ด SD และพบว่าไม่มีสัญญาณของมันโดยใช้การขัดจังหวะหรือการลงทะเบียนใด ๆ นอกเหนือSPxx
จาก ฉันยังgrep
ต้องใช้รหัส V-USB ด้วยซ้ำ แต่มันไม่ได้แตะที่SPxx
รีจิสเตอร์
สัญญาณแรกของปัญหาคือเมื่ออุปกรณ์ตัดการเชื่อมต่อเมื่อมันควรจะเข้าถึงการ์ด SD จากนั้นฉันก็ใส่usbPoll()
และwdt_reset()
เรียกเข้าไปในลูปการจัดการการ์ด SD ทั้งหมดและพบว่าในกรณีของการเขียนการ์ดจะรอตลอดไปเพื่อรับทราบจากการ์ดหลังจากส่งสองไบต์สุดท้าย (CRC-16)
ห้องสมุด SD card ที่ฉันใช้คือsd_raw
Roland Riegel