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


Browsing this Thread:   1 Anonymous Users






Re: I2C問題
#2
新會員
新會員


查看用戶資訊
再請問

由master寫入資料slave時,slave接收到資料或是位址時的ack是由PIC硬體自動產生還是需要在slave設定才會產生ack呢?

發表於: 2007/2/27 15:44
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


I2C問題
#1
新會員
新會員


查看用戶資訊
我使用16f877A與876A做I2C通訊

877A為master,876A為slave

maste呼叫slave時,slave的中斷有反應,不過ack總是1,請問是哪邊出了問題

使用20MHZ震盪器
=========以下為CODE==================
MASTER

void interrupt intrpt(void)
{
if(TMR0IF==1) //1 ms
{
TMR0IF=0;
TMR0=217;
t_count++;
if(t_count%100==0)iic_flag=1;
if(t_count%500==0) //0.5sec
{
RD0=1;
}
if(t_count>=1000) //1 sec
{
RD0=0;
t_count=0;
}
}
}
//----------------------------------------------------------
void main(void)
{
unsigned char sum=0,i=0,*temp1;
PORTB=0x00;
TRISD=0x00;
TRISB=0x00;
Initial_timer0();
Initial_I2C();
PEIE=1; //周邊中斷致能位元
GIE=1; //全域中斷致能位元 on
while(1)
{
if(iic_flag)
{
int i=0;
iic_flag=0;
I2C_start();
for(i=0;i<=3;i++)
{
if(I2C_address(0x10,0)==0)
{
if(I2C_write(I2C_BUFFER[0]))break;
if(I2C_write(I2C_BUFFER[1]))break;
break;
}
}
I2C_stop();
iic_flag=0;
}
}
}
//----------------------------------------------------------
void Initial_I2C(void)
{
TRISC3=1;
TRISC4=1;
SSPSTAT=0x80;
SSPCON=0x38;
SSPCON2=0x00;
SSPADD=49; //100khz
SSPIE=0;
}
//----------------------------------------------------
bit I2C_write(unsigned char data)
{
SSPBUF=data;
while(STAT_BF||STAT_RW);
I2C_wait();
return ACKSTAT;
}
//----------------------------------------------------
bit I2C_address(unsigned char address,char io)
{
switch (io)
{
case 1:
address=(address&0xfe)+1;
break;
case 0:
address=address&0xfe;
break;
}
SSPBUF=address;
while(STAT_BF || STAT_RW);
I2C_wait();
return ACKSTAT;
}
//-------------------------------------------------------
void I2C_stop(void)
{
PEN=1;
I2C_wait();
}
//--------------------------------------------------------
void I2C_start(void)
{
SEN=1;
I2C_wait();
}
//-----------------------------------------------------
void I2C_wait(void)
{
while(!SSPIF);
SSPIF=0;
}

====================================
SLAVE
void interrupt intrpt(void)
{
if(SSPIF==1)
{
SSPIF=0;
iic_flag=1;
}
}
//-------------------------------------------------------------------------
void main(void)
{
TRISC0=0;
Initial_I2C();
PEIE=1; //周邊中斷致能位元
GIE=1; //全域中斷致能位元 on
while(1)
{
if(iic_flag)
{
unsigned char cmd=0;
iic_flag=0;
cmd=SSPSTAT&0x2d;
switch (cmd)
{
case 0x0c: //資料讀取
iic_count=0;
iic_dataR(iic_count);
iic_count++;
break;
case 0x2c:
iic_dataR(iic_count);
iic_count++;
break;
case 0x09: //資料寫入
iic_count=0;
break;
case 0x29:
iic_dataW(iic_count);
iic_count++;
break;
}

}

}
}
//---------------------------------------------------------------------------
void Initial_I2C(void)
{
TRISC3=1;
TRISC4=1;
SSPSTAT=0x80;
SSPCON=0x36;
SSPCON2=0x00;
SSPADD=0x20;
SSPIF=0;
SSPIE=1;
SSPEN=1;
}
//---------------------------------------------------------------------------
void iic_dataR(unsigned char data_count)
{
CKP=0;
SSPBUF=I2C_BUFFER[data_count];
while(!STAT_BF);
CKP=1;
}
//----------------------------------------------------------------------
void iic_dataW(unsigned char data_count)
{
CKP=1;
I2C_BUFFER[data_count]=SSPBUF;
}

發表於: 2007/2/26 0:15
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... ]

教育訓練中心

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