मैं V-USB प्रोजेक्ट पर काम कर रहा हूं जो ATmega328p का उपयोग करके कीबोर्ड के रूप में दिखता है। USB भाग शानदार काम कर रहा है (यह मेरी पहली V-USB परियोजना नहीं है), लेकिन जब मैं V-USB स्टैक को प्रारंभ करता हूं usbInit(), तो SD कार्ड लाइब्रेरी में सभी कॉल विफल हो जाती हैं। यदि मैं समान कार्य को पहले कहता हूं usbInit(), तो सब कुछ पूरी तरह से काम करता है।
मैं एक Arduino क्लोन का उपयोग करता हूं जिसे Diavolino कहा जाता है, लेकिन Arduino / वायरिंग ढांचे के बिना। मेरे पास USB डिजिटल I / O 2 और 3 से जुड़ा है, और SD कार्ड 10-13 (अंतर्निहित SPI लाइनों) में है।
मैंने एसडी कार्ड लाइब्रेरी के माध्यम से देखा और इसके अलावा किसी भी व्यवधान या रजिस्टर का उपयोग करने का कोई संकेत नहीं मिला SPxx। मैं भी grepवी-यूएसबी कोड है, लेकिन यह भी SPxxरजिस्टर को छूने नहीं करता है ।
समस्या का पहला संकेत तब था जब एसडी कार्ड को एक्सेस करना चाहिए था जब डिवाइस काट दिया गया था। फिर मैंने सभी एसडी कार्ड को लूप में रखा usbPoll()और wdt_reset()कॉल किया, और पाया कि लिखने के मामले में, कार्ड अंतिम दो बाइट्स (CRC-16) भेजने के बाद कार्ड से पावती के लिए हमेशा इंतजार करता है।
एसडी कार्ड पुस्तकालय मैं उपयोग sd_rawरोलांड Riegel द्वारा किया जाता है।