Tôi đang làm việc trên một dự án V-USB hiển thị dưới dạng Bàn phím sử dụng ATmega328p. Phần USB hoạt động rất tốt (đó không phải là dự án V-USB đầu tiên của tôi), nhưng sau khi tôi khởi động ngăn xếp V-USB usbInit()
, tất cả các cuộc gọi đến thư viện thẻ SD đều thất bại. Nếu tôi gọi các chức năng tương tự trước đây usbInit()
, mọi thứ hoạt động hoàn hảo.
Tôi sử dụng một bản sao Arduino được gọi là Diavolino, nhưng không có khung Arduino / dây. Tôi có USB được kết nối với I / O 2 và 3 kỹ thuật số và thẻ SD thành 10-13 (dòng SPI tích hợp).
Tôi đã xem qua thư viện thẻ SD và không tìm thấy dấu hiệu nào của nó bằng cách sử dụng bất kỳ ngắt hoặc đăng ký nào khác ngoài SPxx
. Tôi cũng grep
mặc dù mã V-USB, nhưng nó thậm chí không chạm vào các SPxx
thanh ghi.
Dấu hiệu đầu tiên của sự cố là khi thiết bị bị ngắt kết nối khi cần thiết phải truy cập thẻ SD. Sau đó, tôi đặt usbPoll()
và wdt_reset()
gọi vào tất cả các vòng xử lý thẻ SD và thấy rằng trong trường hợp viết, thẻ sẽ đợi mãi để nhận được thẻ sau khi đã gửi hai byte cuối (CRC-16).
Thư viện thẻ SD tôi sử dụng là sd_raw
của Roland Riegel.