Запись данных на SD-карту с помощью ATtiny85
Применение ATtiny с SD-картой затруднено из-за отсутствия аппаратного SPI в attiny. Код "ATmega" для создания "SD-файла" выглядит следующим образом:
#include <SPI.h>
#include <SD.h>
File file;
int const pinCS = 2;
void setup()
{
SD.begin(pinCS);
file = SD.open("Test.txt", FILE_WRITE);
file.println("anything");
file.close();}
void loop()
{}
Этот код создает на SD-карте файл "Test.txt" и в этот файл записывается текст "anathing". Можно ли переписать этот код для "ATtiny85"?
@Josef, 👍2
1 ответ
ATtiny85 не имеет выделенного порта SPI. Однако у него есть порт “USI” (Универсальный последовательный интерфейс), который должен быть в состоянии выполнить эту работу. Отсутствие SPI не должно быть проблемой, но нехватка памяти будет проблемой.
Файлы на SD-карте записываются по одному сектору (512 байт) за раз. По этой причине библиотека SD использует буфер объемом 512 байт в оперативной памяти. Это не может работать на ATtiny85, так как буфер будет потреблять всю оперативную память.
Возможно, вы сможете что-то сделать, используя библиотеку Petit FAT, при условии, что вы сможете обойти серьезные ограничения ее интерфейса записи:
Функция записи имеет некоторые ограничения, перечисленные ниже:
- Не удается создать файл. Может быть записан только существующий файл.
- Не удается увеличить размер файла.
- Не удается обновить отметку времени файла.
- Операция записи может начинаться/останавливаться только на границе сектора.
- Атрибут только для чтения файла не может блокировать операцию записи.
Первые два пункта подразумевают, что вам придется создать файл и выделить для него сектора на вашем компьютере.
В этом сообщении в блоге упоминается порт библиотеки для среды Arduino и его использование на ATtiny84, который имеет возможности, аналогичные возможностям ATtiny85 (только с большим количеством контактов).
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
- При использовании Arduino Uno в качестве ISP: "Yikes! Invalid device signature" - плохое соединение, неверную конфигурацию или неверную версию avrdude?
- Как увеличить скорость записи на SD-карту в Ардуино
- Связь ATtiny85 с компьютером через USB
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- SD-карта не инициализируется
- avrdude: ошибка проверки, первое несоответствие в байте 0x0000 : 0x00 != 0x16 с использованием USBasp
- Что означают эти контакты? Куда мне их подключить?
Спасибо вам за этот соответствующий ответ. Нет проблем, ATmega работает хорошо в этой связи, но ...attiny меньше и симпатичнее. Жаль, ограничения "Petit.." - это проблема. Спасибо., @Josef