写了个手电的pwm程序,每次上电都会闪一下
就像这样,每次上电在伟亮的情况下会闪一下,然后稳定,亮度高点的时候没感觉,就是微量特别明显把原理图发出来呀,应该是电路设计有瑕疵 hsrzq 发表于 2024-8-6 15:32
把原理图发出来呀,应该是电路设计有瑕疵
上面有视频,就在单片机上面就会闪,,
断电换挡eeprom
上电路。 用新出的默认高阻的型号,检查程序是否合理 有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。 梁工 发表于 2024-8-6 15:53
上电路。
没用到电路,视频里面用的最简stc下载板,
单片机用的stc8h1k17,io口用的 p11。
void Timer0_Isr(void) interrupt 1
{
if(time<=100)
{
switch(dat)
{
case 253: IapProgram(EEPROMId+1,2);break;
case 2: IapProgram(EEPROMId+1,16);break;
case 16: IapProgram(EEPROMId+1,56);break;
default: IapProgram(EEPROMId+1,253);break;
}
}
else
{
switch(dat)
{
case 2:IapProgram(EEPROMId+2,dat);break;
case 16: IapProgram(EEPROMId+2,dat);break;
case 56: IapProgram(EEPROMId+2,dat);break;
case 253: IapProgram(EEPROMId+2,dat);break;
default:IapProgram(EEPROMId+2,2); break;
}
}
if(time<=200) time++;
} soma 发表于 2024-8-6 16:02
有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。
没有设备,, DebugLab 发表于 2024-8-6 16:02
用新出的默认高阻的型号,检查程序是否合理
问题可能是在换挡逻辑上,因为用了eeprom,提前读取下一个字节
void Timer0_Isr(void) interrupt 1
{
if(time<=100)
{
switch(dat)
{
case 253: IapProgram(EEPROMId+1,2);break;
case 2: IapProgram(EEPROMId+1,16);break;
case 16: IapProgram(EEPROMId+1,56);break;
default: IapProgram(EEPROMId+1,253);break;
}
}
else
{
switch(dat)
{
case 2:IapProgram(EEPROMId+2,dat);break;
case 16: IapProgram(EEPROMId+2,dat);break;
case 56: IapProgram(EEPROMId+2,dat);break;
case 253: IapProgram(EEPROMId+2,dat);break;
default:IapProgram(EEPROMId+2,2); break;
}
}
if(time<=200) time++;
} vb2002 发表于 2024-8-6 16:16
问题可能是在换挡逻辑上,因为用了eeprom,提前读取下一个字节
上电二话别说先关闭输出,然后不能操作IO,读EEPROM,再打开输出