![]() |
發(fā)布時間: 2021-8-30 15:20
正文摘要:本帖最后由 一夜暴富 于 2021-8-30 15:43 編輯 目前低功耗方案:電池3.7V單獨給單片機供電,單片機再控制引腳給①電池3.7V升壓12V電路②12V降5V電路使能,從來給12V負(fù)載和5V傳感器工作目前遇到的問題:希望通過旋 ... |
Y_G_G 發(fā)表于 2021-8-30 15:20 大哥請問下仿真的時候掉電后無法通過外部中斷1喚醒是什么情況呀 |
今天剛好碰到這個現(xiàn)象,單按鍵P32腳INT0開始一直可以喚醒,后來改了些代碼就不行了,正想研究一下,原來代碼就有長按1秒(開/關(guān)大燈) / 2秒(掉電全關(guān)待機)的軟延時代碼...... 后來還加了個循環(huán)好像就喚不醒了,明天繼續(xù),呵呵!好玩! 謝謝! |
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 |
Y_G_G 發(fā)表于 2021-9-3 23:04 好的,謝謝! |
一夜暴富 發(fā)表于 2021-9-3 19:34 看不到完整程序和電路,不知道你要做什么 這個是我一個藍牙耳機的,長按或者雙擊喚醒的,按鍵和其它函數(shù),你可以先不管,你大概看一下喚醒的流程就可以了 void main(void) { Mcu_Rst(); //單片機復(fù)位 Mcu_Awaken(); //單片機喚醒操作 Stc8g_Adc_int();//stc8gadc初始化 Tap6130_Start(); //耳放啟動 //——————————————————————————————————————————————————————————————————— while(1) { if((USB==1)||(ON==1)) Battry_Voltage_Disp(ADC_VCC); //電池電壓處理 if((USB==0)&&(ON==1)) Key_Disp(); //按鍵處理 if((TWO_PRE==1)||(LONG_PRE==1)) { ON=!ON; //長按/雙擊有效 TWO_PRE=0; LONG_PRE=0; Mcu_Up=0; //清除按鍵喚醒標(biāo)志位 if(ON==1) { Delay_ms(300); //延時一定時間開機,沒有為什么,就是達到某個效果而已,可有可無 Tap6130_Start(); //如果是按鍵開機,就啟動耳放和藍牙 Stc8g_Adc_int(); //stc8gadc初始化 } } else if(ONE_PRE==1) { ONE_PRE=0; //單擊有效 Mcu_Up=0; if(ON==1)Play(); //播放/暫停/接聽/掛斷 } else if((USB==0)&&(ON==0)&&(Mcu_Up==0)) //UBS在插著,就不關(guān)機 { Delay_ms(300); //延時0.3秒關(guān)機 Mcu_Sleep(); //單片機進入掉電模式 PCON=0x02; //進入掉電模式 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); Mcu_Awaken(); //單片機喚醒 if(USB==1)Stc8g_Adc_int(); //如果USB高電平,就表示是USB播放,stc8gadc初始化 } } //——————————————————————————————————————————————————————————————————— } |
Y_G_G 發(fā)表于 2021-9-1 11:30 不知道大佬能否再幫我解答一下 我是在喚醒中斷里寫了喚醒后單片機該做什么 而不是寫在 PCON = 0x02; _nop_; _nop_; _nop_; _nop_; 的后面。 請問這樣是可以的嗎 |
一夜暴富 發(fā)表于 2021-9-1 10:38 這個不好說,要結(jié)合實際情況的 你看一下數(shù)據(jù)手冊有沒有說明的 如果數(shù)據(jù)手冊沒有說明,理論上輸出就應(yīng)該是0V,你就要看一下你硬件電路了 |
Y_G_G 發(fā)表于 2021-8-31 20:50 好的,謝謝~還有最后一個問題 為什么我給lm2596使能腳高電平,讓它停止工作 理應(yīng)VOUT應(yīng)該0V左右,但每次關(guān)閉后的電壓都不同,從0.050V~2V左右都有 這是為什么呢,電路就是上面的電路 |
PEB188 發(fā)表于 2021-8-31 18:10 去抖動是肯定要的 如果程序沒有什么其它任務(wù),肯定是直接在中斷中放一個延時省事了 如果有多重任務(wù)的話,肯定是不能在中斷中有長延時,比如有數(shù)碼管顯示的時候,只要是在中斷中有延時,哪怕只有1mS,人眼也能感覺到數(shù)碼管閃了一下 如果在中斷中有等待松開的話,就更不用說了,數(shù)碼直接就是長亮一位或者長暗 |
一夜暴富 發(fā)表于 2021-8-31 10:02 我的回答已經(jīng)說了你想要的知道的知識點了 |
Y_G_G 發(fā)表于 2021-8-30 16:44 外部中斷里按鍵需要消抖嗎及松手等待嗎 |
Y_G_G 發(fā)表于 2021-8-30 22:10 恩,就是DC-DC比較好使能控制,所以一直想用DC-DC 但如果LDO本身的工作電流就很低的話,我也是傾向于用LDO更方便的。 還想請教一下,那我是選擇12V降5V的LDO合適,還是3.7V升5V的升壓電路 ,這兩個哪個功耗會更低一些? |
只要配置和電路沒問題那就是程序的問題,另外中斷里竟然調(diào)用delay(),不能啊!oled_wr_byte()也不要放外部中斷里面吧,不要問為什么,我也不懂! |
一夜暴富 發(fā)表于 2021-8-30 18:54 為什么對5V的DC-DC如此執(zhí)著呢?這5V你要輸出多大的電流?帶馬達嗎? 如果只是單片機和傳感器供電,直接一個HT7350不就行了嗎? 如果是要大電流,3.7直接升壓5V效率不是更高的嗎?3.7升12V的效率如果是90%,12降到5V又是90%的效率,那么整個電路的效率就是80%左右了......... |
本帖最后由 一夜暴富 于 2021-8-30 19:00 編輯 Y_G_G 發(fā)表于 2021-8-30 16:44 謝謝大佬的指導(dǎo),不知道大佬能否推薦一些低功耗的DC-DC 12v降壓5V的芯片 |
補充一下:5V的使能引腳關(guān)閉后 5V的電壓每次都不同 當(dāng)5V的降壓使能引腳關(guān)閉后,最后停在了2V,就可以正常喚醒 如果5V的降壓使能引腳關(guān)閉后只有0.3V了,就不能正常喚醒了 |
1,不要在中斷函數(shù)中設(shè)定或者使用Delay()長時間延時,沒有辦法的情況下才會在中斷中使用,如果可以的話,中斷函數(shù)盡可能的短 2,在PCON=0x02;之后至少要加四個 _nop_ (); 不知道為什么,官方叫這么做,你就這么做,錯不了 3,進入掉電之前,你要用的喚醒中斷都要先設(shè)定 4,中斷喚醒之后,程序會執(zhí)行PCON=0x02;之后的代碼,由于沒有看到完整的代碼,不知道你程序是怎么跑的,這STC喚醒壓根就不是什么高深技術(shù)或者商業(yè)機密,大可上傳代碼文件,你截個圖,沒頭沒尾的 5,一定要P00=0;P01=0.....嗎?難道不成P0=0x00嗎? 6,聽說現(xiàn)在STC15可以仿真,你可以搞個仿真電路,也許論壇有人會玩,反正我只對開發(fā)板感興趣 |
Powered by 單片機教程網(wǎng)