久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4895|回復: 4
打印 上一主題 下一主題
收起左側

STC8G1K16的PD(掉電)模式用外部中斷正常喚醒,但IDLE模式卻無法喚醒[已解決]

[復制鏈接]
跳轉到指定樓層
樓主
ID:853816 發表于 2021-6-29 13:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是我的代碼(改自STC8G手冊6.5.8 “使用T0/T1/T2/T3/T4 中斷喚醒MCU”例程):
  1. #include "STC8.H"
  2. #include "intrins.h"
  3. void INT0_Isr() interrupt 0
  4. {
  5.         _nop_();
  6.         _nop_();
  7. }
  8. void INT1_Isr() interrupt 2
  9. {
  10.         P11 = 0;
  11.         _nop_();
  12.         _nop_();
  13.         //PCON |=  0x01 ;          //MCU 進入 IDL 模式   問題在這里這里這里這里這里這里這里這里這里
  14.         PCON |=  0x02 ;          //MCU 進入 掉電 模式
  15.         _nop_();
  16.         _nop_();
  17. }
  18. void main()
  19. {
  20.         P1M1 &= ~(1<<1);
  21.         P1M0 |= (1<<1); //設置為推挽輸出
  22.         IT0 = 1; //使能 INT0 下降沿中斷
  23.         EX0 = 1; //使能 INT0 中斷
  24.         IT1 = 1; //使能 INT1 下降沿中斷
  25.         EX1 = 1; //使能 INT1 中斷
  26.         EA = 1;
  27.         P11 = 0;
  28.         //PCON |=  0x01 ;          //MCU 進入 IDL 模式  還有這里這里這里這里這里這里這里這里
  29.         PCON |=  0x02 ;          //MCU 進入 掉電 模式
  30.         _nop_();
  31.         _nop_();
  32.         while (1)
  33.         {
  34.                 P11 = !P11;               
  35.         }
復制代碼
我的電路是:
兩個按鍵分別連到P32(按鍵1)和P33(按鍵2),示波器連到P11。

當我使用掉電模式(PCON |=  0x02)時:
剛通電,P11輸出低。此時是低功耗(掉電)模式。
按下按鍵1,P11開始輸出方波。此時是正常工作模式。
按下按鍵2,P11輸出低。此時是低功耗(掉電)模式。
再按下按鍵1,P11繼續輸出方波。
再按下按鍵2,P11輸出低
……
總之使用掉電模式的時候一切看起來都挺正常。


當我使用IDLE模式(PCON |=  0x01)時:
剛通電,P11輸出低。此時是低功耗(掉電)模式。正常。
按下按鍵1,P11開始輸出方波。此時是正常工作模式。正常。
按下按鍵2,P11輸出低。此時是低功耗(掉電)模式。正常。
再按下按鍵1,P11依然輸出低。不僅沒有輸出,電源的電流和剛才低功耗模式下也沒有變化。
再按下按鍵2,沒變化
……
除了這兩行代碼別的什么都沒變。總之,換到IDLE模式后,只有上電后第一次能用INT0正常喚醒,第二次就不能。

手冊6.4“系統電源管理”說明:
PD:掉電模式控制位
0:無影響
1:單片機進入掉電模式,CPU 以及全部外設均停止工作。喚醒后硬件自動清零。
IDL:IDLE(空閑)模式控制位
0:無影響
1:單片機進入 IDLE 模式,只有 CPU 停止工作,其他外設依然在運行。喚醒后硬件自動清零

網上也查過了,大部分資料說的內容都差不多,摘取一個講的比較詳細的:
空閑模式是指只有單片機不工作的狀態。此時CPU無時鐘停止工作,但是外部中斷、外部低壓檢測電路、定時器、A/D轉換、串行口等仍正常運行。在空閑模式下,RAM、堆棧指針(SP)、程序計數器(PC)、程序狀態字(PSW)、累加器(A)等寄存器都保持原有數據。I/O口保持著空閑模式被激活前那一刻的邏輯狀態。此時單片機所有的外圍設備都能正常運行,當任何一個中斷產生時,它們都可以將單片機喚醒,單片機被喚醒后,CPU將繼續執行進入空閑模式語句的下一條指令。
怎樣退出空閑模式?
a.中斷:任何一個中斷的產生都會引起IDL/PCON.0被硬件清除,從而退出空閑模式;
b.外部RST引腳復位:將復位腳拉高,產生復位。再將RST腳拉低,結束復位,單片機從用戶程序的0000H處開始正常工作

休眠模式(又叫掉電模式、停機模式)
當單片機進入掉電模式時,外部晶振停振、CPU、定時器、串行口全部停止工作,只有外部中斷繼續工作。使單片機進入休眠模式的指令將成為休眠前單片機執行的最后一條指令,進入休眠模式后,芯片中程序未涉及到的數據存儲器和特殊功能寄存器中的數據都將保持原值。可由外部中斷低電平觸發或由下降沿觸發中斷或者硬件復位模式換醒單片機,需要注意的是,使用中斷喚醒單片機時,程序從原來停止處繼續運行,當使用硬件復位喚醒單片機時,程序將從頭開始執行。
怎樣退出休眠模式?
a.可將CPU從休眠模式喚醒的外部管腳有:外部中斷0、外部中斷1、定時器0、定時器1、RxD、PWM0/PCA0/P3.7、PWM2/PCA2/P2.0、PWM3/PCA3/P2.4

按這個說法外部中斷應該可以在兩個模式下都喚醒的啊?為啥會有這樣的問題呢?


更新:采用了4樓Y_G_G 壇友 建議的方法,不要在中斷函數內進入省電模式,而是在中斷函數中操作一個標志位,在主函數中檢測這個標志位進入省電模式。問題已解決。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2021-6-29 16:52 | 只看該作者
樓主很用功,分析很到位,驗證方式也很清晰、簡潔。是塊好料子。
IDL:僅切斷CPU的CLK。
PD:不僅切斷CPU的CLK,還切斷其它使用系統時鐘的內部硬件設備的CLK,如定時器、串口、AD……。
如果,僅僅是以上這一點點程序運行,這時的IDL與PD的功能一樣,因為不涉及其它內部硬件。
也就是說,我的看法與您完全一致。幫不上忙了。
建議一下:在IDL語句之后,將NOP增加到24個。再試試是否同樣?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:401564 發表于 2021-6-29 21:17 | 只看該作者
對于省電模式,STC并沒有多少的說明,但實際上,它的原理應該是和掉電差不多的,不同的是:省電模式只有CPU停止工作,其它外設是正常工作的
個人分析是這樣的:因為你在中斷中進入了省電模式,CPU馬上就停止了工作,但中斷還是在工作的,所以,程序實際上是一直停留在中斷中的,因為CPU停止工作了,那就沒法中斷返回了

省電模式和掉電模式是這樣工作的:一進入該模式之后,CPU停止工作(掉電模式外設也會停止工作),所有的IO保持進入模式前的狀態,電平不變
那么,喚醒之后,程序是馬上進入喚醒的中斷程序,執行完中斷程序之后再返回執行
//PCON |=  0x01 ;        
  PCON |=  0x02 ;
的下一條語句.
所以,我覺得你不應該在中斷中進入掉電或者省電模式,要在主程序中進入,一定要中斷控制的話,也是中斷控制一個標志位,再由主程序檢測標志位要不要進入掉電/省電模式

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:853816 發表于 2021-6-30 10:28 | 只看該作者
yzwzfyz 發表于 2021-6-29 16:52
樓主很用功,分析很到位,驗證方式也很清晰、簡潔。是塊好料子。
IDL:僅切斷CPU的CLK。
PD:不僅切斷CPU ...

試了一下,沒變化,和之前還是一樣。這類多加nop操作的原理是什么呢?是不是多加幾個延時確保相應的數值被寫到寄存器里面了?
回復

使用道具 舉報

5#
ID:853816 發表于 2021-6-30 10:29 | 只看該作者
Y_G_G 發表于 2021-6-29 21:17
對于省電模式,STC并沒有多少的說明,但實際上,它的原理應該是和掉電差不多的,不同的是:省電模式只有CPU停止 ...

謝謝,采用了您建議的方法,問題解決了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一区二区免费 | 久久99精品久久久97夜夜嗨 | 久国久产久精永久网页 | 日韩a v在线免费观看 | 国产精品呻吟久久av凹凸 | 一级毛片网 | 天天看天天摸天天操 | 韩国精品一区 | 中文字幕在线一区二区三区 | 国产四区 | 电影午夜精品一区二区三区 | 亚洲二区视频 | 天天看天天爽 | 精精精精xxxx免费视频 | 欧美高清hd | 午夜伦4480yy私人影院 | 97视频在线免费 | 国产乱码精品1区2区3区 | 国产成在线观看免费视频 | 色屁屁在线观看 | 亚洲成人av | 国产精品高潮呻吟久久久久 | 国产欧美精品一区二区三区 | 五月天婷婷久久 | 欧美成人高清 | 日韩在线观看视频一区 | 欧美综合视频在线 | 91久久久精品国产一区二区蜜臀 | 91视频在线观看 | 国产伦精品一区二区三区高清 | 欧美精品一区三区 | 嫩草影院黄 | 欧美中文在线 | 亚洲精品一区中文字幕乱码 | 亚洲综合视频一区 | 国产精品夜色一区二区三区 | 亚洲区视频| 日韩成人在线观看 | 久久影院一区 | 一级a性色生活片久久毛片 午夜精品在线观看 | 亚洲精选一区二区 |