• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (檀香子)




Re: 版主帮我看一下这个I2C程序哪里有问题?
#1
初級會員
初級會員


谢谢版主,我先看一下,不懂得再向版主请教啦!

發表於: 2008/5/8 16:12
頂部


版主帮我看一下这个I2C程序哪里有问题?
#2
初級會員
初級會員


最近弄I2C通讯,但是程序一到I2C的时候就死机,好几天了,不明白原因,请帮助帮忙!
我的主机使用的是PIC16F877A,从机使用的是PIC16F876A,都使用4M晶振。
主机I2C设定及驱动如下:
void IIC_Init(void)
{
TRISC3=1;
TRISC4=1;
SSPCON=0X38;
SSPCON2=0x00;
SSPSTAT=0X00;//80
SSPADD=0X09;

}

void IIC_Busy_Detect(void)
{
while (( SSPCON2 & 0x1F ) | (STAT_RW==1) ) {NOP();}// wait for idle and not writing
NOP();
NOP();
}


void IIC_Start(void)
{
IIC_Busy_Detect ();
SSPIF=0;
SEN=1;
while(SSPIF==0)NOP();
SSPIF=0;
}


void IIC_ReStart(void)
{
IIC_Busy_Detect();
SSPIF=0;
RSEN=1;
while(SSPIF==0)NOP();
SSPIF=0;
}

//---IIC ֹͣ---
void IIC_Stop(void) //IIC ֹͣ
{
SSPIF=0;
PEN=1;
while(SSPIF==0)NOP();
SSPIF=0;
}


char IIC_Ack_Detect(void)
{
while(SSPIF==0){ NOP();}
SSPIF=0;
NOP();
return !ACKSTAT;
}


char IIC_Write(char DATA)
{
IIC_Busy_Detect ();
SSPIF=0;
SSPBUF=DATA;
return IIC_Ack_Detect();
}


//---Send a frame---
void IIC_Frame_Send(uchar ADDR,uchar *PA)
{
uchar i;
GIE=OFF;
IIC_Start();

IIC_Write(ADDR);


for(i=0;i<9;i++)
{
IIC_Write(*PA);NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
PA++;
}
GIE=ON;
IIC_Stop();
}

从机设定如下:
void IIC_INIT(void)
{
TRISC3=1;
TRISC4=1;

ADDR=PORTB&0X1E;
ADDR>>=1;

SSPADD=ADDR;
SSPCON=0b00110110;//0X36;
SSPSTAT=0X00;
SSPCON2=0X00;
RCEN=1;
SSPIE=1;
PEIE=1;

}

刚开始研究I2C,恳请版主指教!

發表於: 2008/5/8 10:10
頂部


请问I2C总线
#3
初級會員
初級會員


最近用到了I2C总线,使用的是PIC16F877A的MSSP模块,在使用SLAVE模式时,检测总线上的启动信号,发现启动信号的标志STAT_S在整个数据发送过程中都为1,直到停止信号出现,不知道这个是不是正常。如果正常,如何做到只在总线启动时判断总线启动?

發表於: 2008/4/30 15:51
頂部


乘以一个系数就可以了
#4
初級會員
初級會員


将你的输入电压如5V,乘以你的采样值,除以1023,就可以得到你的采样电压值了。
VOUT=SAMP*VCC/1023

發表於: 2008/4/14 9:42
頂部


Re: CAN通信的问题
#5
初級會員
初級會員


可以说说是什么问题吗?

發表於: 2008/1/8 10:16
頂部


请教版主18F2480的程序移植到18F4585的问题
#6
初級會員
初級會員


请教版主,我将原来18F2480上用的程序移植到18F4585上,结果CAN通讯不通了,但是这个程序在18F2480上是可以通的,有什么玄机吗?谢谢!

發表於: 2008/1/8 10:14
頂部


Re: 关于18f can通讯问题
#7
初級會員
初級會員


我记得CAN如果使用NORMAL模式好像一定要至少有两个节点,一个节点发出数据后必须收到一个应答信号,如果收不到那么发送数据的那个节点会一直发送数据的。

發表於: 2007/12/11 16:00
頂部


Re: Timer的值怎麼讀取判斷?
#8
初級會員
初級會員


应该不能够这样使用吧,从语法上和逻辑上来看,这种写法没错,但是,定时器一旦设定好工作方式就在后台自动运行,TMR1L和TMR1H就自动的累加,而你的程序却是要每隔一段时间才会去判断一次他们的值,从理论上说,在某种情况下,程序永远也不会使这个条件满足。
你干脆再用一个定时中断来做好了

發表於: 2007/6/1 8:08
頂部


Re: PIC16F688如何使它的内部晶振工作?
#9
初級會員
初級會員


我有试过给config寄存器赋值,但是编译器说这是个没有定义的变量,呵呵

發表於: 2007/5/30 17:13
頂部


PIC16F688如何使它的内部晶振工作?
#10
初級會員
初級會員


使用PIC16F688芯片,由于IO口有限,所以将RA4,RA5作为数字IO使用,想采用其内部自带的振荡器,让其工作在4M ,可设置了相关的参数后,它还是不工作,以下是我设置的参数,不知道有没有设错,要让内部振荡器工作,该如何正确设置呢?
STATUS=0X00;
OPTION=0X82;
INTCON=0X00;
GIE=ON;
T0IE=ON;
T0IF=OFF;
PIE1=0x00;
PIR1=0X00;
OSCTUNE=0X00;
OSCCON=0X65;
TRISA=0X00;
TRISC=0X0E;
ADCON0=0X00;
ADCON1=0X20;
ANSEL=0X0C;
ADRESH=0X00;
ADRESL=0X00;

發表於: 2007/5/29 12:06
頂部



(1) 2 3 4 »



:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------