16F1824 RA2 = RESET?

[复制链接]
1496|13
 楼主| aeqw 发表于 2016-11-19 23:40 | 显示全部楼层 |阅读模式
各位大大不知道有沒有人用過16(L)F1824?
先前用1824做跑馬燈的案子,RA2當輸出用沒問題。
現在另外一個案子拿1824的RA2當一個輸入按鍵。只要RA2這個按鍵一按下,就會整個reset...
用同一片PCB,把RA2的TRISA2改為輸出,按按鈕就不會造成reset,看起來應該不是周邊電路的問題,那這樣會是什麼問題哩?
XIEYUANBIN 发表于 2016-11-20 14:17 | 显示全部楼层
RA2是否是低压烧写引脚?貌似只有低压烧写功能打开,并且相应低压烧写引脚低电平的时候会进入编程状态
 楼主| aeqw 发表于 2016-11-20 23:34 | 显示全部楼层
MCLRE:RA3/MCLR/VPP 引脚功能选择位
如果LVP 位 = 1:
该位被忽略。
如果LVP 位 = 0:
1 = MCLR/VPP 引脚功能为MCLR ;使能弱上拉。
0 = MCLR/VPP 引脚功能为数字输入; MCLR 在内部被禁止;弱上拉由WPUA 寄存器控制。

LVP的問題看起來跟RA3比較有關係!!
還是感謝大大喔!!
XIEYUANBIN 发表于 2016-11-21 09:13 | 显示全部楼层
引起复位的原因很多,但无非就是几种情况:看看是否是电源电压被你拉低了,或者MCLR脚电压被你拉低了,或者软件中导致堆栈溢出、WDT溢出、中断没处理导致反复进入中断等等
 楼主| aeqw 发表于 2016-11-21 10:21 | 显示全部楼层
現在也是在懷疑中斷沒處理的問題...

RA2的腳有共用INT及IOC,原先程式有用到IOC功能,後來拿掉測試也是會reset。
而且在debug模式下,RA2改成INPUT,按下按鍵的時候,程式就不知道飛到哪去了...

莫非我踩到了地雷嗎??
XIEYUANBIN 发表于 2016-11-21 21:43 | 显示全部楼层
再查查,有可能有些应该关闭的中断被打开了,可以从汇编代码中看看跑到哪里
 楼主| aeqw 发表于 2016-11-22 15:28 | 显示全部楼层
暫時還是無解~
代理商FAE看過也無解...
XIEYUANBIN 发表于 2016-11-22 16:34 | 显示全部楼层
aeqw 发表于 2016-11-22 15:28
暫時還是無解~
代理商FAE看過也無解...

还要靠自己
XIEYUANBIN 发表于 2016-11-22 16:47 | 显示全部楼层
aeqw 发表于 2016-11-22 15:28
暫時還是無解~
代理商FAE看過也無解...

你把你的配置字帖来看看
 楼主| aeqw 发表于 2016-11-22 20:15 | 显示全部楼层
// PIC16F1824 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC    // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF       // Power-up Timer Enable (PWRT enabled)
#pragma config MCLRE = ON      // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF          // Flash Program Memory Code Protection (Program memory code protection is enabled)
#pragma config CPD = OFF         // Data Memory Code Protection (Data memory code protection is enabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable (Brown-out Reset disabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = OFF       // Internal/External Switchover (Internal/External Switchover mode is disabled)
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is disabled)

// CONFIG2
#pragma config WRT = ALL        // Flash Memory Self-Write Protection (000h to FFFh write protected, no addresses may be modified by EECON control)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = OFF      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF         // Low-Voltage Programming Enable (Low-voltage programming enabled)
XIEYUANBIN 发表于 2016-11-23 19:47 | 显示全部楼层
把BORV关了试试,最好用示波器的低电平触发,用一个通道测量RA2,低电平触发,另一个通道监控电源、MCLR等等引脚,如无异常,可以断定是 堆栈溢出或者程序跑飞
 楼主| aeqw 发表于 2016-11-24 09:01 | 显示全部楼层
這兩天試了一下,由PICKIT3供電,只有MCU+燒錄座單獨運行,RA2無異狀,不會造成當機現象!!
看來有可能是PCB上某些東西的干擾了...
XIEYUANBIN 发表于 2016-11-24 12:30 | 显示全部楼层
aeqw 发表于 2016-11-24 09:01
這兩天試了一下,由PICKIT3供電,只有MCU+燒錄座單獨運行,RA2無異狀,不會造成當機現象!!
看來有可能是PCB ...

那就是PCB问题了
 楼主| aeqw 发表于 2017-4-25 12:46 | 显示全部楼层
最後的解決方法:在IO腳上串一顆電阻就沒事了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

89

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部