我有PIC18F24K20微芯片,想要控制继电器。它可以通过我的RasPI而不是GPIO工作得很好 - 但是我无法通过我的微芯片工作。
我的测试程序是:
#include <xc.h>
#define R1 LATBbits.LATB0
#define R1_TRIS TRISBbits.RB0
#define R2 LATBbits.LATB1
#define R2_TRIS TRISBbits.RB1
void main(void) {
R1_TRIS = 0;
R2_TRIS = 0;
R1 = 1;
R2 = 0;
return;
}
我做错了什么?
答案 0 :(得分:0)
主要功能永远不会在嵌入式PIC处理器中返回。在某些实现中,它会导致软件复位,从而导致引脚返回高阻抗模式。尝试添加while(1);在你的主要结束。
答案 1 :(得分:0)
检查使用的引脚是否具有其他功能。典型的问题是引脚加倍作为模拟引脚并默认启用。
通过查找数据表中对应的AN引脚来禁用它们,并使用
之类的代码禁用它们 ANSEL.ANS0 = 0;
ANSEL.ANS1 = 0;
如果启用了看门狗功能,您可能还想添加
ClrWdt();
到主WHILE循环(这是Mathieu的一个很好的建议)
答案 2 :(得分:0)
return;
with:
while(1)
{
ClrWdt();
}
3.您可能需要添加驱动程序才能操作继电器。
根据数据表,添加以下初始化代码:
CCP1CON=0;
CCP2CON=0;
ADCON0=0;
CM1CON0=0;
CM2CON0=0;
配置位的PBADEN位也应为零。