liners 发表于 2025-7-1 16:35:06

发现勾选上电复位采用较长延时的一个怪现象

有两个LCD分别由STC8H8K64和STC8H2K12U,

两个的单独控制显示都没有问题,
想着两个尽可能同步,
用了STC8H2K12U的P14设置为高阻输入模式接到了STC8H8K64的LCD_RESETP41推挽输出
开始两个都是默认选择了复位采用较长延时,我一般不改这里。
STC8H2K12U怎么都检测不到低电平, 用示波器能看到RESET信号的波形很好.

STC8H8K64的复位如下:

        GPIO_Config();
        LCD_RES = 1;
        DelayMS(200);
        LCD_RES = 0;
        DelayMS(50);
        LCD_RES = 1;
        DelayMS(120);



STC8H2K12U的检测如下:

        GPIO_Config();
        while(1)
        {               
                if(P14==0)
                {
                        DelayMS(50);
                        LCD_Init();
                        LCD_Fill(RED);
                }
        }



后者一直进不去显示,将STC8H8K64的 复位长延时 勾选去掉 ,就正常了。
不太理解
这里不应该是将STC8H2K12U的 复位长延时 勾选去掉,这样正常才合理吗?




DebugLab 发表于 2025-7-1 19:48:14

用户程序运行之前IO高阻,两个单片机IO接一起,要加上拉或下拉电阻以确定用户程序运行之前的状态

liners 发表于 2025-7-2 10:30:47

DebugLab 发表于 2025-7-1 19:48
用户程序运行之前IO高阻,两个单片机IO接一起,要加上拉或下拉电阻以确定用户程序运行之前的状态 ...

这个只是程序运行之前的状态,不影响启动后吧
后面我反复循环操作主STC8的IO高低循环
然后从STC8是一直在while循环判断
一次都识别不到

liners 发表于 2025-7-2 11:01:30

DebugLab 发表于 2025-7-1 19:48
用户程序运行之前IO高阻,两个单片机IO接一起,要加上拉或下拉电阻以确定用户程序运行之前的状态 ...

这一点确实发现了,不上拉检测会乱跳,打开内部上拉也有效

liners 发表于 2025-7-2 11:32:20

liners 发表于 2025-7-2 11:01
这一点确实发现了,不上拉检测会乱跳,打开内部上拉也有效

这个方案有效
然后两个单片机复位时间都挺长,也略有不同,调整后可以实现目标了。

DebugLab 发表于 2025-7-2 11:33:50

liners 发表于 2025-7-2 11:32
这个方案有效
然后两个单片机复位时间都挺长,也略有不同,调整后可以实现目标了。 ...

IO上电高阻,必须先设置模式才能输出
页: [1]
查看完整版本: 发现勾选上电复位采用较长延时的一个怪现象