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


Browsing this Thread:   1 Anonymous Users






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


查看用戶資訊
谢谢版主,我先看一下,不懂得再向版主请教啦!

發表於: 2008/5/8 16:12
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 版主帮我看一下这个I2C程序哪里有问题?
#2
版主
版主


查看用戶資訊
I2C 在 PIC 裡是屬於 Step Machine 的動作,一步接一步要順序作完,如果中間有動作跳過或沒做正確,這時就有可能會導致Step machine錯誤造成死機,必須重新Reset。所以做 I2C 時要一步接一步小心的做,最好是有 Scope 可以監視其 Timming。
這裡有幾個以前寫的 I2C code example 可以參考看看:
http://www.microchip.com.tw/example.htm
第12項,12.1 項。

http://www.microchip.com.tw/modules/wfdownloads/viewcat.php?cid=12
I2C Master/Slave 範例程式 - 使用 PIC18F4520

發表於: 2008/5/8 14:21
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


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


查看用戶資訊
最近弄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
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

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... ]

教育訓練中心

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