打印

16F1824 RA2 = RESET?

[复制链接]
1152|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溢出、中断没处理导致反复进入中断等等

使用特权

评论回复
5
aeqw|  楼主 | 2016-11-21 10:21 | 只看该作者
現在也是在懷疑中斷沒處理的問題...

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

莫非我踩到了地雷嗎??

使用特权

评论回复
6
XIEYUANBIN| | 2016-11-21 21:43 | 只看该作者
再查查,有可能有些应该关闭的中断被打开了,可以从汇编代码中看看跑到哪里

使用特权

评论回复
7
aeqw|  楼主 | 2016-11-22 15:28 | 只看该作者
暫時還是無解~
代理商FAE看過也無解...

使用特权

评论回复
8
XIEYUANBIN| | 2016-11-22 16:34 | 只看该作者
aeqw 发表于 2016-11-22 15:28
暫時還是無解~
代理商FAE看過也無解...

还要靠自己

使用特权

评论回复
9
XIEYUANBIN| | 2016-11-22 16:47 | 只看该作者
aeqw 发表于 2016-11-22 15:28
暫時還是無解~
代理商FAE看過也無解...

你把你的配置字帖来看看

使用特权

评论回复
10
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)

使用特权

评论回复
11
XIEYUANBIN| | 2016-11-23 19:47 | 只看该作者
把BORV关了试试,最好用示波器的低电平触发,用一个通道测量RA2,低电平触发,另一个通道监控电源、MCLR等等引脚,如无异常,可以断定是 堆栈溢出或者程序跑飞

使用特权

评论回复
12
aeqw|  楼主 | 2016-11-24 09:01 | 只看该作者
這兩天試了一下,由PICKIT3供電,只有MCU+燒錄座單獨運行,RA2無異狀,不會造成當機現象!!
看來有可能是PCB上某些東西的干擾了...

使用特权

评论回复
13
XIEYUANBIN| | 2016-11-24 12:30 | 只看该作者
aeqw 发表于 2016-11-24 09:01
這兩天試了一下,由PICKIT3供電,只有MCU+燒錄座單獨運行,RA2無異狀,不會造成當機現象!!
看來有可能是PCB ...

那就是PCB问题了

使用特权

评论回复
14
aeqw|  楼主 | 2017-4-25 12:46 | 只看该作者
最後的解決方法:在IO腳上串一顆電阻就沒事了...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

72

帖子

0

粉丝