You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
2.2 KiB

#include <stdio.h>
#include "IdiBusSlave.h"
#include "IDIBUS_IMPL.h"
#include "Serial.h"
#include "DS3231.h"
#include "time.h"
#include "fs.h"
#include "spi.h"
#include "sd.h"
//Structure that holds module's data
XXX_NAME_channel_data_t XXX_NAME_channels_data[IDIBUS_XXX_NAME_CH_NUM];
static void custom_init()
{
}
static void custom_shutdown()
{
}
static void custom_freeze()
{
}
static void custom_resume()
{
}
void SlaveInit() // Intr is ON
{
IdiBus_register_init(custom_init);
IdiBus_register_shutdown(custom_shutdown);
IdiBus_register_freeze(custom_freeze);
IdiBus_register_resume(custom_resume);
Debug.begin(57600);
Debug.writeln("Program start");
initDS3231();
Debug.writeln("Clock RTC Init");
ds3231SetDate(18);
ds3231SetMonth(DS_JUNE);
ds3231SetYear(26);
spi_init();
if (!sd_init())
{
Debug.writeln("SD ready");
}
else
{
Debug.writeln("SD failed");
}
Debug.writeln("Initializing file system... ");
if (!fs_init())
{
Debug.writeln("FS ready");
}
else
{
Debug.writeln("FS failed");
}
Debug.writeln("file system type: ");
if (fs_type == 1)
{
Debug.writeln("FAT32");
}
else if (fs_type == 0)
{
Debug.writeln("FAT16");
}
else Debug.writeln("UNKNOWN");
strcpy((char*)buf, "NEWFILE.DAT");
if (fs_create() != 0) {
// Îøèáêà ñîçäàíèÿ
Debug.writeln("No create");
}
// Çàïèñàòü äàííûå
uint8_t data[] = "Hello, World!";
if (fs_write(data, sizeof(data) - 1) != 0) {
Debug.writeln("No write");
}
fs_file.opened = OPENED_NONE;
}
static int16_t temperature; // For whatever reason...
void updateTimeFromRtc()
{
static uint32_t timestamp_read = 0;
static const uint32_t PERIOD_MS = 1000;
if (System_GetSysTickDifference(timestamp_read) > PERIOD_MS)
{
temperature = ds3231GetTemperature();
char buf[64] = {0};
sprintf(buf, "Date %d:%d:%d - %d.%d.%d Temp:%i",
ds3231GetHour(), ds3231GetMinute(), ds3231GetSecond(),
ds3231GetDate(), ds3231GetMonth(), ds3231GetYear(),
temperature);
Debug.writeln(buf);
timestamp_read = System_GetSysTick();
}
}
void SlaveLoop()
{
//Read any data that can change in channels data
updateTimeFromRtc();
//Do some app logic
//..
//Update channel data
//Exit
}