找回密码
 立即注册
查看: 881|回复: 20

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 00:50:51
已绑定手机

130

主题

1521

回帖

1861

积分

金牌会员

积分
1861
发表于 2024-8-6 14:44:28 来自手机 | 显示全部楼层 |阅读模式
就像这样,每次上电在伟亮的情况下会闪一下,然后稳定,亮度高点的时候没感觉,就是微量特别明显
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:456
  • 最近打卡:2025-05-02 08:26:53
已绑定手机

27

主题

341

回帖

1691

积分

金牌会员

机长

积分
1691
发表于 2024-8-6 15:32:26 | 显示全部楼层
把原理图发出来呀,应该是电路设计有瑕疵
业余撸代码,专业开飞机
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 00:50:51
已绑定手机

130

主题

1521

回帖

1861

积分

金牌会员

积分
1861
发表于 2024-8-6 15:53:07 来自手机 | 显示全部楼层
hsrzq 发表于 2024-8-6 15:32
把原理图发出来呀,应该是电路设计有瑕疵

上面有视频,就在单片机上面就会闪,,
断电换挡eeprom
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12079
发表于 2024-8-6 15:53:20 | 显示全部楼层
上电路。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4850

回帖

8384

积分

超级版主

DebugLab

积分
8384
发表于 2024-8-6 16:02:23 | 显示全部楼层
用新出的默认高阻的型号,检查程序是否合理
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-02 07:55:56
已绑定手机

19

主题

3191

回帖

4872

积分

论坛元老

积分
4872
发表于 2024-8-6 16:02:28 来自手机 | 显示全部楼层
有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 00:50:51
已绑定手机

130

主题

1521

回帖

1861

积分

金牌会员

积分
1861
发表于 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++;
        
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 00:50:51
已绑定手机

130

主题

1521

回帖

1861

积分

金牌会员

积分
1861
发表于 2024-8-6 16:15:22 来自手机 | 显示全部楼层
soma 发表于 2024-8-6 16:02
有逻辑分析仪可以断开LED测Io口状态就大概知道问题在哪了。

没有设备,,
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:351
  • 最近打卡:2025-05-02 00:50:51
已绑定手机

130

主题

1521

回帖

1861

积分

金牌会员

积分
1861
发表于 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++;
        
}

点评

上电二话别说先关闭输出,然后不能操作IO,读EEPROM,再打开输出  详情 回复 发表于 2024-8-6 16:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:424
  • 最近打卡:2025-05-02 14:37:11
已绑定手机

77

主题

4850

回帖

8384

积分

超级版主

DebugLab

积分
8384
发表于 2024-8-6 16:17:50 | 显示全部楼层
vb2*** 发表于 2024-8-6 16:16
问题可能是在换挡逻辑上,因为用了eeprom,提前读取下一个字节

上电二话别说先关闭输出,然后不能操作IO,读EEPROM,再打开输出
DebugLab
回复 支持 1 反对 0

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 22:01 , Processed in 0.201727 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表