• 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: 請問--dsPIC30F Peripheral Module -- I2C 裡的練習一
#2
版主
版主


查看用戶資訊
建議先看一下 I2C 的規格後再來討論此問題。

Philips 的規格 : http://www.nxp.com/acrobat_download/literature/9398/39340011.pdf

發表於: 2008/9/9 15:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


請問--dsPIC30F Peripheral Module -- I2C 裡的練習一
#1
新會員
新會員


查看用戶資訊
dsPIC30F Peripheral Module -- I2C 裡的練習一

我用示波器量測 SDA & SCL 發現它固定傳出資料在此
請問它的值代表的意義或是哪一個變數之值。。謝謝
***********************
#include <p30F4011.h>
#include <I2C.h>
#include "I2CSubs.h"

#define REPORT_NACK { \
IFS0bits.MI2CIF = 0 ; \
StopI2C( ) ; \
while ( I2CCONbits.PEN ) ; \
return -1 ; \
}

unsigned char I2C_ACKPolling(unsigned char CMD)
{
unsigned char ACK_Result ;
IdleI2C( ) ;
StartI2C( ) ;
while ( I2CCONbits.SEN) ;
// Send START bit ! SEN will be clear automatically once START bits completed
IFS0bits.MI2CIF = 0 ;
MasterWriteI2C((CMD & 0xFE)) ;
while(! IFS0bits.MI2CIF ) ;
// MI2CIF will be clear after data transmitted completely !
if ( I2CSTATbits.ACKSTAT ) ACK_Result = 1 ;
else ACK_Result = 0 ;
IFS0bits.MI2CIF = 0 ;
StopI2C( ) ;
while ( I2CCONbits.PEN ) ;
return ACK_Result ;
}

void Init_I2C(void)
{
unsigned int config1 , config2 ;

config2 = 0xff;
config1 = I2C_ON & I2C_IDLE_STOP&I2C_CLK_REL
& I2C_IPMI_DIS & I2C_7BIT_ADD
& I2C_SLW_DIS & I2C_SM_DIS
& I2C_GCALL_DIS & I2C_STR_DIS
& I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS
& I2C_STOP_DIS & I2C_RESTART_DIS
& I2C_START_DIS ;

ConfigIntI2C(MI2C_INT_OFF & MI2C_INT_PRI_0 ) ;
OpenI2C(config1,config2) ;

// TRISFbits.TRISF2 = 1 ;
// TRISFbits.TRISF3 = 1 ;
}

int EEPROM_ByteWrite(unsigned char CMD , unsigned char Addr , unsigned char Data )
{
IdleI2C( ) ;
StartI2C( ) ;

while ( I2CCONbits.SEN) ; // Send START bit ! SEN will be clear automatically once START bits completed

IFS0bits.MI2CIF = 0 ;
MasterWriteI2C((CMD & 0xFE)) ;
while(! IFS0bits.MI2CIF ) ; // MI2CIF will be clear after data transmitted completely !

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK


IFS0bits.MI2CIF = 0 ;
MasterWriteI2C(Addr) ;
while(! IFS0bits.MI2CIF ) ;

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK


IFS0bits.MI2CIF = 0 ;
MasterWriteI2C(Data) ;
while(! IFS0bits.MI2CIF ) ;

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK


IFS0bits.MI2CIF = 0 ;
StopI2C( ) ;
while ( I2CCONbits.PEN ) ;

return 0 ;

}


int EEPROM_ByteRead(unsigned char CMD , unsigned char Addr )
{
unsigned char Temp_Buffer ;

unsigned ReadDelay ;

IdleI2C( ) ;
StartI2C( ) ;
while ( I2CCONbits.SEN) ;

IFS0bits.MI2CIF = 0 ;
MasterWriteI2C((CMD & 0xFE)) ; // Mask bit 0 -> Write command
while(! IFS0bits.MI2CIF ) ;

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK

IFS0bits.MI2CIF = 0 ;
MasterWriteI2C(Addr) ;
while(! IFS0bits.MI2CIF ) ;

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK

IFS0bits.MI2CIF = 0 ;
RestartI2C( ) ;
while ( I2CCONbits.RSEN) ;

IFS0bits.MI2CIF = 0 ;
MasterWriteI2C((CMD | 0x01)) ; // Set bit 0 for "Read" command
while(! IFS0bits.MI2CIF ) ;

if ( I2CSTATbits.ACKSTAT )
REPORT_NACK

IFS0bits.MI2CIF = 0 ;

Temp_Buffer = MasterReadI2C( ) ;
while(! IFS0bits.MI2CIF ) ;

IFS0bits.MI2CIF = 0 ;
NotAckI2C( ) ;
while(! IFS0bits.MI2CIF ) ;
IFS0bits.MI2CIF = 0 ;

StopI2C( ) ;
while ( I2CCONbits.PEN ) ;

return (int)Temp_Buffer ;

}

發表於: 2008/9/9 15:34
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... ]

教育訓練中心

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