topofhill 发表于 2024-9-29 13:49:42

8H8K64U, P30 P31 休眠设置问题

大家好

p30p31   与蓝牙通信

p32下降沿唤醒



      printf("休眠.\r\n");
                        P30=0;P31=0;
                        P32=1;
   IT0 = 0;                                    //使能INT0上升沿和下降沿中断
       //IT0 = 1;                                    //使能INT0下降沿中断
       EX0 = 1;                                    //使能INT0中断
       EA = 1;
                                        //不能配置高阻输入,不能休眠
                        
                              PCON |= 0x02;   //Powerdown
                              _nop_();
                              _nop_();
                              _nop_();
                              _nop_();
                              _nop_();
                              _nop_();
                              _nop_();
printf("唤醒.\r\n");
                        
          P32=0;




现在能正常休眠唤醒   但唤醒后不能与蓝牙通信。


不设置P30=0;P31=0;   休眠后耗电较大。怎样设置比较好


神农鼎 发表于 2024-9-29 13:56:59

8H8K64U的串口可以 9600以下正常唤醒,数据不丢失

topofhill 发表于 2024-9-29 14:02:17

他的蓝牙芯片   耗电大   休眠后用mos管断电了。断正极,负极一直连着。但8h8k64u   p30p31   开始漏电

神农鼎 发表于 2024-9-29 14:05:48

P30可以高阻输入,P31可以开漏
你没原理图的PDF发上来,大家不好帮你分析

topofhill 发表于 2024-9-29 14:06:28

漏电400u    设p30=0;P31=0:   电流极小      就是唤醒后   不能通信
试了唤醒 ((void (code *) (void)) 0x0000) ();   代码    也不能解决

王昱顺 发表于 2024-9-29 14:18:36

topofhill 发表于 2024-9-29 14:06
漏电400u    设p30=0;P31=0:   电流极小      就是唤醒后   不能通信
试了唤醒 ((void (code *) (void) ...

可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。

topofhill 发表于 2024-9-29 14:27:21

很神奇   P3M0 = 0x02; P3M1 = 0x03; 贴进去    休眠唤醒   通信都能正常了

电流还有40u

DebugLab 发表于 2024-9-29 14:39:56

topofhill 发表于 2024-9-29 14:27
很神奇   P3M0 = 0x02; P3M1 = 0x03; 贴进去    休眠唤醒   通信都能正常了

电流还有40u ...

检查外设是不是关的不彻底,比如ADC电源、USB电源、内部32K时钟、比较器
还有其他电路的耗电

topofhill 发表于 2024-9-29 14:44:21

王昱顺 发表于 2024-9-29 14:18
可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。 ...

刚试了下        printf("休眠.\r\n");
               
       P3M0 = 0x00; P3M1 = 0x03;
                        P32=1;
   IT0 = 0;                                    //使能INT0上升沿和下降沿中断
       //IT0 = 1;                                    //使能INT0下降沿中断
       EX0 = 1;                                    //使能INT0中断
       EA = 1;
                       PCON |= 0x02;

程序中开高阻,单片机不能休眠了

topofhill 发表于 2024-9-29 14:47:50

王昱顺 发表于 2024-9-29 14:18
可以尝试更改io模式,都开高阻然后再休眠试试?
然后将通讯的发送部分,修改为发送前将txd改为准双向。 ...

打印休眠后直接打印唤醒了
页: [1] 2
查看完整版本: 8H8K64U, P30 P31 休眠设置问题