0
PIC 18F4520のOLEDと通信するためにI2Cビットを実行しようとしました。その 'clock stretching'がなくてもうまく動作しますが、 'clock stretching'を置くと動作しません。また、私は、ACKパルスの前後に 'クロックストレッチ'ブロックを置いて試してみました。どちらも動作していません。クロック伸張でI2Cビットが動作しない
void send_packet(){
/* Soft_I2C_Start(); //Here its working fine
Soft_I2C_Write(0x78);
Soft_I2C_Write(tx_packet[0]);
Soft_I2C_Write(tx_packet[1]);
Soft_I2C_Stop();*/
unsigned char i,temp=0x78; //Slave Address with write permission
ASDA=1; //Start Condition
ASCL=1;
delay_ms(1);
ASDA=0;
ASCL=0;
for(i=0;i<8;i++){
if(temp & 0x80){
ASDA=1;
}
else{
ASDA=0;
}
temp=temp<<1;
ASCL=1;
ASCL=0;
}
ASCL=1; //Acknowledgment Pulse
ASCL=0;
while(PORTC.RC4==0); //Clock Stretching
for(i=0;i<8;i++){
if(tx_packet[0] & 0x80){
ASDA=1;
}
else{
ASDA=0;
}
tx_packet[0]=tx_packet[0]<<1;
ASCL=1;
ASCL=0;
}
ASCL=1; //Acknowledgment Pulse
ASCL=0;
while(PORTC.RC4==0); //Clock Stretching
for(i=0;i<8;i++){
if(tx_packet[1] & 0x80){
ASDA=1;
}
else{
ASDA=0;
}
tx_packet[1]=tx_packet[1]<<1;
ASCL=1;
ASCL=0;
}
ASCL=1; //Acknowledgment Pulse
ASCL=0;
while(PORTC.RC4==0); //Clock Stretching
ASCL=1; //Stop Condition
ASDA=1;
}
ありがとうございます。 。 。私はそのエラーを修正しますが、まだ動作していません。 。 。編集したコード –
が更新されました。 。 。問題は、クロックストレッチラインです。 。私はそれとその作業を取り除いた。 。 。しかし、私はまだ疑問があります。時計の伸びには何が間違っていますか? –
私の質問も同様に更新されました –