Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
參照:
這樣的情形,我在猜是不是你的I/O 腳有外接到其它的裝置,而該裝置是有給電的,即使你把 PIC 關掉但因 I/O 腳還有接其他的東西造成電從I/O 腳經內部的ESD保護二極體流到Vdd 造成PIC的意外供電,所以只要將 Vdd 短路後就可以正常開機了。試試看 I/O 串個電阻或串個二極體隔離一下或Vdd & Vss 間加個 220 ohm 的謝放電組看看。
發表於: 2009/10/6 12:00
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
是的,MCLR 是獨立的 Reset 輸入,PIC 內部有個 Power-On Reset 電路大約在 1.0 ~1.2V 左右,BOR 也是獨立的。
如果你的MCU 工作在 2.5V 時,這時 BOR 就必須關閉使用 POR 或MCLR 來 Reset MCU 了。
發表於: 2009/10/6 11:54
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
高級會員
![]() ![]() ![]() |
我把BOR Reset 電壓設定為 4.2 V和4.5V都沒有效果。
不過想請教一下,BOR不是用來偵測Vdd異常的嗎?依照DATASHEET的方塊圖所示,MCLR似乎自成獨立的外部觸發訊號,不知道這個觀念對不對?
發表於: 2009/10/5 17:35
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
燒錄時將 Configuration 裡的BOR 啟用,設定Reset 電壓為 4.x V (Vdd 為 5V) 或設為 2.7V (Vdd=3.3V)。
發表於: 2009/10/5 16:45
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
高級會員
![]() ![]() ![]() |
1. 將linker file 中 c018i.o 改為 c018iz.o 結果仍然一樣。
2. 請問Eigen指的是"Brown out detect"選項嗎? 我試過全部四個選項也都無效。 3. 由於有些程式是不會發生這個問題的,這樣還有可能是reset 電路不良所造成的嗎?
發表於: 2009/10/5 16:19
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
reset 電路不良
試試將 brown out 的功能打開 或修改reset 電路
發表於: 2009/10/5 15:45
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
資深會員
![]() ![]() ![]() |
會不會是變數初始值問題?
------------------------------------------------------------ // File: 18f4550i.lkr // Sample ICD2 linker script for the PIC18F4550 processor LIBPATH . FILES c018i.o ------------------------------------------------------------ c018i.o 修改為用 c018iz.o 試試
發表於: 2009/10/5 15:27
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
高級會員
![]() ![]() ![]() |
測試結果如下:
1. 以ICD-2讀回 PIC 內部的程式碼跟程式做比較(用Verify選項),發現程式碼並未改變。 2.以Eigen建議的方式,將 vcc gnd 短路之後,再試結果是可以的。我的程式並沒有 flash 讀寫的程序,請問要加上哪些指令來模擬這個短路放電的過程或避免程式死當?
發表於: 2009/10/5 15:04
|
|||
|
Re: Reset 幾次後程式會被改掉
|
||||
---|---|---|---|---|
版主
![]() ![]() ![]() |
你如何確定是程式被改掉了,你有用 ICD2 讀回 PIC 內部的程式碼跟你的程式做過比較嗎?
建議你先做比較一下,確定是否程式如你所言被修改了,再來找其他的問題。 我認為是初始設定的問題,程式開機後有沒有做變數的清除動作?
發表於: 2009/10/5 9:30
|
|||
|