Saya sedang mengerjakan proyek V-USB yang muncul sebagai Keyboard menggunakan ATmega328p. Bagian USB berfungsi dengan baik (ini bukan proyek V-USB pertama saya), tetapi setelah saya memulai tumpukan V-USB usbInit()
, semua panggilan ke perpustakaan kartu SD gagal. Jika saya memanggil fungsi yang sama sebelumnya usbInit()
, semuanya berfungsi dengan baik.
Saya menggunakan klon Arduino yang disebut Diavolino, tetapi tanpa kerangka kerja Arduino / kabel. Saya memiliki USB yang terhubung ke I / O 2 dan 3 digital, dan kartu SD ke 10-13 (jalur SPI bawaan).
Saya melihat-lihat perpustakaan kartu SD dan tidak menemukan tanda-tanda menggunakan interupsi atau register selain SPxx
. Saya juga sudah grep
memikirkan kode V-USB, tetapi bahkan tidak menyentuh SPxx
register.
Tanda pertama dari masalah adalah ketika perangkat terputus ketika seharusnya mengakses kartu SD. Kemudian saya meletakkan usbPoll()
dan wdt_reset()
memanggil semua loop penanganan kartu SD, dan menemukan bahwa dalam kasus penulisan, kartu menunggu selamanya untuk pengakuan dari kartu setelah mengirim dua byte terakhir (CRC-16).
Perpustakaan kartu SD yang saya gunakan adalah sd_raw
oleh Roland Riegel.