會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC10F320電源切換LED
初級會員
註冊日期:
2015/08/16 22:04
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 971
離線
各位先進好,我目前要做一個電源開關切換LED的產品,打開電源則RA0的LED0亮;將電源關掉,在0.5秒內打開,就能切換RA1的LED1亮(LED0為暗);再將電源關掉,在0.5秒內打開,變成RA0的LED0亮(LED1為暗),等於是切換2顆LED燈,之前有試過用RA2輸入,如電路圖所示,結果不穩定,有時能切,有時不行。後來將RA2用INT外部中斷的方式,電路圖一樣,結果有比較好,大概切換5次會有3次成功(成功是指一直開、關電源,則LED會一直變換,不會有LED切不過去的問題)。請問如果要100%成功,要如何修改。謝謝



#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
uchar k=0;


void port_init()
{
OSCCON=0B01010000; //設為4MHZ,這樣速度才可延用
OPTION_REG=0B11111111;//正觸發(用負觸發怪怪的)
ANSELA=0X00; //設RA0~2為數位I/O
WPUA=0X00; //PORTA全部不要PLUU HIGH
TRISA=0B00000100; //RA2 做輸入
PORTA=0X00;
INTCON=0B11010000; //開GIE、PEIE、INTE中斷
}


void output(k)
{
switch(k)
{

case 1:
PORTA=0B00000001;break; //RA0輸出LED0亮
case 2:
PORTA=0B00000010;break; //RA1輸出LED1亮
}
}

void interrupt ISR(void)
{
if(INTF==1)
{
INTE=0;
INTF=0;
k=k+1;
if(k>2)
{
k=0;
}
else
{
}
}
INTE=1;
}

void main()
{
port_init();

while(1)
{
output(k);
}

}

附加檔案:



jpg  123.jpg (35.79 KB)
47795_5e42b4dff4204.jpg 800X612 px

2月11日 22:07:15
轉換PDF檔 列印


Re: PIC10F320電源切換LED
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1202
等級: 30; EXP: 21
HP : 0 / 730
MP : 400 / 33288
離線
電源關掉 0.5sec ,

所以你的電路至少要能在斷電下自保 0.5sec (大電容),並有斷電偵測的功能/電路。

2月12日 18:11:32
轉換PDF檔 列印


Re: PIC10F320電源切換LED
初級會員
註冊日期:
2015/08/16 22:04
所屬群組:
註冊會員
文章: 27
等級: 3; EXP: 93
HP : 0 / 73
MP : 9 / 971
離線
在0.5秒以內都可以,在右邊5V的地方有一個100u電容。10k的可變電阻是調整分壓,大約在2.2V時可切換,電阻值約7.5K。斷電偵測的功能是輸入到RA2的INT外部中斷。

2月12日 19:11:23
轉換PDF檔 列印


Re: PIC10F320電源切換LED
資深會員
註冊日期:
2007/06/05 21:45
所屬群組:
註冊會員
文章: 1047
等級: 28; EXP: 54
HP : 0 / 688
MP : 349 / 25614
離線
1. 將電源關掉
2. 在0.5秒內打開(復電)
切換LED

從電路圖來看,你的電源指的應該是 12V

你在電源(12V)關掉時,又要MCU計時,必須VDD(5V)正常供電...

1. 12V一關電要馬上得知
2. 大電容放電提供VDD(5V),至少1秒以上
最好可以有個三五秒(愈長愈好), 電容會老化...

12V ---(A)---|>|----(B)--

A點 是檢測12V是否斷電
A,B點中間用二極體,做反向電容放電隔離
B點 之後要有大電容,提供斷電(放電)保持5V供電...

1. 12V(A點)斷電
斷電產生中斷, 開始計時
關掉全部LED(或你的LED行為定義)

2. 計時0.5秒前,A點復電
切換LED

3. 計時超過0.5秒
重設LED(或重置MCU)
關掉全部LED(或你的LED行為定義)

以上個人看法供參考...

註: 如果12V電壓也是緩慢下降,
A點前也有大電容放電,則要檢測12V電壓值.

2月13日 13:09:34
轉換PDF檔 列印


Re: PIC10F320電源切換LED
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14947
等級: 73; EXP: 74
HP : 1091 / 1818
MP : 4982 / 84127
離線
PIC10F320 內部記憶體有:

Memory
• Up to 512 Words of Flash Program Memory
• 64 Bytes Data Memory
High-Endurance Flash Data Memory (HEF)
- 128B of nonvolatile data storage
- 100K erase/write cycles


1. 可否利用此 HEF 的記憶空間來儲存動作的部分。在掉電時將目前的狀態存到 HEF 裡,開機後看一下 HEF 的狀態來決定要做何種動作?

2. 掉電偵測可以用內部的參考電壓 (FVR) 及 ADC 的參考電壓的相對變化值來判斷是否掉電。
(FVR 是固定電壓,ADC 參考電壓在掉電時期電壓值會變小,這時 FVR 轉出來的數值就會變大。當變化的數值超過所設定的門檻值時就代表掉電,立即將狀態存到 HEF。

2月13日 14:52:24
轉換PDF檔 列印


Re: PIC10F320電源切換LED
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1202
等級: 30; EXP: 21
HP : 0 / 730
MP : 400 / 33288
離線
斷電偵測不能直接用 io 判斷 ,一般是用 adc ,要快那就是用比較器,電壓掉多少就會反轉信號。

※你知道什麼叫 debounce 嗎? 你以為信號會很乖的 直上直下? 正常的信號都會抖抖抖~~~

沒做 debounce 你的程式會正常?

2月14日 16:51:32
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project