X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
Microchip MCU
[求助] 在线急求大神,关于PIC16F1823单片机SPI的问题!!!!
mowalking
2015-9-28 22:06
楼主
线急求大神,关于PIC16F1823 的SPI的问题,从机接收到命令后令I/O管脚RA5 变成高电平,但是又立马变成了低电平怎么回事?sum累加也是同样问题,但主机发送命令速度越快,清零的速度就越慢。从机代码如下:
#include
#include
#include
/*
*
*/
#include
__CONFIG(FOSC_INTOSC & WDTE_ON & PWRTE_ON & MCLRE_ON & CP_ON & CPD_ON & BOREN_ON & CLKOUTEN_OFF & IESO_ON & FCMEN_ON);
__CONFIG(WRT_OFF & PLLEN_OFF & STVREN_ON & BORV_LO & LVP_OFF);
#define nop() asm("nop")
unsigned char RC_DATA;
volatile unsigned char sum;
void init_fosc(void)
{
OSCCON = 0x78;//16MHz
}
void init_SPI(void)
{
TRISCbits.TRISC0=1; // SCK input
TRISCbits.TRISC1=1; // SDI input
TRISCbits.TRISC2=0; // SDO output
TRISCbits.TRISC3=1; // SS input
APFCONbits.SDOSEL = 0; // RC2 ??? SDO ??
APFCONbits.SSSEL = 0; // RC3 ??? SS ??
ANSELCbits.ANSC0 = 0; // ?? I/O
ANSELCbits.ANSC1 = 0; // ?? I/O
ANSELCbits.ANSC2 = 0; // ?? I/O
ANSELCbits.ANSC3 = 0; // ?? I/O
INTCONbits.PEIE = 1;
INTCONbits.GIE = 1;
PIE1bits.SSP1IE = 1; //enables the SPI Receive interrupt
SSP1STATbits.SMP = 0; //????????????????
SSP1STATbits.CKE = 1; // ???????????????
SSP1BUF = 0x00;
SSP1CON1 = 0x34; // SSP1EN=1 CKP=1 SSPM 0100
//SSP1CON3bits.BOEN = 0; // ??????? SSP1STAT ???? BF ??? 1 ?? SSP1CON1 ???? SSP1OV
// ??? 1 ??????????
}
void spi_send_byte(unsigned int byte)
{
SSP1BUF = byte;
while(BF==0); //??????
SSP1IF = 0;
}
void interrupt isr(void)
{
if(SSP1IE && SSP1IF)
{
RC_DATA = SSP1BUF;
SSP1IF= 0;
SSP1CON1bits.WCOL=0;
if( RC_DATA==0xA0) {
RA5= 1 ;
}
}
}
/*
*
*/
int main(int argc, char** argv) {
init_fosc();
init_SPI();
ANSELA=0; //?RA
TRISAbits.TRISA5=0;//??RA5???
RA5=0;
while(1)
{
nop();
}
}
点赞
回复评论 (2)
沙发
mowalking
PIC单片机SPI通信,主机发送一个命令使I/O管脚变成高电平,I/O管脚又自动变成低电平
点赞
2015-9-28 22:58
板凳
dingzy_2002
是WDT复位造成的,选项字节中有WDT打开设置,但程序中无清WDT命令.造成WDT溢出复位,复位后,RA5就是L电平.
点赞
2015-10-27 11:44
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
使用MSP430注意的问题
TMS320C6472 多核 DSP & EVM 工业及嵌入式应用
【Silicon Labs 开发套件评测】+PG22开发套件的硬件资源
分享一个IAR for MSP430 6.3的破解程序和方法
66AK2L06 SoC能够实现测试与测量设备的最小化吗?
关于单片机开发问题?
TTL CMOS
STC 系列单片机资料
STM32FSMC驱动彩屏.
[平头哥RVB2601创意应用开发] 1:开箱检测和环境搭建
提问+MCU开发方式
【请教AD603的典型电路】
可不可以帮我分析一下 嵌入式开发(软件)和软件测试工程师的发展前景
大家说说光电传感器在这次将赛中会扮演什么角色?
要换工作
汽车车门开关信号在CAN总线上传输的格式、数值是什么啊?
【新年新计划】 努力充电,努力改变人生。
模拟开关在音频中的应用(TI)
请教关于数字IC验证
AD9106 相关问题
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复