Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
版主
|
參照:
在Vdd與Gnd中間接一電阻 那種接法稱瀉放電組主要在關電之後快速將 VCC 的殘餘電壓加快放掉避免這些游離電壓引響MCU 程式的亂執行。代價就是增加耗電,用與不用見仁見智!
發表於: 2009/12/1 11:33
|
|||
|
Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
資深會員
|
MCLR OFF + INTOSC 之後,一旦供應 VDD,PIC 就立即開始跑程式,無法 reset,也無法進入燒錄模式。 因此,供電要 VPP before VDD 才行進入燒錄模式。
由發文看來,MCLR OFF + INTOSC 後已不能進入燒錄,所以 Config 無法更改回 MCLR ON。 1. VDD 與 VSS 間用 0.1uF , 勿用大電容 2. VDD 與 VSS 間接 1KOhm 電阻 3. 燒錄時主版電源 OFF, PIC 需由燒錄器供電,VDD 才可由燒錄器控制。 如有其他耗電裝置,需作電源隔離。 並確認燒錄時所有 PIC 其它無關燒錄的 IO 不得為 HI,否則會經 PIC 內部的 ESD protection diode 供電到 VDD 4. MCLR diode 拿掉,直接連接或用 330 Ohm 5. MCLR VDD 間 1K 拿掉 如需考慮 MCLR ON, MCLR VDD 間可接 20K ※所有對策要同時下,以上都是為了確保燒錄器能正確控制 VPP before VDD。 同時 VDD OFF 能很快降到0,也有利下次 POR。 其他一般 PIC 通用注意事項: PGD, PGC 不可 pull-up 可行後,這些電阻電容值可再調整。 用 PICkit3 的話,對策 2. 應可免。 除此之外,如果用 PICkit2,不要用 MPLAB IDE 來燒錄,改用 PICkit2 的那個單獨的程式來燒錄看看(要勾選 Use VPP first)。 又如果是用 ICD3,對 Low pin count 系列有 timing 過快的問題,需等 Microchip 發布解決方案,現在先換其它的 programmer 吧。
發表於: 2009/11/27 6:40
|
|||
|
Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
初級會員
|
謝謝您的指教
我剛剛有試過修改將BOR Enable 但是結果仍是Reset不起來 還有哪些我疏忽了嗎? 奇怪.之前用PIC12F675沒那麼難阿(當初用ASM寫的) 另一個奇怪的地方是我RA3對地接一個0.1uF電容 將電容短路竟然也沒辦法Reset(此時config 設MCLR為Enable) 真是懸案... 難不成內部震盪有很多使用上限制嗎?
發表於: 2009/11/26 10:34
|
|||
|
Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
版主
|
原來是電源開關機所造成的不穩,那就崇電源的 Power-On Reset 找起吧!
因為 PIC 的 Power-On Reset 約在 1.2V 左右,所以當關機時 VDD 掉下來若降到 Vdd=1.5V 時這時又開機的話就會造成開機不良的現象,找要是因為Vdd 低過內部 Flip-Flop 的記憶電壓造成 PIC 內部混亂,如果電壓沒有低到 Power-On Reset 的電壓(1.2V) 以下時 PIC 是不會被 Reset 的所以開機時就會盪在那裡。 解決之道就將 BOR Enable 就可以了。所以修改一下 Config 的設定: __CONFIG(INTOSCCLKO & WDTDIS & PWRTDIS & BOREN & UNPROTECT & MCLRDIS & BGLOW );
發表於: 2009/11/26 9:54
|
|||
|
Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
初級會員
|
目前問題不是出現在MCLR那個二極體短路與否
有試過ICD2 MCLR PIN <-> PIN4 (RA3) VDD - 10K om - RA3 RA3 - 10uF - GND 新修改的ASM CODE如下 CONFIG 修改如下 __CONFIG(INTOSCCLKO & WDTDIS & PWRTDIS & BORDIS & UNPROTECT & MCLRDIS & BGLOW ); address ASM_CODE 000 CLRF 0x20 001 CLRF 0x21 002 CLRF 0x22 003 BSF 0x3, 0x5 004 CALL 0x3ff 005 MOVWF 0x10 006 CLRF 0x3 007 GOTO 0x3d1 2B5 MOVLW 0x30 2B6 BSF 0x3, 0x5 2B7 MOVWF 0x1f 2B8 CLRF 0x11 2B9 INCF 0x11, F 2BA MOVLW 0x81 2BB BCF 0x3, 0x5 2BC MOVWF 0x1f 2BD RETURN 2BE BCF 0x3, 0x5 2BF BSF 0x1f, 0x1 2C0 BTFSC 0x1f, 0 2C1 GOTO 0x2c0 2C2 MOVF 0x1e, W 2C3 MOVWF 0x3c 2C4 CLRF 0x3b 2C5 BSF 0x3, 0x5 2C6 MOVF 0x1e, W 2C7 IORWF 0x3b, F 2C8 BCF 0x3, 0x5 2C9 RETURN 2CA MOVLW 0x5 2CB BCF 0x3, 0x5 2CC MOVWF 0x19 2CD BSF 0x3, 0x5 2CE CLRF 0x11 2CF MOVLW 0xf0 2D0 ANDWF 0x7, F 2D1 MOVLW 0xcb 2D2 ANDWF 0x5, F 2D3 BCF 0x3, 0x5 2D4 MOVWF 0x5 2D5 RETURN 2D6 BCF 0x3, 0x5 2D7 MOVWF 0x38 2D8 CLRF 0x39 2D9 CLRF 0x3a 2DA GOTO 0x2de 2DB INCF 0x39, F 2DC BTFSC 0x3, 0x 2DD INCF 0x3a, F 2DE INCF 0x38, F 2DF DECF 0x38, W 2E0 MOVWF 0x4 2E1 MOVF 0, F 2E2 BTFSS 0x3, 0x 2E3 GOTO 0x2db 2E4 MOVF 0x3a, W 2E5 MOVWF 0x3c 2E6 MOVF 0x39, W 2E7 MOVWF 0x3b 2E8 RETURN 2E9 CLRF 0x3f 2EA CLRF 0x40 2EB BCF 0x3, 0 2EC RRF 0x3e, F 2ED RRF 0x3d, F 2EE BTFSS 0x3, 0 2EF GOTO 0x2f7 2F0 MOVF 0x3b, W 2F1 ADDWF 0x3f, F 2F2 MOVF 0x3c, W 2F3 BTFSC 0x3, 0 2F4 INCF 0x3c, W 2F5 ADDWF 0x40, F 2F6 BCF 0x3, 0 2F7 RLF 0x3b, F 2F8 RLF 0x3c, F 2F9 MOVF 0x3d, W 2FA IORWF 0x3e, W 2FB BTFSC 0x3, 0x 2FC RETLW 0 2FD GOTO 0x2eb 2FE BCF 0x3, 0x5 2FF CALL 0x2ca 3C0 BCF 0x3, 0x5 3C1 RETURN 3C2 BCF 0x3, 0x5 3C3 BCF 0x3, 0x5 3C4 BCF 0x3, 0x5 3C5 MOVWF 0x20 3C6 MOVLW 0x4 3C7 MOVWF 0x21 3C8 MOVLW 0x53 3C9 MOVWF 0x22 3CA DECFSZ 0x22, 3CB GOTO 0x3ca 3CC DECFSZ 0x21, 3CD GOTO 0x3c8 3CE DECFSZ 0x20, 3CF GOTO 0x3c6 3D0 RETURN 3D1 NOP 3D2 BCF 0x3, 0x5 3D3 CLRF 0x5 3D4 CLRF 0x7 3D5 MOVLW 0x7 3D6 MOVWF 0x19 3D7 BSF 0x3, 0x5 3D8 CLRF 0x11 3D9 MOVLW 0xff 3DA MOVWF 0x5 3DB CLRF 0x7 3DC CLRF 0x1 3DD CLRF 0xb 3DE BCF 0x3, 0x5 3DF BSF 0x7, 0x4 3E0 BSF 0x7, 0x3 3E1 BSF 0x7, 0x2 3E2 MOVLW 0xe8 3E3 BCF 0x3, 0x5 3E4 CALL 0x3c4 3E5 BCF 0x7, 0x4 3E6 BCF 0x7, 0x3 3E7 BCF 0x7, 0x2 3E8 MOVLW 0xe8 3E9 CALL 0x3c4 3EA BSF 0x7, 0x4 3EB BSF 0x7, 0x3 3EC BSF 0x7, 0x2 3ED MOVLW 0xe8 3EE CALL 0x3c4 3EF BCF 0x7, 0x4 3F0 BCF 0x7, 0x3 3F1 BCF 0x7, 0x2 3F2 MOVLW 0xe8 3F3 CALL 0x3c4 3F4 BSF 0x7, 0x4 3F5 BSF 0x7, 0x3 3F6 BSF 0x7, 0x2 3F7 MOVLW 0xe8 3F8 CALL 0x3c4 3F9 BCF 0x7, 0x4 3FA BCF 0x7, 0x3 3FB BCF 0x7, 0x2 3FC MOVLW 0xe8 3FD CALL 0x3c4 3FE GOTO 0x3de 3FF 電源在power on 時不是每一次都可以動作,很多的建議都需要進行VDD與GND短路後再POWER ON,有建議的方式處理嗎? 參考迴路或是PAPER參考之 謝謝....
發表於: 2009/11/25 17:53
|
|||
|
Re: PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
版主
|
舊程式裡看不出來,奇怪的是為何 MCLR 腳要串個 IN4148? 把他短路吧!
發表於: 2009/11/25 13:15
|
|||
|
PIC16F676內部震盪模式無法正常動作
|
||||
---|---|---|---|---|
初級會員
|
請教各為前輩
目前使用PIC16F676內部震盪,驅動一組LED燈號 但是不是每次都可以正常動作 是否有其他問題我沒有注意到的 請指教,謝謝 下列為小弟所撰寫的程式(使用Hi Tech C撰寫) #include <htc.h> #include "delay.h" #include "IO_initial.h" __CONFIG(INTOSCIO & WDTDIS & PWRTEN & BORDIS \ & UNPROTECT & MCLRDIS ); void main(void) { int i; asm("nop"); OSCCAL = _READ_OSCCAL_DATA(); CMCON = 0x07; PORTA = 0x00; PORTC = 0x00; ANSEL = 0x00; TRISA = 0xFF; TRISC = 0x00; OPTION = 0x8F; INTCON = 0x00; for(;;) { LED1=0;LED2=1;LED3=1; DelayMs(1000); LED1=0;LED2=0;LED3=1; DelayMs(1000); LED1=0;LED2=0;LED3=0; DelayMs(1000); LED1=0;LED2=0;LED3=1; DelayMs(1000); LED1=0;LED2=1;LED3=1; DelayMs(1000); LED1=1;LED2=1;LED3=1; DelayMs(1000); } } Attach file: (0.00 KB)
發表於: 2009/11/24 10:22
Edited by jaffrey on 2009年11月24日 10:53:16
Edited by jaffrey on 2009年11月24日 10:57:36 |
|||
|