凌晨4点半,搞定..eeprom掉电保存搞定哈哈哈哈哈哈哈
凌晨4点半,搞定..eeprom掉电保存搞定哈哈哈哈哈哈哈机械手电的代码有点雏形了
可以断电换挡了
不过还有点需要完善的地方,就是记忆换挡,500ms 以内开关换挡,
500ms以后打开,读取上一次的亮度
还有快速关断 2次,爆闪,3次极亮
4个档位,占空比分别是 1月光,5微量,15常量,55常高亮...三击250 极亮.(未完善),,掉电500ms以上读取上次占空比(未完善)
500ms需要 开启定时器功能
但是这里有一点没想清楚,,机械开关,关的时候,是断电的,也就是单片机没有电源,这个时候怎么计时?
另一个思路是用电容保存一点点电,,,还没想清楚.
希望大佬指点指点 代码发出来学习下 wnagming 发表于 2024-8-2 05:26
机械开关不要控制电源,将其接到IO口上,开关机给单片机信号,关机单片机进入省电模式 ...
是的 接外部中断引脚上。 单片机不断电,进入省电模式
或刚上电的500ms内断电就换挡(上电就换挡,500ms后如没断电再换回去)
这样通电一次擦写2次EEPROM,需要注意EEPROM擦写次数10万次寿命 DebugLab 发表于 2024-8-2 09:28
单片机不断电,进入省电模式
或刚上电的500ms内断电就换挡(上电就换挡,500ms后如没断电再换回去)
这样通 ...
机械开关的手电必须要断电的.
关于 您说的注意eeprom擦写寿命,..您看看他说的这个对吗? 可实行吗?
wnagming 发表于 2024-8-2 05:26
机械开关不要控制电源,将其接到IO口上,开关机给单片机信号,关机单片机进入省电模式 ...
这个怕是不行.机械开关通常设计在手电尾部.
GND考手电桶身导电
要走大电流的. 8安左右 嵌入式之路 发表于 2024-8-2 05:40
代码发出来学习下
乱七八糟写的,我不好意思放出来.
void main()
{
char dat = 0;
sys_init();
UartInit();
// IapErase(add);
// IapProgram(add, 0);
state=IapRead(add);
if(state<=3)
{
state++;
}
else
state=1;
IapErase(add);
IapProgram(add, state);
UartSend(IapRead(add));
PWMA_CCR1 = state;
// if(temp != 0xFF) number = temp;
while(1)
{
switch(state)
{
case 0 :PWMA_CCR1 = 5; break;
case 1 :PWMA_CCR1 = 15; break;
case 2 :PWMA_CCR1 = 55; break;
case 3 :PWMA_CCR1 = 250; break;
default:break;
}
}
}
vb2002 发表于 2024-8-2 11:03
机械开关的手电必须要断电的.
关于 您说的注意eeprom擦写寿命,..您看看他说的这个对吗? 可实行吗?
那就开机瞬间状态+1,500ms后没关机就再还原
对,只有擦除消耗寿命
页:
[1]
2