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