vb2002 发表于 2024-8-6 14:44:28

写了个手电的pwm程序,每次上电都会闪一下

就像这样,每次上电在伟亮的情况下会闪一下,然后稳定,亮度高点的时候没感觉,就是微量特别明显

hsrzq 发表于 2024-8-6 15:32:26

把原理图发出来呀,应该是电路设计有瑕疵

vb2002 发表于 2024-8-6 15:53:07

hsrzq 发表于 2024-8-6 15:32
把原理图发出来呀,应该是电路设计有瑕疵

上面有视频,就在单片机上面就会闪,,
断电换挡eeprom

梁工 发表于 2024-8-6 15:53:20

上电路。

DebugLab 发表于 2024-8-6 16:02:23

用新出的默认高阻的型号,检查程序是否合理

soma 发表于 2024-8-6 16:02:28

有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。

vb2002 发表于 2024-8-6 16:15:02

梁工 发表于 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++;
      
}

vb2002 发表于 2024-8-6 16:15:22

soma 发表于 2024-8-6 16:02
有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。

没有设备,,

vb2002 发表于 2024-8-6 16:16:19

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++;
      
}

DebugLab 发表于 2024-8-6 16:17:50

vb2002 发表于 2024-8-6 16:16
问题可能是在换挡逻辑上,因为用了eeprom,提前读取下一个字节




上电二话别说先关闭输出,然后不能操作IO,读EEPROM,再打开输出
页: [1] 2 3
查看完整版本: 写了个手电的pwm程序,每次上电都会闪一下