Файлова система

Най-разпространениете файлови системи използвани при флаш паметите са FAT12, FAT16 и FAT32. Тъй като количеството записвана и обработвана информация не е голямо (100байта/10мин) най-подходящата файлова система за използване от 8битов микроконтролер в случея на метео станцията е FAT16. Осигуряваща достатъчно голям максимален капацитет и простота на управление в сравнение с останалите файлови системи Таблица 2.4.


Table: Максимален обем на системата при различни размери на клъстерите
Размер на клъстер (байтове) FAT 12 FAT 16 FAT 32
1024 (1K) 4.1MB 67MB 4.398TB
4096 (4K) 16.7MB 268MB 17.59TB
8192 (8K) 33.4MB 536MB 35.18TB
16384 (16K) 66.8MB 1.07MB 70.36TB
32768 (32K) 134.2MB 2.14MB 140.7TB

За създаването и боравенето с файловете и файловата система е използвана предложената библиотека на mikroC. CF картата се управлява в 8 битов режим, което отнема 16 входа/изхода от микроконтролера. Използвани са основно 7 функции за управление на файловете. По-долу е показана извадка от кода [Приложение 1] за управление на файловете и файловата система, с поясняващи коментари за всяка една команда.

if (!Cf_Fat_Init()) {                 // Иниц. FAT библиотеката
  Delay_ms(2000);                     // почакай
  Cf_Fat_QuickFormat("WeatherData");  // бързо форматиране на CF картата
  Delay_ms(2000);                     // почакай
  }

При If условията по-долу - ако е успешно инициалицирана CF картата и ако не е създаден вече файл - то създай нов, иначе добави данните от файловия буфер filebuft във вече съществуващия файл.

if(Cf_Fat_Init() == 0){               // ако CF картата е инициалицилана
  if (Files_Created==0){              // не е създаден вече файл
  PORTA = 0x01;                       // светни индик. светодиод за запис
  filename[5] = 'T';                  // име на файла Data_T.CSV
  Cf_Fat_Set_File_Date(2010+year,month,day,hours,minutes,seconds);//с-ри дата и час
  Cf_Fat_Assign(&filename, 0xA0);     // намери съществ. файл или създай нов
  Cf_Fat_Rewrite();                   // изчисти файла и запиши на ново
  Cf_Fat_Write(filebuft, 52);   // запиши данните на назначения файл
  filecnt=0;                    // нулирай време-брояча за запис във файла
  Files_Created=1;              // опресни маркер, че е създаден файл
  PORTA = 0x00;                 // изгаси светодиода за запис
  }

else {                          // ако вече е създаден файл

  PORTA = 0x01;                 // светни индик. светодиод за запис
  filename[5] = 'T';            // име на файла Data_T.CSV
  Cf_Fat_Assign(&filename, 0xA0);  // намери съществ. файл или създай нов
  Cf_Fat_Set_File_Date(2010+year,month,day,hours,minutes,seconds);//с-ри дата и час

  Cf_Fat_Append();              // намери съществ файл и добави към него
  Cf_Fat_Write(filebuft, 52);   // запиши данните на назначения файл
  filecnt=0;                    // нулирай време-брояча за запис във файла
  PORTA = 0x00;                 // изгаси светодиода за запис
  }

Избора на формат на файла за съхранение е на базата на универсалността му за по-нататъчно използване и обработка със софтуерни продукти. CSV - Comma Separated Value стандарт файлов формат се използва са съхранение на таблична информация където цифрите и текста се съхраняват в чиста текстова форма и могат да бъдат отваряни от текстов редактор. Линиите в текста показват редовете на таблицата а запетайките в редовете отделят различните полета в колони. Има различни разновидности на *.CSV формата, за да може да поддържа по-богато таблично съдържание, като например използването на друг символ за разделяне (сепаратор) нужен ако в полетата с цифри се съдържат запетаи вместо десетични точки.

В текущата разработка е използван стандарт RFC 1480 за *.CSV формата извадка, от който може да бъде видяна по-долу.

Стандарта за формат на времето е според ISO 8601.

Date,Time,AirTemp,Humidity,WindDir,WindSpeed,SoilTemp,Pressure,SolarIndex,GammaRad
2011-04-23 08:35:00,+10.27,65,1,00,+19.0,1022,1.203,0.08
2011-04-23 08:45:00,+11.29,64,1,00,+19.0,1022,1.185,0.08
2011-04-23 08:55:00,+11.56,66,1,00,+19.0,1022,1.314,0.08
2011-04-23 09:05:00,+12.03,61,1,00,+19.0,1022,1.222,0.08



Deyan Levski 2013-06-22