#include "stm32f1xx_hal.h" #ifndef INC_EEPROM_H_ #define INC_EEPROM_H_ #define AT24C_ADRESS 0x50 // i2c slave adress EEPROM #define START_ADR_STAT 0x0000 //00000 #define STAT_BLOCKSIZE 20 #define START_ADR_SHOT (START_ADR_STAT+STAT_BLOCKSIZE) // 0x0014 = 20 #define SHOT_BLOCKSIZE 10 #define MAX_NUMBER_SHOTS 255 #define START_ADR_PROGRAM (START_ADR_SHOT + (SHOT_BLOCKSIZE*MAX_NUMBER_SHOTS)) // 0x0A0A = 2570 #define PROGRAM_BLOCKSIZE 203 #define MAX_NUMBER_PROGRAMS 100 #define MAX_NUMBER_SHOTS_IN_PROGRAMS \ (PROGRAM_BLOCKSIZE-sizeof(ProgramHeader)) /sizeof(ProgramShot) // 100 #define START_ADR_MACRO (START_ADR_PROGRAM + (PROGRAM_BLOCKSIZE*MAX_NUMBER_PROGRAMS)) // 0x5956 = 22870 #define MACRO_BLOCKSIZE 81 #define MAX_NUMBER_MACRO 100 #define MAX_NUMBER_PROGRAMS_IN_MACRO \ (MACRO_BLOCKSIZE-sizeof(MacroHeader)) /sizeof(MacroProgram) // 20 #define MEMORY_END (START_ADR_MACRO + (MACRO_BLOCKSIZE*MAX_NUMBER_MACRO)) // 0x78FA = 30970 typedef struct Shot { unsigned char isExist; unsigned char countRepeatShot; unsigned char speedRollerTop; // 0 .. 100 .. 200 unsigned char speedRollerBottom; // 0 .. 100 .. 200 unsigned char speedScrew; // 0 .. 100 unsigned char rotationAxial; // 0 .. 90 .. 180 unsigned char rotationHorizontal; // 0 .. 90 .. 180 unsigned char rotationVertical; // 0 .. 90 .. 180 }Shot; typedef struct ProgramHeader { unsigned char isExist; unsigned char countRepeat; unsigned char options; }ProgramHeader; typedef struct ProgramShot { unsigned char id; unsigned char speedScrew; }ProgramShot; typedef struct Program { ProgramHeader header; ProgramShot shots[MAX_NUMBER_SHOTS_IN_PROGRAMS]; }Program; typedef struct MacroHeader { unsigned char isExist; }MacroHeader; typedef struct MacroProgram { unsigned char id; unsigned char speedScrew; unsigned char countRepeat; unsigned char options; }MacroProgram; typedef struct Macro { MacroHeader header; MacroProgram programs[MAX_NUMBER_PROGRAMS_IN_MACRO]; } Macro; void FLASH_WriteBlock(uint16_t startAddr, uint8_t number,uint8_t *writeData); void FLASH_ReadBlock(uint16_t startAddr, uint8_t number, uint8_t *outData); void SaveShot(unsigned char number, struct Shot* shot); Shot GetShot( unsigned char number ); #endif /* INC_EEPROM_H_ */