@@ -101,7 +101,7 @@ int8_t I2Cdev_readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_
101
101
while (!IFS0bits .MI2CIF ); // Wait for 9th clock cycle
102
102
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
103
103
//while(I2CSTATbits.ACKSTAT);
104
- //delay_ms_I2C(10 );
104
+ //delay_us_I2C(100 );
105
105
/*Master send RA*/
106
106
/* Write Register Address */
107
107
MasterWriteI2C (regAddr );
@@ -114,36 +114,43 @@ int8_t I2Cdev_readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_
114
114
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
115
115
while (I2CSTATbits .ACKSTAT );
116
116
117
- //delay_ms_I2C(10);
117
+ //delay_us_I2C(100);
118
+
119
+ /*Master Pause*/
120
+ StopI2C ();
121
+ /* Wait till stop sequence is completed */
122
+ while (I2CCONbits .PEN );
123
+
118
124
/*Master Start*/
<
10000
code>119
- RestartI2C ();
125
+ StartI2C ();
120
126
/* Wait till Start sequence is completed */
121
127
while (I2CCONbits .SEN );
122
128
123
129
/*Master send AD+R*/
124
130
/* Write Slave Address (Read)*/
125
131
MasterWriteI2C (devAddr << 1 | 0x01 );
132
+ //while(!MasterWriteI2C(devAddr << 1 | 0x01));
126
133
/* Wait until address is transmitted */
127
134
while (I2CSTATbits .TBF ); // 8 clock cycles
128
135
129
136
/*Slave send Ack*/
130
137
while (!IFS0bits .MI2CIF ); // Wait for 9th clock cycle
131
138
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
132
139
while (I2CSTATbits .ACKSTAT );
133
- //delay_ms_I2C(10 );
140
+ //delay_us_I2C(100 );
134
141
135
142
/*Slave send DATA*/
136
143
//uint16_t flag = MastergetsI2C(length,data,I2C_DATA_WAIT);
137
144
138
145
/*Slave send NACK*/
146
+ //MastergetsI2C(length,data,100);
139
147
//NotAckI2C();
140
148
141
149
data [0 ] = MasterReadI2C ();
142
150
unsigned int i ;
143
151
for (i = 1 ; i < length ; i ++ ){
144
152
AckI2C ();
145
153
while (I2CCONbits .ACKEN == 1 );
146
- //delay_ms_I2C(10);
147
154
data [i ] = MasterReadI2C ();
148
155
}
149
156
NotAckI2C ();
@@ -153,8 +160,8 @@ int8_t I2Cdev_readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_
153
160
/* Wait till stop sequence is completed */
154
161
while (I2CCONbits .PEN );
155
162
//CloseI2C();
156
- IdleI2C ();
157
- return true ;
163
+ // IdleI2C();
164
+ return length ;
158
165
}
159
166
160
167
/** Read single byte from an 8-bit device register.
@@ -290,7 +297,6 @@ bool I2Cdev_writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t
290
297
while (I2CCONbits .SEN );
291
298
/* Clear interrupt flag */
292
299
IFS0bits .MI2CIF = 0 ;
293
- //delay_ms_I2C(10);
294
300
295
301
/*Master send AD+W*/
296
302
/* Write Slave address (Write)*/
@@ -302,7 +308,7 @@ bool I2Cdev_writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t
302
308
while (!IFS0bits .MI2CIF ); // Wait for 9th clock cycle
303
309
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
304
310
while (I2CSTATbits .ACKSTAT );
305
- //delay_ms_I2C(10 );
311
+ //delay_us_I2C(100 );
306
312
307
313
/*Master send RA*/
308
314
/* Write Slave address (Write)*/
@@ -313,20 +319,31 @@ bool I2Cdev_writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t
313
319
/*Slave send ACK*/
314
320
while (!IFS0bits .MI2CIF ); // Wait for 9th clock cycle
315
321
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
316
- //delay_ms_I2C(10 );
322
+ //delay_us_I2C(100 );
317
323
while (I2CSTATbits .ACKSTAT );
318
324
319
325
/*Master send data*/
320
326
/* Transmit string of data */
321
327
MasterputsI2C (data );
328
+ //uint8_t i;
329
+ //for (i = 0 ; i < length ; i++){
330
+ // MasterWriteI2C(data[i]);
331
+ /* Wait till address is transmitted */
332
+ // while(I2CSTATbits.TBF); // 8 clock cycles
333
+
334
+ /*Slave send ACK*/
335
+ // while(!IFS0bits.MI2CIF); // Wait for 9th clock cycle
336
+ // IFS0bits.MI2CIF = 0; // Clear interrupt flag
337
+ //delay_us_I2C(100);
338
+ //}
322
339
while (!IFS0bits .MI2CIF ); // Wait for 9th clock cycle
323
340
IFS0bits .MI2CIF = 0 ; // Clear interrupt flag
324
-
341
+
325
342
StopI2C ();
326
343
/* Wait till stop sequence is completed */
327
344
while (I2CCONbits .PEN );
328
345
//CloseI2C();
329
- IdleI2C ();
346
+ // IdleI2C();
330
347
return true;
331
348
}
332
349
@@ -419,7 +436,7 @@ bool I2Cdev_writeBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_
419
436
data &= mask ; // zero all non-important bits in data
420
437
b &= ~(mask ); // zero all important bits in existing byte
421
438
b |= data ; // combine data with existing byte
422
- delay_ms_I2C (10 );
439
+ // delay_ms_I2C(10);
423
440
return I2Cdev_writeByte (devAddr , regAddr , b );
424
441
} else {
425
442
return false;
0 commit comments