mirror of
https://github.com/DashyFox/StackSport.git
synced 2025-05-04 15:20:16 +00:00
EEPROM tests
This commit is contained in:
parent
c85e6aca95
commit
beb5ed6be3
@ -127,6 +127,7 @@ MemoryStatus getProg(unsigned char number, Program *prog);
|
|||||||
MemoryStatus saveMacro(unsigned char number, Macro *macro);
|
MemoryStatus saveMacro(unsigned char number, Macro *macro);
|
||||||
MemoryStatus getMacro(unsigned char number, Macro *macro);
|
MemoryStatus getMacro(unsigned char number, Macro *macro);
|
||||||
|
|
||||||
MemoryStatus getHardwareInit();
|
MemoryStatus saveInfoBlock(InfoBlock *infoBlock);
|
||||||
|
MemoryStatus getInfoBlock(InfoBlock *infoBlock);
|
||||||
|
|
||||||
#endif /* INC_EEPROM_H_ */
|
#endif /* INC_EEPROM_H_ */
|
||||||
|
@ -4,6 +4,21 @@
|
|||||||
#include "Print.h"
|
#include "Print.h"
|
||||||
|
|
||||||
|
|
||||||
|
MemoryStatus saveInfoBlock(InfoBlock *infoBlock) {
|
||||||
|
return FLASH_WriteBlock(START_ADR_STAT, 0, (uint8_t *)infoBlock, sizeof(InfoBlock));
|
||||||
|
}
|
||||||
|
|
||||||
|
MemoryStatus getInfoBlock(InfoBlock *infoBlock) {
|
||||||
|
MemoryStatus status = FLASH_ReadBlock(START_ADR_STAT, 0, (uint8_t *)infoBlock, sizeof(InfoBlock));
|
||||||
|
|
||||||
|
if (status != EEPROM_OK) {
|
||||||
|
return EEPROM_FAIL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EEPROM_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MemoryStatus saveShot(unsigned char number, Shot* shot)
|
MemoryStatus saveShot(unsigned char number, Shot* shot)
|
||||||
{
|
{
|
||||||
if (FLASH_WriteBlock(START_ADR_SHOT, number, (uint8_t*)shot, SHOT_BLOCKSIZE) == EEPROM_OK) {
|
if (FLASH_WriteBlock(START_ADR_SHOT, number, (uint8_t*)shot, SHOT_BLOCKSIZE) == EEPROM_OK) {
|
||||||
@ -116,7 +131,10 @@ MemoryStatus FLASH_WriteBlock(uint16_t startAddr, uint8_t number, uint8_t *write
|
|||||||
|
|
||||||
result = HAL_I2C_Master_Transmit(&hi2c1, (AT24C_ADRESS << 1), Buf, (dataSize + 2), 10);
|
result = HAL_I2C_Master_Transmit(&hi2c1, (AT24C_ADRESS << 1), Buf, (dataSize + 2), 10);
|
||||||
HAL_Delay(1);
|
HAL_Delay(1);
|
||||||
return result;
|
if(result != HAL_OK){
|
||||||
|
return EEPROM_FAIL;
|
||||||
|
}
|
||||||
|
return EEPROM_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryStatus FLASH_ReadBlock(uint16_t startAddr, uint8_t number, uint8_t *readData, uint8_t dataSize)
|
MemoryStatus FLASH_ReadBlock(uint16_t startAddr, uint8_t number, uint8_t *readData, uint8_t dataSize)
|
||||||
@ -137,7 +155,10 @@ MemoryStatus FLASH_ReadBlock(uint16_t startAddr, uint8_t number, uint8_t *readDa
|
|||||||
|
|
||||||
result = HAL_I2C_Master_Transmit(&hi2c1, (AT24C_ADRESS << 1), blockAddr, 2, 10);
|
result = HAL_I2C_Master_Transmit(&hi2c1, (AT24C_ADRESS << 1), blockAddr, 2, 10);
|
||||||
HAL_Delay(1);
|
HAL_Delay(1);
|
||||||
result = HAL_I2C_Master_Receive(&hi2c1, (AT24C_ADRESS << 1), readData, dataSize, 10);
|
result = HAL_I2C_Master_Receive(&hi2c1, (AT24C_ADRESS << 1) | 1, readData, dataSize, 10);
|
||||||
HAL_Delay(1);
|
HAL_Delay(1);
|
||||||
return result;
|
if(result != HAL_OK){
|
||||||
|
return EEPROM_FAIL;
|
||||||
|
}
|
||||||
|
return EEPROM_OK;
|
||||||
}
|
}
|
||||||
|
@ -72,27 +72,67 @@ void IR_Home_Process() {
|
|||||||
onHoldRepeat = IR_Home_Process;
|
onHoldRepeat = IR_Home_Process;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IR_F_BTN:
|
case IR_F_BTN: {
|
||||||
// {
|
InfoBlock infoBlock;
|
||||||
// Shot testShot = GetShot(3);
|
|
||||||
// if(!testShot.isExist){
|
// Чтение структуры InfoBlock из EEPROM
|
||||||
// testShot.countRepeatShot = 1;
|
MemoryStatus status = getInfoBlock(&infoBlock);
|
||||||
// testShot.speedRollerTop = 200;
|
if (status != EEPROM_OK) {
|
||||||
// testShot.speedRollerBottom = 200;
|
char errorMsg[] = "Error reading InfoBlock from EEPROM\n";
|
||||||
// testShot.speedScrew = 100;
|
CDC_Transmit_FS((uint8_t*)errorMsg, strlen(errorMsg));
|
||||||
// testShot.rotationAxial = 90;
|
break;
|
||||||
// testShot.rotationHorizontal = 90;
|
}
|
||||||
// testShot.rotationVertical = 90;
|
|
||||||
//
|
// Буфер для строки вывода
|
||||||
// SaveShot(3, &testShot);
|
char buffer[128];
|
||||||
// doShot(&testShot);
|
|
||||||
// }
|
// Вывод информации о HardwareInit_t
|
||||||
// }
|
snprintf(buffer, sizeof(buffer), "Hardware Initialization:\n");
|
||||||
break;
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Servo 1: Invert=%u, Min=%u, Default=%u, Max=%u\n",
|
||||||
|
infoBlock.hwInfo.servos[0].invert, infoBlock.hwInfo.servos[0].min,
|
||||||
|
infoBlock.hwInfo.servos[0].def, infoBlock.hwInfo.servos[0].max);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Servo 2: Invert=%u, Min=%u, Default=%u, Max=%u\n",
|
||||||
|
infoBlock.hwInfo.servos[1].invert, infoBlock.hwInfo.servos[1].min,
|
||||||
|
infoBlock.hwInfo.servos[1].def, infoBlock.hwInfo.servos[1].max);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Servo 3: Invert=%u, Min=%u, Default=%u, Max=%u\n",
|
||||||
|
infoBlock.hwInfo.servos[2].invert, infoBlock.hwInfo.servos[2].min,
|
||||||
|
infoBlock.hwInfo.servos[2].def, infoBlock.hwInfo.servos[2].max);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Motors: Speed_Rollers_Min=%u, Speed_Screw_Min=%u\n",
|
||||||
|
infoBlock.hwInfo.motors.speed_Rollers_min, infoBlock.hwInfo.motors.speed_Screw_min);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
// Вывод информации о DelayTimes
|
||||||
|
snprintf(buffer, sizeof(buffer), "Timings: PreRun=%u\n", infoBlock.hwInfo.timings.preRun);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
// Вывод информации о Statistics
|
||||||
|
snprintf(buffer, sizeof(buffer), "Statistics:\n");
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Total Shots: %lu\n", infoBlock.statInfo.totalShots);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Total Programs: %lu\n", infoBlock.statInfo.totalPrograms);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
snprintf(buffer, sizeof(buffer), "Total Macros: %lu\n", infoBlock.statInfo.totalMacros);
|
||||||
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
case IR_PAUSE:
|
case IR_PAUSE:
|
||||||
{
|
{
|
||||||
uint8_t buf[128]; // Буфер для чтения данных размером 128 байт
|
uint8_t buf[8]; // Буфер для чтения данных размером 128 байт
|
||||||
uint16_t blockAddr16 = 0; // Начальный адрес EEPROM
|
uint16_t blockAddr16 = 0; // Начальный адрес EEPROM
|
||||||
uint8_t blockAddr[2] = { (uint8_t)(blockAddr16 >> 8), (uint8_t)(blockAddr16 & 0xFF) }; // Адрес в формате 2 байта
|
uint8_t blockAddr[2] = { (uint8_t)(blockAddr16 >> 8), (uint8_t)(blockAddr16 & 0xFF) }; // Адрес в формате 2 байта
|
||||||
int max_attempts = 15; // Максимальное количество попыток для операции
|
int max_attempts = 15; // Максимальное количество попыток для операции
|
||||||
@ -108,7 +148,7 @@ void IR_Home_Process() {
|
|||||||
continue; // Переход к следующей попытке
|
continue; // Переход к следующей попытке
|
||||||
}
|
}
|
||||||
|
|
||||||
HAL_Delay(1); // Небольшая задержка
|
HAL_Delay(5); // Небольшая задержка
|
||||||
|
|
||||||
// Читаем 128 байт данных из EEPROM
|
// Читаем 128 байт данных из EEPROM
|
||||||
status = HAL_I2C_Master_Receive(&hi2c1, (AT24C_ADRESS << 1) | 1, buf, sizeof(buf), 1000);
|
status = HAL_I2C_Master_Receive(&hi2c1, (AT24C_ADRESS << 1) | 1, buf, sizeof(buf), 1000);
|
||||||
@ -119,7 +159,7 @@ void IR_Home_Process() {
|
|||||||
if (i % 8 == 0) print(" ");
|
if (i % 8 == 0) print(" ");
|
||||||
if (i % 32 == 0) print("\n");
|
if (i % 32 == 0) print("\n");
|
||||||
|
|
||||||
// snprintf(buffer, sizeof(buffer), "%02X ", buf[i]); // Преобразуем байт в шестнадцатеричную строку
|
snprintf(buffer, sizeof(buffer), "%02X ", buf[i]); // Преобразуем байт в шестнадцатеричную строку
|
||||||
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
CDC_Transmit_FS((uint8_t*)buffer, strlen(buffer));
|
||||||
}
|
}
|
||||||
break; // Выход из попыток, если чтение успешно
|
break; // Выход из попыток, если чтение успешно
|
||||||
|
Loading…
x
Reference in New Issue
Block a user