mirror of
https://github.com/wagiminator/ATmega-Soldering-Station.git
synced 2025-08-08 13:00:59 +03:00
增加内存检查机制 Increased EEPROM memory check
增加内存检查机制 Increased EEPROM memory check
This commit is contained in:
@@ -162,7 +162,7 @@ bool BeepEnable = BEEP_ENABLE;
|
|||||||
#define TempP3 -0.0033245713
|
#define TempP3 -0.0033245713
|
||||||
#define TempP4 0.0000045338
|
#define TempP4 0.0000045338
|
||||||
float PTemp[4] = {TempP1, TempP2, TempP3, TempP4}; //温度拟合系数
|
float PTemp[4] = {TempP1, TempP2, TempP3, TempP4}; //温度拟合系数
|
||||||
const uint16_t CalTemp[9] = {50,100,150,200,250,300,350,400,450};
|
const uint16_t CalTemp[9] = {50, 100, 150, 200, 250, 300, 350, 400, 450};
|
||||||
char TipName[TIPNAMELENGTH] = {TIPNAME};
|
char TipName[TIPNAMELENGTH] = {TIPNAME};
|
||||||
uint8_t CurrentTip = 0;
|
uint8_t CurrentTip = 0;
|
||||||
uint8_t NumberOfTips = 1;
|
uint8_t NumberOfTips = 1;
|
||||||
@@ -218,7 +218,7 @@ byte Line[4];
|
|||||||
bool RotaryD = false;
|
bool RotaryD = false;
|
||||||
|
|
||||||
//开机非线性动画
|
//开机非线性动画
|
||||||
byte BootAnimationY=64;
|
byte BootAnimationY = 64;
|
||||||
|
|
||||||
// Specify the links and initial PID tuning parameters
|
// Specify the links and initial PID tuning parameters
|
||||||
PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE);
|
PID ctrl(&Input, &Output, &Setpoint, aggKp, aggKi, aggKd, REVERSE);
|
||||||
@@ -283,7 +283,7 @@ void setup() {
|
|||||||
|
|
||||||
//设置屏幕亮度
|
//设置屏幕亮度
|
||||||
SetOLEDLightLevel(32); //降低屏幕亮度 延长OLED使用寿命
|
SetOLEDLightLevel(32); //降低屏幕亮度 延长OLED使用寿命
|
||||||
|
|
||||||
//初始化屏幕保护动画
|
//初始化屏幕保护动画
|
||||||
for (byte a = 0; a < 4; a++) Line[a] = 32 * a;
|
for (byte a = 0; a < 4; a++) Line[a] = 32 * a;
|
||||||
|
|
||||||
@@ -311,7 +311,7 @@ void setup() {
|
|||||||
setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp);
|
setRotary(TEMP_MIN, TEMP_MAX, TEMP_STEP, DefaultTemp);
|
||||||
// reset sleep timer
|
// reset sleep timer
|
||||||
Sleepmillis = millis();
|
Sleepmillis = millis();
|
||||||
|
|
||||||
// long beep for setup completion
|
// long beep for setup completion
|
||||||
beep(); beep();
|
beep(); beep();
|
||||||
ShowVersion();
|
ShowVersion();
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,60 @@
|
|||||||
|
/*EEPROM可用性检查
|
||||||
|
作用:防止因为EEPROM损坏而载入了错误的运行参数导致参数生产安全事故
|
||||||
|
*/
|
||||||
|
void CheckEEPROM() {
|
||||||
|
byte w, r;
|
||||||
|
int pass = 0, fail = 0;
|
||||||
|
for (int i = 0; i < EEPROM.length(); i++) {
|
||||||
|
//内存测试程序
|
||||||
|
w = random(0, 255);
|
||||||
|
EEPROM[i] = w;
|
||||||
|
r = EEPROM[i];
|
||||||
|
if (w == r) pass++; else fail++;
|
||||||
|
|
||||||
|
//显示测试数据
|
||||||
|
arduboy.clear();
|
||||||
|
arduboy.setTextSize(2);
|
||||||
|
SetTextColor(0);
|
||||||
|
arduboy.setCursor(0, 0);
|
||||||
|
arduboy.print(F(" MEM CHECK "));
|
||||||
|
|
||||||
|
arduboy.setTextSize(1);
|
||||||
|
arduboy.setCursor(8, 40);
|
||||||
|
arduboy.print(i); arduboy.print(F("/")); arduboy.print(EEPROM.length());
|
||||||
|
SetTextColor(1);
|
||||||
|
arduboy.setCursor(0 + 8, 24); arduboy.print(F("PASS-")); arduboy.print(pass);
|
||||||
|
arduboy.setCursor(64 + 8, 24); arduboy.print(F("FAIL-")); arduboy.print(fail);
|
||||||
|
|
||||||
|
arduboy.setCursor(0 + 8, 32); arduboy.print(F("W -> ")); arduboy.print(w);
|
||||||
|
arduboy.setCursor(64 + 8, 32); arduboy.print(F("R -> ")); arduboy.print(r);
|
||||||
|
|
||||||
|
|
||||||
|
//进度标
|
||||||
|
arduboy.setCursor(map(i, 0, EEPROM.length(), 0, 92), 52);
|
||||||
|
arduboy.print(((float)i / EEPROM.length())*100); arduboy.print(F("%"));
|
||||||
|
//进度条
|
||||||
|
arduboy.fillRect(0, 60, map(i, 0, EEPROM.length(), 0, 127), 4, 1);
|
||||||
|
arduboy.display();
|
||||||
|
}
|
||||||
|
//EEPROM存储器可用性检查失败
|
||||||
|
while (fail == 0) {
|
||||||
|
arduboy.clear();
|
||||||
|
arduboy.setTextSize(2);
|
||||||
|
SetTextColor(1);
|
||||||
|
arduboy.setCursor(22, 16);
|
||||||
|
arduboy.print(F("DAMAGED"));
|
||||||
|
arduboy.setTextSize(1);
|
||||||
|
arduboy.setCursor(31, 44);
|
||||||
|
SetTextColor(0);
|
||||||
|
if (millis() / 1000 % 2 == 0)arduboy.print(F("BOOT FAILED"));
|
||||||
|
arduboy.display();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*查看EEPROM内存
|
||||||
|
通过板载的旋转编码器可以上下滚动翻阅EEPROM中的数据
|
||||||
|
*/
|
||||||
void ViewEEPRom() {
|
void ViewEEPRom() {
|
||||||
setRotary(0, 1023, 16, 0);
|
setRotary(0, 1023, 16, 0);
|
||||||
lastbutton = (!digitalRead(BUTTON_PIN));
|
lastbutton = (!digitalRead(BUTTON_PIN));
|
||||||
@@ -98,6 +155,7 @@ void GetEEPROM() {
|
|||||||
RotaryD = EEPROM.read(20);
|
RotaryD = EEPROM.read(20);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
CheckEEPROM();
|
||||||
EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF);
|
EEPROM.update(0, EEPROM_IDENT >> 8); EEPROM.update(1, EEPROM_IDENT & 0xFF);
|
||||||
UpdateEEPROM();
|
UpdateEEPROM();
|
||||||
}
|
}
|
||||||
|
@@ -74,15 +74,8 @@ uint16_t getVCC() {
|
|||||||
// get supply voltage in mV
|
// get supply voltage in mV
|
||||||
uint16_t getVIN() {
|
uint16_t getVIN() {
|
||||||
long result;
|
long result;
|
||||||
result = denoiseAnalog (VIN_PIN); {
|
result = denoiseAnalog (VIN_PIN); // read supply voltage via voltage divider
|
||||||
if (result < 540) return (result * Vcc / 184.416 + 86.987);
|
return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13)
|
||||||
else if (result < 660) return (result * Vcc / 173.204 - 878.29);
|
|
||||||
else if (result < 745) return (result * Vcc / 143.579 - 4875);
|
|
||||||
else if (result < 781) return (result * Vcc / 119.109 - 10260);
|
|
||||||
else if (result < 800) return (result * Vcc / 86.178 - 23013);
|
|
||||||
else return (result * Vcc / 86.178 - 23113);
|
|
||||||
} // read supply voltage via voltage divider
|
|
||||||
//return (result * Vcc / 179.474); // 179.474 = 1023 * R13 / (R12 + R13)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//ADC中断服务
|
//ADC中断服务
|
||||||
|
Reference in New Issue
Block a user