Запись данных на 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"?

, 👍2


1 ответ


2

ATtiny85 не имеет выделенного порта SPI. Однако у него есть порт “USI” (Универсальный последовательный интерфейс), который должен быть в состоянии выполнить эту работу. Отсутствие SPI не должно быть проблемой, но нехватка памяти будет проблемой.

Файлы на SD-карте записываются по одному сектору (512 байт) за раз. По этой причине библиотека SD использует буфер объемом 512 байт в оперативной памяти. Это не может работать на ATtiny85, так как буфер будет потреблять всю оперативную память.

Возможно, вы сможете что-то сделать, используя библиотеку Petit FAT, при условии, что вы сможете обойти серьезные ограничения ее интерфейса записи:

Функция записи имеет некоторые ограничения, перечисленные ниже:

  • Не удается создать файл. Может быть записан только существующий файл.
  • Не удается увеличить размер файла.
  • Не удается обновить отметку времени файла.
  • Операция записи может начинаться/останавливаться только на границе сектора.
  • Атрибут только для чтения файла не может блокировать операцию записи.

Первые два пункта подразумевают, что вам придется создать файл и выделить для него сектора на вашем компьютере.

В этом сообщении в блоге упоминается порт библиотеки для среды Arduino и его использование на ATtiny84, который имеет возможности, аналогичные возможностям ATtiny85 (только с большим количеством контактов).

,

Спасибо вам за этот соответствующий ответ. Нет проблем, ATmega работает хорошо в этой связи, но ...attiny меньше и симпатичнее. Жаль, ограничения "Petit.." - это проблема. Спасибо., @Josef